Software Engineering Flashcards

Grade 12 · Technology · Flashcards

Essential vocabulary and concepts for senior-level software engineering review, covering SDLC, design, testing, and teamwork.

Flashcards

SDLC
Software Development Life Cycle — the end-to-end process of planning, building, testing, and maintaining a software system.
Waterfall
Sequential SDLC model: requirements → design → implementation → testing → deployment. Inflexible to mid-project requirement changes.
Agile
Iterative development methodology delivering working software in short sprints; embraces changing requirements and continuous feedback.
Scrum
An Agile framework with roles (Product Owner, Scrum Master, Dev Team), artifacts (backlog, sprint backlog), and ceremonies (standup, review, retro).
CI/CD
Continuous Integration automates build+test on commit; Continuous Delivery/Deployment extends this to automated releases to staging or production.
SOLID
Five OOP design principles: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
TDD
Test-Driven Development: write a failing test → write minimal code to pass → refactor. Produces high coverage and clarifies requirements.
Design Pattern
A named, reusable solution to a recurring design problem. GoF patterns include Singleton, Factory, Observer, Strategy, and Decorator.
Refactoring
Improving code structure, readability, or performance without changing external behavior; essential for managing technical debt.
Technical Debt
Accumulated cost of quick fixes and poor design decisions; grows over time if not paid down with deliberate refactoring.
Code Smell
A symptom in source code that may indicate a deeper design problem; examples include long methods, duplicated code, and feature envy.
Regression Test
A test re-run after changes to verify existing functionality still works correctly; safeguards against unintended side effects.
Microservices
Architecture splitting an application into independently deployable services communicating via APIs; improves scalability and team autonomy.

Get a personalized course on Software Engineering built around your child.