Quick reference for software engineering — SDLC models, Scrum roles, design patterns, the test pyramid, git workflows, and CI/CD stages.
SDLCAgileTestingCI/CD
SDLC Models
| Model |
Style |
Best for |
| Waterfall | Sequential, once | Fixed scope, regulated |
| Iterative | Repeated cycles | Evolving requirements |
| Agile / Scrum | Short sprints | Most product teams |
| Kanban | Continuous flow + WIP limits | Support, ops, steady flow |
Stages: Requirements → Design → Implement → Test → Deploy → Maintain.
Scrum
| Roles | Ceremonies | Artifacts |
| Product Owner | Sprint planning | Product backlog |
| Scrum Master | Daily standup | Sprint backlog |
| Dev Team | Review + retrospective | Increment |
Sprint = 1-2 weeks, ends with a shippable increment.
Definition of Done: reviewed + tests pass + docs + deployed to staging.
Requirements
Story: As a [role], I want [capability], so that [benefit].
Criteria: Given [context], When [action], Then [outcome].
INVEST: Independent, Negotiable, Valuable, Estimable, Small, Testable
Functional = what it does; Non-functional = perf, security, uptime, UX
Design
SOLID
| Letter | Principle |
| S | Single Responsibility — one reason to change |
| O | Open/Closed — extend, don't modify |
| L | Liskov — subtypes are substitutable |
| I | Interface Segregation — small interfaces |
| D | Dependency Inversion — depend on abstractions |
Patterns (GoF)
| Type | Examples |
| Creational | Factory, Builder, Singleton |
| Structural | Adapter, Decorator, Facade |
| Behavioral | Observer, Strategy, Command |
DRY — don't repeat yourself
KISS — keep it simple
YAGNI — don't build what you don't need yet
Testing
Test Pyramid
| Level | Scope | Count |
| Unit | one function/class | many, fast |
| Integration | modules + DB/API | some |
| E2E | whole system | few, slow |
TDD: Red (failing test) -> Green (make it pass) -> Refactor
Test structure (AAA): Arrange -> Act -> Assert
Test edges + errors, not just the happy path. Coverage is a floor, not a goal.
Git & CI/CD
Git Workflow
git checkout -b feature/x # branch off main
git commit -m "..." # small, focused commits
git push -u origin feature/x
# open PR -> review -> CI green -> merge
git rebase main # replay onto latest main
Trunk-based: short branches, merge often, feature flags hide WIP.
Pipeline & Deploys
| Term | Meaning |
| CI | auto build + test every push |
| CD (delivery) | always releasable |
| CD (deployment) | auto-ship every passing change |
| Blue-green | swap two identical envs |
| Canary | release to small %, watch, roll out |
stages: build -> test -> lint/scan -> deploy(staging) -> promote(prod)
Estimation & Review
Story points: relative size (Fibonacci 1,2,3,5,8,13), not hours.
Planning poker: estimate independently, then discuss gaps.
Velocity = avg points/sprint -> forecast; never a performance metric.
Split anything > ~8 points.
| Author | Reviewer |
| Small PRs, clear why, self-review | Correctness, edges, tests, security |
| Respond promptly | Ask, don't command; flag blocking vs nit |
Technical debt: track it, pay it down before it compounds.