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 Text | Vị Trí trong Information Hiding / Boundary Lineage |
|---|---|
| Context-Blind Change | Trạng thái mà các giả định quyết định rò rỉ qua boundaries |
| Boundary-Blind Integration | Trạ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 |
| Countermeasures | Intervention để giới hạn các giả định quyết định và lý do cho sự thay đổi bên trong boundaries |
| Resulting Context | Trạ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 và
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.