Software Engineering is the systematic application of engineering principles to software development, encompassing the design, development, testing, deployment, and maintenance of software systems. It bridges computer science theory with practical development methodologies, enabling teams to build scalable, maintainable, and reliable systems. Unlike ad-hoc programming, software engineering emphasizes structured processes, quality assurance, and collaborative workflows that ensure long-term project success. The discipline has evolved from waterfall models to agile practices and now integrates AI-assisted development, continuous delivery pipelines, cloud-native architectures, and platform engineering — yet core principles like modularity, testing, and clean code remain foundational to producing software that meets user needs and withstands change.
What This Cheat Sheet Covers
This topic spans 29 focused tables and 265 indexed concepts, 217 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: Software Development Methodologies
How a team chooses to plan, build, and ship work shapes everything downstream. These methodologies range from the rigid, sequential Waterfall to the iterative Agile family — Scrum, Kanban, XP — and the enterprise scaling frameworks (SAFe, the Spotify Model) that coordinate many teams at once. Knowing which one fits your project's stability and size is half the battle.
| Methodology | Example | Description | |
|---|---|---|---|
Sprint planning → Daily standups → Retrospectives | Iterative approach focusing on incremental delivery, continuous feedback, and adapting to changing requirements through short development cycles. | ||
Product backlog → 2-week sprint → Sprint review | Framework within Agile using defined roles (Scrum Master, Product Owner, Team) and time-boxed sprints to deliver working increments. | ||
Board with columns: To Do → In Progress → Done | Visual workflow management emphasizing continuous flow and limiting work-in-progress (WIP) to optimize throughput. | ||
CI/CD pipeline → Infrastructure as Code → Monitoring | Cultural and technical practice unifying development and operations to enable faster, more reliable software delivery through automation. | ||
Pair programming + TDD + CI + small releases | Agile methodology emphasizing technical practices like pair programming, TDD, continuous integration, and frequent small releases. | ||
PI Planning → Agile Release Train → System Demo | • Enterprise-scale Agile framework synchronizing multiple teams • organizes work into Agile Release Trains (ARTs) delivering value every Program Increment. | ||
Squads (teams) → Tribes → Chapters → Guilds | • People-driven scaling approach organizing autonomous squads into tribes • emphasizes team culture and autonomy over rigid Agile process. | ||
Requirements → Design → Implementation → Testing → Deployment | • Sequential phases where each stage completes before the next begins • best for projects with well-defined, stable requirements. | ||
Eliminate waste → Amplify learning → Decide late | Focuses on maximizing value by eliminating non-essential activities and delivering only what customers need when they need it. | ||
Domain model → Feature list → Design/build by feature | • Model-driven approach organizing work around features • emphasizes domain object modeling and iterative feature delivery. |