Explore tens of thousands of sets crafted by our community.
Software Engineering Principles
20
Flashcards
0/20
Abstraction
Simplifying complex systems by modeling them at a more general level, omitting details.
YAGNI (You Aren't Gonna Need It)
A principle of extreme programming that states to not add functionality until deemed necessary.
Encapsulation
Bundling data with the methods that operate on it, while keeping both safe from outside interference
Scalability
The capability of a system to handle a growing amount of work or its potential to accommodate growth.
Coupling
A measure of how interdependent software modules are.
Cohesion
The degree to which elements of a module belong together.
Concurrency
Property of systems that allow for multiple computations to happen simultaneously.
Refactoring
The process of restructuring existing code without changing its external behavior.
Waterfall Model
A linear sequential flow in which progress is seen as flowing steadily downwards through several phases.
SOLID Principles
A group of five principles for object-oriented programming and design: Single-responsibility, Open-closed, Liskov substitution, Interface segregation, and Dependency inversion.
Design Patterns
Typical solutions to common problems in software design.
DevOps
A set of practices that combines software development (Dev) and IT operations (Ops).
Continuous Integration (CI)
A software development practice where developers regularly integrate their code changes into a central repository.
Binary Search Algorithm
A fast search algorithm with complexity of O(log n) that repeatedly divides the range of searched elements in half.
DRY (Don't Repeat Yourself)
A principle aimed at reducing the repetition of software patterns.
KISS (Keep It Simple, Stupid)
Design principle that states most systems work best if they are kept simple rather than made complex.
Modularity
Dividing a program into distinct features with as little overlap as possible.
Agile Methodology
A group of modern software development methodologies based on iterative development.
Separation of Concerns
Design principle for separating a computer program into distinct sections.
Test-Driven Development (TDD)
A software development process based on the repetition of a very short development cycle.
© Hypatia.Tech. 2024 All rights reserved.