Architectural Boundaries

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

1/337

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 3:36 AM on 9/6/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

338 Terms

1
New cards

Architectural Boundary

A deliberate division between responsibilities that determines what one part of a system must expose to another.

2
New cards

Boundary Quality

How effectively a module boundary separates responsibilities while keeping interactions meaningful, manageable, and stable.

3
New cards

Good Boundary

A boundary that hides unnecessary implementation detail while exposing the information needed to use the module correctly.

4
New cards

Poor Boundary

A boundary that leaks internal details, creates awkward dependencies, or makes system reasoning harder.

5
New cards

Stable Responsibility

A coherent architectural job that is likely to remain conceptually meaningful even if its internal implementation changes.

6
New cards

Modules should correspond to stable responsibilities.

What is the central Part 10 rule for deciding what deserves its own module?

7
New cards

Maximum file count is not the goal of modularity.

What misconception about decomposition does Part 10 reject?

8
New cards

More modules do not automatically mean better architecture.

What important warning applies to modularity?

9
New cards

Useful decomposition is based on responsibility rather than file quantity.

What should determine whether functionality is separated into another module?

10
New cards

A useful module hides complexity while exposing meaning.

What is the ATHENA lightbulb for modularity?

11
New cards

Local Reasoning

The ability to understand or modify one subsystem using its contract without reopening every internal implementation around it.

12
New cards

Good boundaries enable local reasoning.

What major architectural benefit does well-designed modularity provide?

13
New cards

A designer can reason about the divider through START, DONE, ERROR, quotient, and remainder without reopening the restoring-division algorithm.

How does the divider illustrate local reasoning?

14
New cards

The external user needs the divider's contract, not its internal restoring steps.

What information should a good divider boundary hide?

15
New cards

Interface Meaning

The architectural significance of the signals exchanged across a boundary.

16
New cards

A good interface exposes meaning rather than internal procedure.

What should an interface communicate?

17
New cards

Implementation Detail

Internal mechanisms required to perform a responsibility but unnecessary for ordinary users of the module.

18
New cards

Good modularity hides implementation detail that callers do not need.

What type of information should usually remain behind a module boundary?

19
New cards

Abstraction Boundary

A boundary that allows users to rely on what a subsystem does without depending unnecessarily on how it does it.

20
New cards

A divider's transaction interface can remain meaningful even if its internal division algorithm changes.

Why can abstraction improve architectural flexibility?

21
New cards

Interface Stability

The ability of a module's external contract to remain useful even when its internal implementation evolves.

22
New cards

Stable interfaces reduce the number of other modules affected by an internal redesign.

Why is interface stability valuable?

23
New cards

Change Locality

The property that an implementation change affects a small architectural region instead of propagating across the entire system.

24
New cards

Good boundaries improve change locality.

How can modularity make redesign safer?

25
New cards

An internal algorithm can change while external users continue relying on the same contract.

What is an example of change locality?

26
New cards

Boundary Leakage

The exposure of internal implementation details through an interface when outside modules should not need them.

27
New cards

Boundary leakage increases coupling between modules.

What is a danger of exposing too much internal detail?

28
New cards

Leaky Abstraction

A module boundary that fails to hide implementation details that external users must then understand or accommodate.

29
New cards

Why are leaky abstractions harmful?

They force system-level reasoning to depend on internal mechanisms.

30
New cards

Implementation Coupling

A dependency in which another module relies on how a subsystem is internally implemented rather than only on its intended contract.

31
New cards

Stable architectural boundaries try to minimize implementation coupling.

What kind of dependency should good modularity reduce?

32
New cards

Semantic Coupling

A necessary dependency based on the actual meaning of information exchanged between modules.

33
New cards

Not all coupling is bad.

Why can modules still legitimately depend on one another?

34
New cards

Good coupling reflects real architectural relationships rather than accidental implementation details.

What distinguishes necessary coupling from harmful coupling?

35
New cards

Cohesion

The degree to which the responsibilities inside a module belong together as one meaningful architectural unit.

36
New cards

High Cohesion

A condition where a module's internal elements contribute to one coherent responsibility.

37
New cards

A module containing one stable responsibility tends to have stronger cohesion.

What structural property usually accompanies a good module boundary?

38
New cards

Low Cohesion

A condition where unrelated responsibilities are bundled into one module.

39
New cards

A module that performs several unrelated jobs may be difficult to understand and modify.

What problem can weak cohesion create?

40
New cards

Responsibility Cohesion

Grouping logic because it contributes to the same architectural responsibility rather than because it happens to be nearby in code.

41
New cards

Good modularity favors responsibility cohesion.

What should guide grouping of related RTL?

42
New cards

Over-Decomposition

Splitting a system into more modules than its architectural responsibilities justify.

43
New cards

Can modularity be taken too far?

Yes; excessive decomposition can create unnecessary interfaces and coordination.

44
New cards

Under-Decomposition

Combining too many distinct responsibilities into one large module.

45
New cards

Can too little modularity also be harmful?

Yes; unrelated responsibilities can become entangled.

46
New cards

Balanced Decomposition

Choosing boundaries that isolate meaningful responsibilities without fragmenting the design unnecessarily.

47
New cards

The goal is appropriate decomposition, not maximum decomposition.

What should modular architecture optimize for?

48
New cards

File-Count Fallacy

The mistaken belief that more source files necessarily indicate better modularity.

49
New cards

Why is the number of .v files a poor measure of architectural quality?

A design can have many files yet still have bad responsibility boundaries.

50
New cards

One coherent responsibility may legitimately occupy substantial RTL.

Does a large module automatically indicate poor architecture?

51
New cards

No.

Does a small module automatically indicate good architecture?

52
New cards

Boundary quality matters more than raw module size.

What should be judged instead of line count or file count?

53
New cards

Interface Cost

The design and reasoning burden introduced whenever information must cross a module boundary.

54
New cards

Every additional module boundary can add interface cost.

Why is decomposition not free?

55
New cards

Excessive Interfaces

An unnecessarily large number of connections created because the design has been fragmented too aggressively.

56
New cards

Over-decomposition can increase interface count.

What structural cost can excessive modularity create?

57
New cards

Signal Proliferation

The growth of many ports and inter-module wires required to connect fragmented responsibilities.

58
New cards

Why can excessive signal proliferation be problematic?

It increases integration burden and makes interactions harder to understand.

59
New cards

Interface Surface

The amount of information a module exposes to the rest of the system.

60
New cards

A smaller meaningful interface is often easier to reason about than a large detail-heavy one.

What is one benefit of limiting interface surface?

61
New cards

Minimal Meaningful Interface

An interface exposing all information needed for correct use while avoiding unnecessary internal details.

62
New cards

A good interface should be minimal but not incomplete.

What balance should interface design seek?

63
New cards

Too little interface information can make correct coordination impossible.

Why should designers not simply minimize port count at all costs?

64
New cards

Too much interface information can expose implementation detail and increase coupling.

Why should every possible internal signal not be exported?

65
New cards

Interface Completeness

The property that a boundary exposes enough information for external modules to use the subsystem correctly.

66
New cards

Interface Economy

The property that a boundary avoids exposing information that external users do not need.

67
New cards

Good interface design balances completeness and economy.

What two goals must a module interface satisfy simultaneously?

68
New cards

Boundary Overhead

Additional logic, wiring, conversion, or control required because responsibilities are separated across a boundary.

69
New cards

Modularity can have implementation costs as well as reasoning benefits.

Why is decomposition an architectural tradeoff?

70
New cards

Conversion Boundary

A module boundary requiring data representation or format conversion between neighboring responsibilities.

71
New cards

Duplicated Conversion

The repeated transformation of the same information because boundaries were chosen poorly.

72
New cards

Poor boundaries can create duplicated conversions.

What Part 10 modularity cost occurs when neighboring modules repeatedly translate representations?

73
New cards

Repeated sign, width, or format conversions may indicate a questionable boundary.

What kind of symptom can suggest that responsibilities are divided awkwardly?

74
New cards

Representation Ownership

The architectural decision about which subsystem is responsible for maintaining or converting a particular data representation.

75
New cards

Clear representation ownership helps avoid duplicated conversions.

How can conversion duplication be reduced architecturally?

76
New cards

Conversion Locality

Keeping representation changes near the subsystem that logically owns them.

77
New cards

Why is conversion locality useful?

It prevents multiple modules from independently implementing the same transformation.

78
New cards

Awkward Control Boundary

A division where control decisions must repeatedly cross between modules because responsibility was split at the wrong place.

79
New cards

Poor decomposition can create awkward control.

What control-related cost of modularity does Part 10 identify?

80
New cards

Control Ping-Pong

A problematic structure in which closely related control decisions bounce repeatedly between module boundaries.

81
New cards

Why can control ping-pong indicate poor decomposition?

The separated logic may actually belong to one cohesive responsibility.

82
New cards

Control Ownership

The architectural responsibility for deciding when a particular action may occur.

83
New cards

Clear control ownership reduces ambiguous or duplicated decisions.

Why should a boundary make control ownership understandable?

84
New cards

Split Responsibility

A situation where one coherent architectural job is divided across modules so strongly that neither module can be understood independently.

85
New cards

What is one danger of splitting one responsibility too aggressively?

It damages local reasoning and increases coordination.

86
New cards

Responsibility Fragmentation

Breaking one conceptually unified function into pieces that require constant cross-boundary interaction.

87
New cards

High cross-boundary interaction can indicate responsibility fragmentation.

What behavioral clue can reveal over-decomposition?

88
New cards

Cross-Boundary Traffic

The amount of data and control information exchanged between modules.

89
New cards

Excessive cross-boundary traffic can suggest that a boundary is poorly placed.

Why can interaction frequency help evaluate boundary quality?

90
New cards

Chatty Interface

An interface requiring many tightly coordinated exchanges for a responsibility that could possibly be contained more cleanly.

91
New cards

Why can a very chatty interface be suspicious?

It may expose internal sequencing instead of a stable architectural contract.

92
New cards

Transactional Interface

An interface organized around meaningful requests, status, and results rather than internal microsteps.

93
New cards

START/BUSY/DONE is an example of what kind of abstraction?

A transaction-oriented interface.

94
New cards

A transaction-oriented boundary can hide internal iteration count and microsteps.

What advantage does such an interface provide?

95
New cards

Internal Sequence Hiding

Keeping cycle-by-cycle implementation details behind a module boundary while exposing only externally meaningful events.

96
New cards

Why is internal sequence hiding useful?

It allows internal sequencing to change without forcing external redesign.

97
New cards

Protocol Abstraction

Representing a subsystem through meaningful transaction-level events rather than exposing its detailed implementation sequence.

98
New cards

A divider contract can expose START and DONE without exposing every restore/subtract iteration.

What does protocol abstraction allow?

99
New cards

Boundary Contract

The set of externally meaningful assumptions, inputs, outputs, and timing expectations that define correct subsystem interaction.

100
New cards

A good boundary contract should remain understandable without inspecting internal RTL.

What makes a contract useful for local reasoning?