Software Engineering: Requirements, Architecture, and Quality Practice Flashcards

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/84

flashcard set

Earn XP

Description and Tags

Comprehensive vocabulary cards covering software engineering principles, lifecycle stages, and technical patterns.

Last updated 8:29 PM on 6/2/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

85 Terms

1
New cards

Requirements

A high-level definition of what exactly the software should do.

2
New cards

Specifications

A rough organizational outline of how a software system might be built.

3
New cards

Architecture

The precise system and code-level 'how' that follows requirements and specifications.

4
New cards

The "-ilities"

A set of desirable system attributes, often called non-functional requirements, that represent quality-related aspects affecting long-term success and maintainability.

5
New cards

Usability

An '-ility' describing how user-friendly and intuitive the software is.

6
New cards

Maintainability

The ease with which software can be modified to correct faults, improve performance, or adapt to a changing environment.

7
New cards

Scalability

The ability of the software to handle growing amounts of work in a graceful manner or its potential to be enlarged to accommodate growth.

8
New cards

Availability

The proportion of time the system is functional and working, often measured as a percentage.

9
New cards

Reliability

The ability of the software to perform its required functions under stated conditions for a specified period.

10
New cards

Portability

The ease with which software can be transferred from one environment to another.

11
New cards

Interoperability

The ability of the software to interact with other systems or components.

12
New cards

Security

The protection of software against unauthorized access or modifications.

13
New cards

Performance

How the system behaves under particular conditions in terms of speed, response time, and throughput.

14
New cards

Accessibility

The software's ability to be used by end users with different technical, physical, and mental abilities.

15
New cards

Modularity

The degree to which software is composed of discrete components such that a change to one has minimal impact on others.

16
New cards

ISO 25010 Software Quality Model

A framework that subsets software quality into eight broad categories: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, and Portability.

17
New cards

System Model

The developer's mental model focused on data and features to organize code.

18
New cards

User Model

How the user thinks of a task or product, often more function-based and less feature-based than a system model.

19
New cards

Spolsky’s Cardinal Axiom

The design principle suggesting that developers focus on User Model > System Model.

20
New cards

SSoT (Single Source of Truth)

Maintaining a repository or project wiki as the one definitive place for design and requirements to prevent data loss.

21
New cards

Bus Factor

A measurement of risk based on how much crucial software knowledge is shared among team members versus isolated in a few individuals' heads.

22
New cards

Architectural Decision Record (ADR)

A document used to capture important decisions and the reasoning behind them for future developers.

23
New cards

Tech Debt

The accumulated cost of fixing short-term, rushed decisions that slow down the velocity of making changes over time.

24
New cards

Tech Investment

Spending time and resources on research, education, or code cleaning to provide a long-term payoff.

25
New cards

Lambo Problem

Worrying about problems related to extreme success, such as massive scale, before the current practical problem is solved.

26
New cards

YAGNI

You Ain't Gonna Need It: keeping feature load and abstraction low because many anticipated needs never materialize.

27
New cards

KISS

Keep It Super Simple (or Keep It Simple Stupid): a focus on limiting complexity for improved robustness.

28
New cards

DRY

Don’t Repeat Yourself: avoiding duplication to ensure updates only need to be made in one place.

29
New cards

Abstraction

Hiding implementation details and showing only what is necessary to use a component, supporting 'black box' thinking.

30
New cards

Dependency Injection (DI)

A pattern where a component receives its dependencies from an external source rather than creating them itself.

31
New cards

Inversion of Control (IoC)

A design principle where the flow of a program is flipped so that a higher-level framework calls the developer's code.

32
New cards

Cohesion

How related and focused the elements within a module, class, or function are toward a single purpose.

33
New cards

Coupling

The degree of relation or dependence between components; loose coupling is generally preferred for ease of reasoning.

34
New cards

Negative Security Model

A strategy using a 'blacklist' of known attack styles while allowing everything else.

35
New cards

Positive Security Model

A strategy using a 'whitelist' of explicitly allowed actions and denying everything else by default.

36
New cards

DSL (Domain Specific Language)

A special file format or language defined and understood for a particular domain, such as CSS or configuration files.

37
New cards

Client-Server Model

A web pattern involving a client for presentation/interaction and a server for data/servicing requests.

38
New cards

The Localhost Effect

A developer bias where software appears more robust and faster than it actually is because network adverse conditions are invisible during local development.

39
New cards

CRUD

Create, Read, Update, Delete: the four basic actions performed on data resources.

40
New cards

REST

REpresentational State Transfer: a method of defining resources as URLs (nouns) and actions as HTTP methods (verbs).

41
New cards

MVC

Model-View-Controller: a pattern separating concerns into Data (Model), UI (View), and Logic/Input (Controller).

42
New cards

SPA (Single Page App)

A JavaScript-first application suited for long sessions where content updates within a single document.

43
New cards

CI (Continuous Integration)

Constantly integrating and testing software into a workable build using automated pipelines.

44
New cards

CD (Continuous Delivery)

The ability to get an automatically produced build into production use quickly.

45
New cards

Feature Toggle / Feature Flag

Introducing new functionality hidden behind a conditional statement to show it to select users for testing.

46
New cards

Silly Law of Bugs

E=MC2E = MC^2: Errors = More Code Squared, representing how increased code and complexity lead to more bugs.

47
New cards

TETO / ABT

Test Early Test Often / Always Be Testing.

48
New cards

Testing Pyramid

A strategy where a foundation of small, fast unit tests supports fewer integrated tests and even fewer UI level tests at the top.

49
New cards

TDD (Test Driven Development)

A process involving three phases: Red (write failing test), Green (write code to pass), and Refactor (clean the code while keeping it green).

50
New cards

BDD (Behavior Driven Development)

An extension of TDD that ties tests specifically to user stories and behaviors.

51
New cards

DevOps

A cultural movement aimed at joining software creation and operations to break down organizational silos.

52
New cards

Five Nines

99.999%99.999\% availability, which allows only 5.265.26 minutes of downtime per year.

53
New cards

RUM (Real User Monitoring)

Monitoring software performance and errors experienced by actual users under real-world conditions.

54
New cards

Synthetic Monitoring

Simulated traffic or scripted scenario checks to verify availability and functionality.

55
New cards

Common Code Smells

Indicators of potential problems in code, such as magic numbers, poor commenting, breaking abstractions, and poor naming.

56
New cards

CI/CD

Continuous Integration/Continuous Delivery: practices that automate the build and testing processes, critical in Agile development.

57
New cards

The -ilities

A set of desirable system attributes, including usability, maintainability, scalability, availability, reliability, portability, interoperability, security, performance, and accessibility, which drive engineering and architectural decisions.

58
New cards

Cohesion

How related and focused the elements within a module, class, or function are toward a single purpose.

59
New cards

Coupling

The degree of relation or dependence between components; loose coupling is generally preferred for ease of reasoning.

60
New cards

Single Responsibility Principle (SRP)

A design principle that states that a module or class should have only one reason to change, meaning it should have only one job or responsibility.

61
New cards

Separation of Concerns

A design principle for separating a computer program into distinct sections, such that each section addresses a separate concern.

62
New cards

DRY (Don't Repeat Yourself)

A principle aimed at reducing the repetition of code patterns, ensuring updates only need to be made in one place.

63
New cards

Encapsulation

A principle in object-oriented programming that restricts direct access to some of an object's components, which can help in reducing complexity.

64
New cards

Abstraction

Hiding implementation details and showing only what is necessary to use a component, supporting 'black box' thinking.

65
New cards

Dependency Injection

A design pattern where a component receives its dependencies from an external source rather than creating them itself.

66
New cards

Minimalism

A philosophy in software design that aims to reduce complexity by focusing on what is essential.

67
New cards

Client-Server Model

A web pattern involving a client for presentation/interaction and a server for data/servicing requests.

68
New cards

Layered Models

Architectural patterns where components are organized in layers, allowing for separation of concerns and enhancing modularity.

69
New cards

Graceful Degradation

The ability of a system to continue operating in reduced functionality when part of the system fails.

70
New cards

Progressive Enhancement

A strategy for web development that emphasizes the baseline functionality for all devices, enhancing features for capable devices.

71
New cards

CRUD

Create, Read, Update, Delete: the four basic actions performed on data resources.

72
New cards

REST

REpresentational State Transfer: a method of defining resources as URLs (nouns) and actions as HTTP methods (verbs).

73
New cards

MVC

Model-View-Controller: a pattern separating concerns into Data (Model), UI (View), and Logic/Input (Controller).

74
New cards

SPA (Single Page App)

A JavaScript-first application suited for long sessions where content updates within a single document.

75
New cards

CI (Continuous Integration)

Constantly integrating and testing software into a workable build using automated pipelines.

76
New cards

CD (Continuous Delivery)

The ability to get an automatically produced build into production use quickly.

77
New cards

Feature Toggle / Feature Flag

Introducing new functionality hidden behind a conditional statement to show it to select users for testing.

78
New cards

Silly Law of Bugs

E=MC2E = MC^2: Errors = More Code Squared, representing how increased code and complexity lead to more bugs.

79
New cards

TETO / ABT

Test Early Test Often / Always Be Testing.

80
New cards

Testing Pyramid

A strategy where a foundation of small, fast unit tests supports fewer integrated tests and even fewer high-level UI tests.

81
New cards

TDD (Test Driven Development)

A software development process involving three phases: Red (write failing test), Green (write code to pass), and Refactor (clean code).

82
New cards

BDD (Behavior Driven Development)

An extension of TDD that ties tests specifically to user stories and user behaviors.

83
New cards

Software Life Cycle

The process of software development from inception to retirement, considering how choices affect software health over time.

84
New cards

Documentation Forms

Various methods to maintain code and design clarity, including ADRs (Architectural Decision Records) and JSDoc comments.

85
New cards

Generative AI Impact

The influence of AI technologies on software engineering, affecting aspects such as tech debt, complexity preservation, and process efficiency.