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.