Bỏ qua đến nội dung chính

Information Hiding & Boundaries

Positioning

Nhiều Failure Patterns được đề cập trong trang web này
được gây ra không phải bởi độ phức tạp code bản thân,
mà bởi sự phơi bày của
lý do cho sự thay đổi và các giả định quyết định.

Information Hiding và Boundaries
không phải là các kỹ thuật để ẩn chi tiết triển khai.
Chúng được coi như các nguyên tắc phân tách cấu trúc
để giới hạn phạm vi tác động của các thay đổi, quyết định, và responsibilities.

Scope

Appendix này không đề cập đến
các chi tiết của thiết kế module hoặc thiết kế API.

Các định nghĩa interface và các phương pháp phân vùng
chỉ được tham chiếu như
một phương tiện biểu hiện để cô lập các giả định quyết định.

Các lựa chọn về technology stacks hoặc design patterns
không được đề cập trong trang web này.

Mapping

Sau đây tổ chức sự tương ứng giữa
các yếu tố trong trang web này và
các khái niệm liên quan đến Information Hiding / Boundary.

Element in Main TextVị Trí trong Information Hiding / Boundary Lineage
Context-Blind ChangeTrạng thái mà các giả định quyết định rò rỉ qua boundaries
Boundary-Blind IntegrationTrạng thái mà các thay đổi/tích hợp xảy ra mà không có nhận thức về boundaries
CountermeasuresIntervention để giới hạn các giả định quyết định và lý do cho sự thay đổi bên trong boundaries
Resulting ContextTrạng thái mà các quyết định và thay đổi có thể được thực hiện mà không vượt qua boundaries

Rationale

Lõi của Information Hiding như được chỉ ra bởi Parnas
không phải là ẩn triển khai,
mà là cô lập những gì phải chịu sự thay đổi.

Các thất bại boundary trong Failure Patterns
phát sinh không nhiều từ các vấn đề coupling kỹ thuật,
mà từ các giả định quyết định và lý do cho sự thay đổi
lan truyền theo cách không kiểm soát.

Context-Blind Change
Boundary-Blind Integration
chỉ ra không phải một trạng thái mà boundaries "không tồn tại,"
mà một trạng thái mà boundaries không hoạt động như các đơn vị của quyết định.


References

  • David L. Parnas, On the Criteria To Be Used in Decomposing Systems into Modules, 1972.
  • David L. Parnas, Designing Software for Ease of Extension and Contraction, 1979.
  • Barbara Liskov, Data Abstraction and Hierarchy, 1988.
  • Fred Brooks, No Silver Bullet—Essence and Accidents of Software Engineering, 1987.