Software Engineering Flashcards

0.0(0)
studied byStudied by 1 person
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/263

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

264 Terms

1
New cards

Coupling

A relationship between two pieces of code where changes to one require changes to the other, making both harder to understand.

2
New cards

Connascence

A concept in software design describing the degree to which parts of a program must change together; strong connascence indicates a poor design.

3
New cards

Grepable

Code that is easily searchable and can be quickly located or referenced in a codebase.

4
New cards

Self-documenting code

Code that is clear and understandable without needing external documentation due to its naming conventions and structure.

5
New cards

Promise (in JavaScript)

An object representing the eventual completion (or failure) of an asynchronous operation and its resulting value.

6
New cards

Asynchronous

A programming concept where operations can occur independently of the main program flow, allowing for non-blocking execution.

7
New cards

Regression test

A test that ensures that previously developed and tested software still performs after a change is made.

8
New cards

Linter

A static code analysis tool used to flag programming errors, bugs, stylistic errors, and suspicious constructs.

9
New cards

Test-driven development (TDD)

A software development approach where tests are written before code, guiding the design and implementation.

10
New cards

Hermetic tests

Tests that are completely isolated from the environment and ensure that their behavior does not depend on external factors.

11
New cards

Debugging

The process of identifying and resolving defects or issues within a software application.

12
New cards

Delta debugging

An automated debugging approach that helps isolate the changes causing a bug by systematically dividing the input set.

13
New cards

Observer effect

A phenomenon where the act of observing or measuring a system changes that system in some way.

14
New cards

Fuzzing

An automated testing technique that involves providing random or semi-random inputs to software to discover vulnerabilities.

15
New cards

Continuous integration (CI)

A software development practice where developers frequently integrate code into a shared repository, followed by automated builds and tests.

16
New cards

Branch coverage

A test suite quality metric that ensures all branches (true and false outcomes) of control structures in code are exercised.

17
New cards

Code review

The process where developers review each other's code to identify issues and improve quality before merging changes.

18
New cards

Specification

A document that outlines how a system should behave without detailing how the implementation will achieve it.

19
New cards

Build system

A tool that automates the processes of compiling source code, running tests, and creating deployable software artifacts.

20
New cards

Modularity

A design principle where a system is composed of separate, independent, and interchangeable components.

21
New cards

Abstraction

The process of hiding complex implementation details and showing only essential features of an object.

22
New cards

Information Hiding

The principle of restricting access to internal components of a class or module to reduce coupling.

23
New cards

Code Comments

Explanations embedded within the source code to provide clarity and context for developers.

24
New cards

Call Stack

A data structure that stores information about the active subroutines of a computer program, indicating the point to which the program should return.

25
New cards

Unit test

A software testing method where individual units or components of software are tested in isolation.

26
New cards

Integration test

A type of software testing where individual software modules are combined and tested as a group.

27
New cards

End-to-End Test

A testing methodology to test an application flow from start to finish, simulating real user scenarios.

28
New cards

Test Stub

A dummy program module or object that simulates the behavior of an actual component that the module being tested depends on.

29
New cards

Git

A widely used distributed version control system for tracking changes in source code during software development.

30
New cards

Version Control System (VCS)

A system that records changes to a file or set of files over time so that you can recall specific versions later.

31
New cards

Branching (Version Control)

The practice of creating an independent line of development to work on new features or fixes without affecting the main codebase.

32
New cards

Agile Development

An iterative and incremental approach to software development that focuses on collaboration, customer feedback, and adapting to change.

33
New cards

DevOps

A set of practices that combines software development (Dev) and IT operations (Ops) to shorten the development lifecycle and provide continuous delivery.

34
New cards

Deployment

The process of releasing software, including all the activities that make a software system available for use.

35
New cards

Pair Programming

An agile software development technique where two programmers work together at one workstation on the same code.

36
New cards

Merge Conflict

A situation that occurs when two or more developers make conflicting changes to the same section of a file, requiring manual resolution.

37
New cards

User Story

A short, simple description of a feature told from the perspective of the person who desires the new capability, typically a user or customer.

38
New cards

Functional Requirements

Statements that describe what the software system should do, outlining its specific functions and behaviors.

39
New cards

Non-Functional Requirements

Statements that describe how the software system should be, focusing on criteria like performance, security, and usability rather than specific functions.

40
New cards

Pull Request (PR)

A request made by a developer to merge changes from one branch into another, often used for code review and discussion.

41
New cards

Syntax

The set of rules that define the combinations of symbols that are considered to be correctly structured statements or expressions in a language.

42
New cards

Semantics (Programming)

The meaning of the statements and expressions in a programming language, determining what a program will do when executed.

43
New cards

Runtime

The period during which a program is executing on a computer system, as opposed to compile-time or design-time.

44
New cards

Compiler

A software program that translates source code written in one programming language (the source language) into machine code or another programming language (the target language).

45
New cards

Transpiler

A type of compiler that translates source code from one high-level programming language into another high-level programming language.

46
New cards

Static Code Analysis

The examination of computer software without executing the program, often performed by tools like linters to find potential errors or stylistic issues.

47
New cards

Code Smells

Any symptom in the source code of a program that possibly indicates a deeper problem, suggesting areas for refactoring.

48
New cards

Breakpoint

An intentional stopping or pausing place in a program, set by a debugger for examination of the program's state at that point.

49
New cards

Stack Trace

A report of the active stack frames at a certain point in time during the execution of a program, indicating the sequence of function calls.

50
New cards

Encapsulation

Bundling data and methods that operate on the data within a single unit, and restricting direct access to some of an object's components.

51
New cards

Interface (Programming)

A common boundary or set of rules that allows components or programs to interact with each other.

52
New cards

API (Application Programming Interface)

A set of definitions and protocols for building and integrating application software.

53
New cards

Design Patterns

Reusable solutions to common problems in software design.

54
New cards

Cohesion

The degree to which the elements inside a module belong together. High cohesion suggests good design.

55
New cards

DRY (Don't Repeat Yourself)

A principle where every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

56
New cards

YAGNI (You Aren't Gonna Need It)

A principle stating that a developer should not add functionality until deemed necessary.

57
New cards

KISS (Keep It Simple, Stupid)

A design principle which states that most systems work best if they are kept simple rather than made complex.

58
New cards

SOLID Principles (SRP)

The Single Responsibility Principle, stating that a class should have only one reason to change.

59
New cards

SOLID Principles (OCP)

The Open/Closed Principle, stating that software entities should be open for extension, but closed for modification.

60
New cards

SOLID Principles (LSP)

The Liskov Substitution Principle, stating that objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.

61
New cards

SOLID Principles (ISP)

The Interface Segregation Principle, stating that clients should not be forced to depend on interfaces they do not use.

62
New cards

SOLID Principles (DIP)

The Dependency Inversion Principle, stating that high-level modules should not depend on low-level modules; both should depend on abstractions.

63
New cards

Technical Debt

The implied cost of additional rework caused by choosing an easy solution now instead of a better, more robust approach.

64
New cards

Refactoring

The process of restructuring existing computer code without changing its external behavior, to improve non-functional attributes.

65
New cards

Readability (Code)

The ease with which human readers can understand source code.

66
New cards

Naming Conventions (Code)

Rules for choosing the character sequence to be used for identifiers in source code.

67
New cards

Idiomatic Code

Code written in a style considered natural or standard for a particular programming language or ecosystem.

68
New cards

Maintainability (Code)

The ease with which a software system or component can be modified to correct faults, improve performance or other attributes, or adapt to a changed environment.

69
New cards

Dead Code

Code that is executed but whose results are never used in any other computation.

70
New cards

Documentation (Code)

Explanatory materials accompanying source code, often detailing its function, design, and how to use it.

71
New cards

Pseudocode

An informal high-level description of the operating principle of a computer program or algorithm.

72
New cards

Control Flow Analysis

A static analysis technique that determines the order in which statements are executed in a program.

73
New cards

Variable Scope

The region of a program where a defined variable can be recognized and used.

74
New cards

Function Signature

The definition of a function or method, specifying its name, parameters, and return type.

75
New cards

Return Type

The data type of the value that a function or method returns.

76
New cards

Exception Handling

A programming construct that allows dealing with the occurrence of exceptions (anomalous or exceptional conditions) during runtime.

77
New cards

Log File

A file that records events that occur in an operating system or other software runs, or messages between different users of a communication software.

78
New cards

Tracing (Code)

The process of observing the execution of a program, often by printing messages at key points or using a debugger.

79
New cards

Test Case

A set of conditions or variables under which a tester will determine whether a system under test satisfies requirements.

80
New cards

Test Suite

A collection of test cases that are intended to be used to test a software program to show that it has some specified set of behaviors.

81
New cards

Test Plan

A document that describes the scope, approach, resources, and schedule of intended test activities.

82
New cards

Acceptance Testing

A test conducted to determine if the requirements of a specification or contract are met by the delivery of the system.

83
New cards

User Acceptance Testing (UAT)

The final stage of testing, performed by end-users to verify that the system is fit for purpose and solves the business problem.

84
New cards

Black-box testing

A method of software testing that examines the functionality of an application without peering into its internal structures or workings.

85
New cards

White-box testing

A method of software testing that tests internal structures or workings of an application, as opposed to its functionality.

86
New cards

Performance Testing

Testing that is conducted to evaluate the speed, responsiveness, and stability of a computer, network, software program or device under a particular workload.

87
New cards

Stress Testing

Testing conducted to evaluate how a system performs under extreme loads, beyond its normal operating capacity.

88
New cards

Load Testing

Testing conducted to understand the behavior of the system under a specific expected load.

89
New cards

Security Testing

A type of software testing that uncovers vulnerabilities of the system and determines that the data and resources of the system are protected from intruders.

90
New cards

Mock Object

Simulated objects that mimic the behavior of real objects in controlled ways, often used in unit testing.

91
New cards

Test Double

A generic term for any object or component that takes the place of a real dependency in a test (e.g., mocks, stubs, fakes).

92
New cards

Test Coverage (General)

A measure used to describe the degree to which the source code of a program is executed when a particular test suite runs.

93
New cards

Statement Coverage

A white-box testing metric that reports if each executable statement in the source code has been executed at least once.

94
New cards

Decision Coverage

A white-box testing metric that reports if every possible outcome of each decision point (e.g., if-else conditions) has been executed.

95
New cards

Automated Testing

Testing methods that employ software tools to execute tests and report outcomes, reducing manual effort.

96
New cards

Manual Testing

Testing methods that involve a human performing tests manually, without the aid of automated tools.

97
New cards

Smoke Test

Preliminary tests to reveal simple failures severe enough to reject a prospective software release.

98
New cards

Sanity Test

A quick test to ascertain that after a change, the software still functions as expected.

99
New cards

Repository (Repo)

A central location where data is stored and managed, especially in version control systems, where it holds all files and their revision history.

100
New cards

Commit (VCS)

A snapshot of your changes to the project, saved to the repository history.