Comprehensive Study Guide: SDLC Concepts, Phases, and Models
Software development lifecycle (SDLC) concepts, phases, and models
Comprehensive Study Guide: SDLC Concepts, Phases, and Models
This guide covers the fundamental concepts of the Software Development Lifecycle (SDLC), its various phases, and the models used to implement it within the context of AWS DevOps automation.
Learning Objectives
By the end of this guide, you should be able to:
- Define the Software Development Lifecycle (SDLC) and its importance in software engineering.
- Identify and explain the six core phases of the SDLC.
- Compare traditional (Waterfall) vs. modern (Agile/DevOps) development models.
- Differentiate between various testing types (Unit, Integration, Acceptance).
- Evaluate deployment strategies like Blue/Green and Canary within an SDLC framework.
Key Terms & Glossary
- SDLC (Software Development Lifecycle): A structured process used by the software industry to design, develop, and test high-quality software.
- CI/CD (Continuous Integration/Continuous Delivery): The automation of building, testing, and deploying code changes to various environments.
- Artifact: A deployable file or package (e.g., a Docker image or a .zip file) produced during the build phase.
- Immutable Infrastructure: An infrastructure paradigm where servers are never modified after they are deployed; updates are made by replacing the entire server with a new one.
- Shift Left: The practice of performing testing, security, and performance evaluation earlier in the SDLC process.
The "Big Idea"
[!IMPORTANT] The SDLC is the fundamental blueprint for building software. In a DevOps context, the goal is to transform the traditional, slow-moving SDLC phases into a continuous, automated loop. By automating these phases using AWS services (like CodePipeline), organizations reduce the "lead time to change," allowing for faster delivery and higher reliability.
Formula / Concept Box
| Phase | Core AWS Service Correlation | Primary Output |
|---|---|---|
| Source | AWS CodeCommit / GitHub | Source Code |
| Build | AWS CodeBuild | Compiled Code / Artifacts |
| Test | CodeBuild / Third-party tools | Test Reports / Security Scans |
| Deploy | AWS CodeDeploy | Running Application |
| Monitor | Amazon CloudWatch / AWS X-Ray | Metrics and Logs |
Hierarchical Outline
- I. SDLC Core Phases
- Planning/Analysis: Defining requirements and scope.
- Design: Creating architecture and system specifications.
- Implementation (Coding): Developers write code and commit to repositories.
- Testing: Validating the code against requirements (Unit Integration UAT).
- Deployment: Releasing the software to production environments.
- Maintenance: Monitoring performance and fixing bugs.
- II. SDLC Models
- Waterfall: Linear, sequential phases; difficult to change once a phase is complete.
- Agile: Iterative development; focuses on small, frequent releases and customer feedback.
- DevOps: Merges development and operations; emphasizes automation and the "CAMS" (Culture, Automation, Measurement, Sharing) model.
Visual Anchors
The SDLC Cycle
CI/CD Pipeline Workflow
Definition-Example Pairs
- Unit Testing Testing the smallest piece of code (like a single function) in isolation.
- Example: Checking if an
add(a, b)function correctly returns5when passed2and3.
- Example: Checking if an
- Integration Testing Testing how multiple modules or services work together.
- Example: Ensuring a Lambda function can successfully write data to a DynamoDB table.
- Acceptance Testing (UAT) Final testing phase to ensure the system meets business requirements.
- Example: A product owner logs into the staging site to verify the new login button works as expected.
Worked Examples
Problem: Selecting a Deployment Strategy
Scenario: A company needs to release a high-risk update to their web application. They cannot afford any downtime, and they want the ability to roll back instantly if the new version fails a health check.
Step-by-Step Breakdown:
- Requirement Analysis: Zero downtime + Instant Rollback.
- Evaluate Options:
- All-at-once: Causes downtime. (Discarded)
- In-place: Can cause downtime and is slow to roll back. (Discarded)
- Blue/Green: Shifts traffic from an old environment (Blue) to a new one (Green). Meets all requirements.
- Implementation: Use AWS CodeDeploy with a Blue/Green configuration.
- Verification: Set up a CloudWatch Alarm on 5xx errors. If the alarm triggers during the Green deployment, CodeDeploy automatically rolls traffic back to Blue.
Checkpoint Questions
- What is the primary difference between a Linear (Waterfall) and Iterative (Agile) SDLC model?
- At which stage of the CI/CD pipeline should Security Scans (SAST/DAST) ideally be integrated?
- Why is Immutable Infrastructure preferred in modern SDLC deployment phases?
- Identify two AWS services used to manage Build Secrets during the implementation phase.
▶Click to see answers
- Waterfall is sequential and rigid; Agile is iterative, allowing for frequent changes and feedback.
- During the Build or Test phases (Shift Left approach).
- It ensures consistency across environments and eliminates "configuration drift."
- AWS Secrets Manager and AWS Systems Manager Parameter Store.
Muddy Points & Cross-Refs
- Continuous Delivery vs. Continuous Deployment: In Delivery, the deployment to production requires manual approval. In Deployment, every change that passes the pipeline is automatically pushed to production.
- CodeBuild vs. CodeDeploy: Remember that CodeBuild creates the artifact (the pizza), while CodeDeploy delivers it to the customer's house.
- Deep Dive: For more on multi-account strategies mentioned in the exam guide, see the "AWS Control Tower" and "AWS Organizations" documentation.
Comparison Tables
Deployment Strategies Comparison
| Feature | Blue/Green | Canary | Linear |
|---|---|---|---|
| Traffic Shift | All at once (to new fleet) | Incremental (e.g., 10% then 100%) | Gradual (e.g., 10% every 10 min) |
| Risk Mitigation | High (Instant rollback) | Highest (Small blast radius) | Moderate |
| Cost | High (2x resources during shift) | Low to Moderate | Moderate |
| Best For | Major version updates | Testing new features on live users | Stable, predictable updates |