30 min read Core CS & Systems Part 1 · Lesson 2 (2 / 15)
Part 1 — Mindset & SDLC

Lesson 10.2 — The Software Development Lifecycle (SDLC)

From Idea to Production: How Professional Software is Planned, Built, Verified, and Operated

What We Will Master in This Lesson

By the end of this lesson, you will clearly understand with practical intuition:

  • Why jumping straight into coding causes catastrophic project failure
  • The 8 core, sequential-yet-iterative phases of the modern SDLC
  • The critical divide: Functional vs. Non-Functional Requirements
  • Blueprint & System Decomposition: Designing an e-commerce platform
  • The Testing Pyramid: Unit, Integration, and End-to-End verification
  • Post-launch reality: Operations, monitoring, and evolutionary maintenance
  • Waterfall vs. Agile: Philosophical differences, sprint cadence, and real-world trade-offs

1 The Trap of Immediate Coding & Why We Need SDLC

Imagine an entrepreneur approaches you with a business proposal:

“I want to build an online store where customers can browse products, place orders, and pay online.”

An inexperienced programmer might immediately fire up their code editor and start creating functions. On a weekend hobby project, that might feel fast. But in any real-world commercial software, writing code before answering core architectural questions leads to immediate chaos and expensive rewrites.

Questions You Must Answer Before Writing Code:

1. What are we building? (Scope) What exact features are required? How do refunds, coupon limits, and out-of-stock items behave?
2. Who are we building for? (Audience) Who are the end users? Mobile shoppers on 3G cellular connections or desktop administrative power users?
3. How will it be architected? (Structure) What does the relational database schema look like? How will client and server exchange data?
4. How will we verify correctness? (Testing) How do we prevent double-charges if a user rapidly taps the payment button three times?
5. How does it reach users? (Deployment) How does code move from a laptop to cloud infrastructure with zero downtime?
6. How will it survive over years? (Maintenance) When zero-day security vulnerabilities emerge or database query times degrade, how will we patch it?

The disciplined, repeatable methodology that answers these questions and guides software from inception to operations is the Software Development Life Cycle (SDLC).

"SDLC is the structured, end-to-end framework governing how software is conceived, specified, designed, coded, tested, deployed, and sustained over its entire operational lifetime."

2 The 8 Core Phases of the Modern SDLC

A professional software engineering project transitions through eight interconnected phases:

1
Idea / Problem Definition Phase 1

Every software system begins with a human or business need. For example: A merchant struggling to manage orders over WhatsApp messages leads to the vision for an automated digital ordering platform.

2
Requirements Engineering Phase 2

Defining precisely what the system must do (Functional) and the operational standards it must satisfy (Non-Functional), codified into user stories and acceptance criteria.

3
Planning & Feasibility Analysis Phase 3

Estimating engineering time, budgeting, analyzing technical risks, identifying third-party API dependencies (Stripe, Twilio), and selecting the technology stack.

4
System Design & Architecture Phase 4

Drafting the technical blueprints: component boundaries, database schemas, API contracts, caching layers, and security topologies before touching code.

5
Implementation / Coding Phase 5

Translating architectural designs into clean, maintainable source code. Engineers coordinate across Git branches, applying design patterns and code standards.

6
Testing & Quality Assurance Phase 6

Subjecting code to rigorous verification: testing happy paths, network dropouts, invalid payloads, race conditions, and load stress via automated test suites.

7
Deployment & Release Phase 7

Packaging application artifacts, provisioning cloud infrastructure, executing database migrations, and serving traffic to live end-users with zero downtime.

8
Maintenance & Evolution Phase 8

Telemetry monitoring, addressing production regressions, database indexing, updating third-party libraries, and cycling into new feature requests.

3 Functional vs. Non-Functional Requirements

Requirements specify the system's contract with users and the business. Failing to distinguish between Functional and Non-Functional specifications is the leading cause of performant systems that fail business goals, or functional systems that collapse under load.

Functional Requirements (What the system does)

Explicit functional capabilities, user interactions, and business rules executed by the software:

  • "Users can sign up with email and password."
  • "Items can be added to and removed from the cart."
  • "Successful checkout generates a PDF invoice."
  • "Admins can update product stock and pricing."
Non-Functional Requirements (How well it performs)

System qualities, behavioral limits, performance benchmarks, and security constraints:

  • "Checkout page must respond in under 2 seconds at the 99th percentile."
  • "Payment details and tokens must be encrypted at rest and in transit."
  • "System must sustain 10,000 concurrent user sessions."
  • "Service availability target: 99.9% uptime."
💡 The Golden Rule: Functional defines What the system does, while Non-Functional defines How well the system does it. Both are indispensable for software success.

4 Planning & The Architectural Blueprint

Just as an architect drafts load-bearing blueprints before excavating foundations, software engineers decompose large problem domains into isolated, testable modules.

How do we decompose our e-commerce platform into clean domain boundaries?

E-Commerce System Decomposition Blueprint
🖥️ Frontend (UI)

React/Next.js client handling catalog presentation, client-side caching, and cart state.

⚙️ Backend API (Logic)

REST or GraphQL API enforcing business rules, schema validation, and authorization gates.

🗄️ Database (Persistence)

Relational PostgreSQL database guaranteeing ACID transactions for orders and customer profiles.

💳 Payment Service

Isolated payment gateway adapter handling webhooks, idempotency keys, and payment retries.

☁️ Object Storage

Cloud object storage (AWS S3) providing global CDN caching for high-res product photos.

🔔 Notification Worker

Asynchronous message queues (Redis/RabbitMQ) processing order confirmation emails and SMS.

5 Testing: How Do We Know Software Works?

Software is never complete simply because code compiles. On the happy path:

Add to Cart → Checkout → Payment → Order Created (Everything works!)

Real-world operations, however, are dominated by edge cases and failure modes:

  • • What if the user loses Wi-Fi right as the payment charge succeeds?
  • • What if an anxious customer double-clicks "Submit Order" in rapid succession?
  • • What if another user buys the very last item in inventory seconds before checkout?
  • • What if the database crashes halfway through writing the order record?

The Three Pillars of the Testing Pyramid

1 Unit Testing Fastest & Highest Volume

Verifying isolated functions and pure logic. For example: confirming that `calculateTax(cartTotal)` yields correct results across various tax jurisdictions without touching external databases.

2 Integration Testing Component Communication

Verifying that collaborating modules interact properly. For example: ensuring the Order Service → Payment Gateway Adapter → Database Order Record flow persists data cleanly.

3 End-to-End (E2E) Testing Complete User Journey

Automating an entire headless browser session: logging in, searching a product, adding to cart, entering payment credentials, and asserting receipt generation.

6 Deployment & Maintenance: Work Begins at Launch

A widespread amateur fallacy is assuming: "The code is deployed, the project is finished!"

In reality, software maintenance represents up to 70–80% of total lifecycle cost and engineering effort:

Post-Launch Operational Realities:

1. Unforeseen Regressions: Real traffic surfaces bizarre browser quirks, corrupted cookies, and rare concurrency conditions.
2. Query Performance Degradation: As tables expand to millions of rows, queries that took 5ms during testing start causing 5-second timeouts.
3. Security Vulnerabilities: New zero-day CVEs in open-source dependencies require immediate emergency patching and redeployment.
4. Business Evolution: Market competition demands installment payment plans, multi-currency support, or new recommendation algorithms.

Thus, software operates in an ongoing cadence: Monitor → Fix → Improve → Update.

7 Waterfall vs. Agile: Two Contrasting Approaches

The SDLC does not dictate a rigid schedule; teams structure execution via different process methodologies. The two most prominent paradigms are Waterfall and Agile.

Waterfall Model (Sequential Phases)

Each phase must be 100% completed and signed off before the next commences:

Requirements → Design → Coding → Testing → Deployment
  • • Best for: Mission-critical systems where requirements are completely fixed and verifiable upfront (aerospace flight controls, medical hardware).
  • • Drawback: Late customer feedback; if assumptions were flawed in month one, you only discover it after shipping in month nine.
Agile Approach (Iterative Cadence)

Breaking work into small, releasable increments (typically 2-week Sprints):

Small Plan → Build → Test → Release → User Feedback → Next Sprint
  • • Best for: Modern web, mobile apps, SaaS, and startups operating in rapidly evolving competitive markets.
  • • Advantage: Working software delivered every two weeks; course corrections can be made immediately with minimal wasted effort.

8 🎮 Interactive Simulator: SDLC Phase Explorer

Explore what happens in each phase of building an e-commerce platform—and inspect the catastrophic consequences if an amateur team skips that phase:

Select an SDLC Phase:

9 💡 Concept Check (Interactive Quiz)

Test your mastery of the SDLC and requirement principles before proceeding:

1. Which of the following is an example of a Non-Functional Requirement?

2. What forms the foundation (highest volume, fastest execution) of the Testing Pyramid?

3. What is the defining advantage of the Agile methodology over traditional Waterfall?

10 🧠 Key Takeaways

  • SDLC is a continuous cycle: Requirements and architecture precede code; operations and maintenance continue long after launch.
  • Functional vs. Non-Functional parity: What a system does is meaningless if latency, security, or uptime fail user expectations.
  • Testing is non-negotiable: Unit, Integration, and E2E suites protect against real-world chaos (dropouts, race conditions, concurrency).
  • Embrace change through iteration: Modern software engineering relies on modular blueprints and iterative Agile cycles to survive change.
Next Lesson Preview

Lesson 10.3 — Requirements Engineering: What Are We Actually Building?

The most expensive software bugs occur before a single line of code is written—in ambiguous requirements! We explore Product Requirement Documents (PRDs), user stories, acceptance criteria, and constraint modeling.

Start Lesson 10.3