Categories
Software Architecture

Các Chiến Thuật Kiến Trúc 3: Sử Dụng Chiến Thuật Tính Sửa Đổi

Chiến thuật tính sửa đổi

  • Mục tiêu: kiểm soát thời gian và chi phí để hiện thực, kiểm tra, sửa đổi và triển khai các thay đổi
  • Bộ chiến thuật
    • Cục bộ hóa các sửa đổi (Localize modifications)
      • Giảm số lượng mô-đun bị ảnh hưởng bởi một thay đổi
    • Ngăn chặn các hiệu ứng gợn sóng (Prevent ripple effects)
      • Giới hạn sửa đổi đối với các mô-đun được bản địa hóa
    • Trì hoãn thời gian ràng buộc (Defer binding time)
      • Kiểm soát thời gian và chi phí triển khai

Chiến thuật tính sửa đổi (2)

Sử Dụng Chiến Thuật Tính Sửa Đổi.

Bản địa hóa các sửa đổi: duy trì tính nhất quán ngữ nghĩa

  • Tính nhất quán ngữ nghĩa: mối quan hệ giữa các trách nhiệm trong một mô-đun
  • Mục tiêu: đảm bảo rằng tất cả những trách nhiệm này làm việc cùng nhau mà không phụ thuộc quá nhiều vào các mô-đun khác
  • Cách đạt được mục tiêu: thiết kế các module với các trách nhiệm có sự nhất quán ngữ nghĩa

Bản địa hóa các sửa đổi: trừu tượng hóa các dịch vụ chung

  • Chiến thuật con của tính nhất quán ngữ nghĩa
  • Cung cấp các dịch vụ chung thông qua các mô-đun chuyên biệt
  • Tái sử dụng và sửa đổi
    • Các sửa đổi đối với các dịch vụ chung chỉ cần thực hiện một lần thay vì trong mọi mô-đun sử dụng chúng
    • Các sửa đổi đối với các mô-đun sử dụng các dịch vụ chung không ảnh hưởng đến người dùng khác

Bản địa hóa các sửa đổi: dự đoán các thay đổi dự kiến

  • Xem xét tập hợp các thay đổi được hình dung cung cấp cách đánh giá việc phân công trách nhiệm cụ thể
  • Câu hỏi
    • Đối với một thay đổi: sự phân rã được đề xuất có giới hạn tập hợp các mô-đun cần được sửa đổi để hoàn thành nó không?
    • Những thay đổi khác nhau về cơ bản: chúng có ảnh hưởng đến các mô-đun giống nhau không?
  • Mục tiêu: giảm thiểu tác động của những thay đổi

Bản địa hóa các sửa đổi: tổng quát hóa mô-đun

  • Tổng quát hóa mô-đun bằng cách làm cho nó tính toán phạm vi chức năng rộng hơn do kiểu đầu vào (input type) của nó
  • Đầu vào => xác định ngôn ngữ cho mô-đun
    • Tạo hằng số tham số đầu vào
    • Triển khai mô-đun như một trình thông dịch và làm cho các tham số đầu vào là một chương trình bằng ngôn ngữ của trình thông dịch đó
  • Mô-đun càng tổng quát hơn
    • Có nhiều khả năng là các thay đổi được yêu cầu có thể được thực hiện bằng cách điều chỉnh ngôn ngữ đầu vào

Ngăn chặn các hiệu ứng gợn sóng

  • Bản địa hóa các sửa đổi so với hạn chế các sửa đổi đối với các mô-đun được bản địa hóa (limit modifications to localized modules)
    • Có những mô-đun bị ảnh hưởng trực tiếp
      • Trách nhiệm của chúng được điều chỉnh để thực hiện thay đổi
    • Có những mô-đun bị ảnh hưởng gián tiếp bởi một thay đổi
      • Trách nhiệm của chúng không thay đổi NHƯNG việc triển khai cần được thay đổi để phù hợp với mô-đun bị ảnh hưởng trực tiếp

Hiệu ứng gợn sóng

  • Hiệu ứng gợn sóng từ một sửa đổi
    • Sự cần thiết của việc thực hiện các thay đổi đối với các mô-đun không bị ảnh hưởng trực tiếp bởi nó
    • Điều này xảy ra vì các mô-đun đã nói phụ thuộc vào các mô-đun trực tiếp xử lý sửa đổi

Các kiểu phụ thuộc

  • Chúng tôi giả định
    • Mô-đun A được thay đổi để thực hiện sửa đổi cụ thể
    • Mô-đun B chỉ thay đổi vì A đã thay đổi
  • Có một số kiểu phụ thuộc
    • Cú pháp, ngữ nghĩa, trình tự, tính đồng nhất giao diện, vị trí thời gian chạy của A, chất lượng dịch vụ, sự tồn tại của A, hành vi tài nguyên của A

Phụ thuộc cú pháp

  • Của dữ liệu
    • B sử dụng dữ liệu do A tạo ra
    • Kiểu và định dạng dữ liệu ở cả A và B cần phải nhất quán
  • Của dịch vụ
    • B gọi dịch vụ của A
    • Chữ ký của các dịch vụ do A tạo ra cần phải nhất quán với các giả định của B.

Phụ thuộc ngữ nghĩa

  • Của dữ liệu
    • B sử dụng dữ liệu do A tạo ra
    • Ngữ nghĩa của dữ liệu do A tạo ra và do B sử dụng cần phải nhất quán với các giả định của B
  • Của dịch vụ
    • B gọi dịch vụ của A
    • Ngữ nghĩa của các dịch vụ do A tạo ra cần phải nhất quán với các giả định của B

Sự phụ thuộc vào trình tự

  • Của dữ liệu
    • B sử dụng dữ liệu do A tạo ra
    • B phải nhận dữ liệu do A tạo ra theo một trình tự cố định
  • Của kiểm soát
    • A phải thực thi trước đó trong những ràng buộc thời gian nhất định

Tính đồng nhất giao diện của A

  • A có thể có nhiều giao diện
  • B sử dụng một trong số chúng
  • Để B biên dịch và thực thi chính xác, danh tính (tên hoặc xử lý) của giao diện phải phù hợp với giả định của B.

Các phụ thuộc khác

  • Vị trí thời gian chạy của A
    • Phải phù hợp với các giả định của B
  • Chất lượng dịch vụ / dữ liệu do A cung cấp
    • Các thuộc tính liên quan đến chất lượng trên phải phù hợp với các giả định của B
  • Sự tồn tại của A
    • Để B thực thi, A phải tồn tại
  • Nguồn lực hành vi của A
    • Phải phù hợp với các giả định của B

Chiến thuật ngăn chặn hiệu ứng gợn sóng

  • Che giấu thông tin
  • Duy trì các giao diện hiện có
  • Hạn chế các đường truyền thông tin
  • Sử dụng trung gian

Che giấu thông tin

  • Việc phân rã các trách nhiệm đối với một thực thể (một hệ thống hoặc một số phân rã của hệ thống) thành các phần nhỏ hơnchọn thông tin nào để đặt riêng tư và thông tin nào công khai
  • Các trách nhiệm công khai có sẵn thông qua các giao diện cụ thể
  • Mục tiêu: để cô lập các thay đổi trong một mô-đun và ngăn các thay đổi lan truyền sang các mô-đun khác
    • Kỹ thuật lâu đời nhất để ngăn những thay đổi lan truyền
    • Có liên quan chặt chẽ đến việc “dự đoán những thay đổi được mong đợi” (nó sử dụng những thay đổi đó làm cơ sở để phân tích)

Duy trì các giao diện hiện có

  • Nếu B phụ thuộc vào tên và chữ ký của một giao diện của A
    • Việc duy trì giao diện này và cú pháp của nó cho phép B không thay đổi
  • Tính ổn định của giao diện
    • Tách giao diện khỏi việc hiện thực
  • Cách thực hiện chiến thuật
    • Thêm giao diện
    • Thêm bộ điều hợp (adapter)
    • Cung cấp sơ khai (stub) cho A

Hạn chế đường truyền thông tin

  • Hạn chế số lượng mô-đun mà một mô-đun nhất định chia sẻ dữ liệu
    • Giảm số lượng mô-đun sử dụng dữ liệu được tạo ra bởi mô-đun đã cho
    • Giảm số lượng mô-đun tạo ra dữ liệu được sử dụng bởi mô-đun đã cho
      • Giảm hiệu ứng gợn sóng
    • Sản xuất / tiêu thụ dữ liệu tạo ra các phụ thuộc

Sử dụng một bên trung gian

  • B phụ thuộc vào A theo những cách khác ngoài ngữ nghĩa
    • Có thể chèn một trung gian để quản lý phụ thuộc
    • Dữ liệu (cú pháp)
    • Dịch vụ (cú pháp)
    • Vị trí của A
    • Sự tồn tại của A

Trì hoãn thời gian ràng buộc

  • Quyết định có thể được ràng buộc vào hệ thống thực thi vào nhiều thời điểm khác nhau
  • Ràng buộc trong thời gian chạy
    • Hệ thống đã được chuẩn bị cho sự ràng buộc đó
    • Tất cả các bước kiểm tra và phân phối đã hoàn thành
    • Hỗ trợ người dùng cuối / quản trị viên thực hiện cài đặt hoặc cung cấp đầu vào ảnh hưởng đến hành vi

Các chiến thuật nhằm tác động vào thời gian tải / thời gian chạy

  • Đăng ký thời gian chạy
    • Hoạt động plug-and-play, thêm chi phí bổ sung để quản lý đăng ký
  • Các tệp cấu hình – thiết lập các tham số khi khởi động
  • Tính đa hình – ràng buộc muộn của các cuộc gọi phương thức
  • Thay thế thành phần – ràng buộc thời gian tải
  • Tuân thủ các giao thức được xác định
    • Ràng buộc thời gian chạy của các tiến trình độc lập

Leave a Reply

Your email address will not be published. Required fields are marked *