Skip to the content
Kiến trúc không phù hợp
- Không phải tất cả các thành phần đều hoạt động cùng nhau
- Một số chỉ dường như nhưng cho kết quả sai (lỗi tinh vi)
- Các thành phần không được phát triển cho hệ thống có thể không hoạt động
- Được phát hiện sau khi mua và cố gắng sử dụng chúng
- Giao diện nổi tiếng là kém trong việc chỉ định các thuộc tính chất lượng
- Kiến trúc không phù hợp
- Trở ngại để tích hợp thành công các hệ thống dựa trên thành phần
- Không phù hợp giữa các giả định được thể hiện trong các thành phần được phát triển riêng biệt
- Exp: thành phần nào gọi thành phần kia
- Xuất hiện tại thời điểm tích hợp
- Hệ thống sẽ không biên dịch, liên kết, chạy
Giao diện không phù hợp
- Trường hợp tổng quát của sự không phù hợp về kiến trúc
- Giao diện: các giả định mà các thành phần có thể tạo ra về nhau
- Không phải đặc tả giao diện Java
- Giả định
- Cung cấp các giả định: các dịch vụ do thành phần cung cấp cho người dùng / khách hàng của nó
- Yêu cầu các giả định: nêu chi tiết các dịch vụ / tài nguyên cần thiết để thành phần hoạt động chính xác
- Không phù hợp: cung cấp và yêu cầu các giả định không khớp
Phải làm gì khi giao diện không phù hợp
- Tránh không phù hợp bằng cách chỉ định và kiểm tra các thành phần cho hệ thống
- Phát hiện các trường hợp không tránh được bằng đủ điều kiện các thành phần
- Sửa chữa các trường hợp đã phát hiện bằng cách điều chỉnh các thành phần
Các kỹ thuật sửa chữa giao diện không phù hợp
- Ít chú ý có hệ thống
- Một phương pháp rõ ràng
- Thay đổi mã của thành phần vi phạm
- Không thường xuyên có thể, thậm chí không mong muốn
- Các phương pháp khác: chèn mã cho một hoặc cả hai thành phần điều hòa sự tương tác của chúng để giải quyết sự không phù hợp
- Trình gói
- Cầu
- Trình hòa giải
Trình gói
- Một hình thức đóng gói trong đó một số thành phần được bao bọc trong một phần trừu tượng thay thế
- Khách hàng truy cập các dịch vụ thành phần được bao bọc thông qua một giao diện thay thế
- Được cung cấp bởi trình bao bọc
- Mang lại giao diện thay thế cho thành phần
Bản dịch giao diện cho trình bao bọc
- Dịch một phần tử của giao diện thành phần thành một phần tử thay thế
- Ẩn một phần tử của giao diện thành phần
- Giữ nguyên một phần tử của giao diện thành phần không thay đổi
Cầu
- Dịch một số yêu cầu các giả định của một số thành phần thành cung cấp các giả định của thành phần khác
- Sự khác biệt đối với trình bao bọc
- Mã sửa chữa của cầu độc lập với bất kỳ thành phần cụ thể nào
- Cầu nối phải được gọi một cách rõ ràng bởi một số tác nhân bên ngoài
- Có thể là một trong những thành phần mà cầu kéo dài
- Bản dịch cụ thể thực hiện tại thời điểm xây dựng cầu
- Thời gian biên dịch
- Cầu thường thoáng qua
Cầu và trình gói
- Cầu nối tập trung vào phạm vi dịch giao diện hẹp hơn so với trình bao bọc
- Cầu giải quyết các giả định cụ thể
- Nhiều giả định hơn => ít thành phần hơn nó áp dụng cho
- Tập lệnh có thể được viết để thực thi cầu nối
- Cần giải quyết các đặc thù của giao diện thành phần cụ thể cho cả hai thành phần
- Sau đó không phải là một trình bao bọc
Trình hòa giải
- Thể hiện các thuộc tính của cả trình bao bọc và cầu nối
- Trình hòa giải kết hợp chức năng lập kế hoạch
- Xác định thời gian chạy của bản dịch
- Cầu nối thiết lập bản dịch tại thời điểm xây dựng
- Trình hòa giải trở thành một thành phần rõ ràng hơn trong SA tổng thể
- Cầu nguyên thủy về mặt ngữ nghĩa: các cơ chế sửa chữa ngẫu nhiên, vai trò của chúng trong thiết kế vẫn tiềm ẩn
- Trình hòa giải phức tạp hơn về mặt ngữ nghĩa: quyền tự chủ về thời gian chạy để trở thành hạng nhất trong SA
Ví dụ về trình hòa giải
- Kết hợp dữ liệu thông minh: cảm biến tạo ra khối lượng lớn dữ liệu có độ trung thực cao
- Tại thời gian chạy: người tiêu dùng thông tin khác nhau có thể nảy sinh các giả định vận hành khác nhau về độ trung thực của dữ liệu
- Người tiêu dùng có độ trung thực thấp: một số thông tin cần được tước bỏ
- Độ trung thực tương tự nhưng các đặc tính thông lượng khác nhau yêu cầu tạm thời lưu dữ liệu vào bộ đệm
- Trong mỗi trường hợp, trình hòa giải có thể điều chỉnh sự khác biệt giữa cảm biến và người tiêu dùng của nó
- Lắp ráp chuỗi cầu nối trong thời gian chạy
- Tích hợp các thành phần có yêu cầu tích hợp phát sinh trong thời gian chạy
- Một thành phần tạo ra dữ liệu ở định dạng D0, một thành phần khác sử dụng dữ liệu ở định dạng D2; nếu không có cầu nối D0-> D2, nhưng có cầu tách biệt D0-> D1, D1-> D2, chúng có thể được xâu chuỗi bởi một bộ trung gian
Các kỹ thuật phát hiện giao diện không phù hợp
- Xác định sự không phù hợp
- Hình thức nâng cao của định tính thành phần
- Định tính thành phần
- Quy trình xác định xem một thành phần thương mại có đáp ứng các tiêu chí “phù hợp để sử dụng” khác nhau hay không
- Tích hợp nguyên mẫu của thành phần ứng viên
- Có thể phát hiện ra các hình thức tinh vi của giao diện không khớp, ví dụ: tranh chấp tài nguyên
Định tính thành phần
- Quan sát
- Đối với mỗi dịch vụ được cung cấp bởi một thành phần, một tập hợp các yêu cầu giả định phải được thỏa mãn
- Dịch vụ – cách thuận tiện để mô tả cách chức năng thành phần được đóng gói để sử dụng
- Định tính – quy trình của
- Khám phá tất cả các yêu cầu giả định cho mỗi dịch vụ được cung cấp
- Đảm bảo rằng mỗi yêu cầu giả định đều được thỏa mãn bởi một số cung cấp các giả định trong hệ thống
Các kỹ thuật tránh giao diện không phù hợp
- Từ giai đoạn đầu của thiết kế
- Cách tiếp cận có kỷ luật để chỉ định càng nhiều giả định về giao diện càng khả thi
- Các giả định nêu khẳng định về
- Tính đầy đủ của các dịch vụ được cung cấp
- Khả năng hiện thực của từng dịch vụ (xác định các nguồn lực cần thiết)
Giao diện
- Giao diện: tập hợp các giả định
- Các giao diện khác nhau – thuận lợi
- Các giao diện được tham số hóa
- Cung cấp và yêu cầu các giả định có thể được thay đổi bằng cách thay đổi giá trị của biến trước khi dịch vụ thành phần được gọi
- Kết quả là mã thích ứng, cả bên ngoài và bên trong
- Giao diện thương lượng
- Giao diện được tham số hóa với logic tự sửa chữa