Biểu đồ tuần tự của hệ thống ARTC trước tái cấu trúc

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 94 - 96)

tin về số lượng hướng trên điểm giao cắt này (ngã ba, ngã tư hay ngã năm, v.v.).

Lớp Optimizer chứa đựng phương thức optimizeTraffic() sử dụng để tối ưu hóa các tín hiệu đầu vào. Chú ý rằng, phương thức optimizeTraffic()

chịu trách nhiệm tối ưu hóa cả ba loại thơng tin về chuyển đổi màu đèn, thời gian của từng tín hiệu đèn và hướng dẫn lựa chọn hướng đi cho người tham gia giao thông. Cuối cùng là lớp Road, mô tả các thông tin về các

con đường và tỷ lệ lưu lượng giao thơng trung bình của các phương tiện đi qua nó.

4.4.1.2 Biểu đồ tuần tự của hệ thống ARTC

Hình 4.5 cho thấy các đối tượng thuộc vào lớp Detector bắt đầu thực hiện nhiệm vụ tối ưu hóa tín hiệu bằng cách gửi các thông tin về lưu lượng giao thông đến cho lớp TrafficController, lớp này thu nhận và gửi các dữ

liệu nhận được đến lớpOptimizer, thơng qua bộ ba phân tích của mình, lớp Optimizer sẽ trả lại kết quả, lớp TrafficController thực hiện phân tích và trả về kết quả là thơng số của các tín hiệu đèn. Trong luận án này, chúng tôi chỉ mô tả kịch bản của hệ thống ARTC với các chức năng chính, bao gồm getTrafficFlow(), analyzeTraffic() và optimizeTraffic(). Kịch bản này

4.4.2 Một số hạn chế của hệ thống ARTC trước tái cấutrúc trúc

Như đã đề cập, thời điểm hiện tại trong lớpOptimizer có phương thức

optimizeTraffic() dùng để phân tích các tín hiệu giao thơng của hệ thống ARTC. Mỗi khi hệ thống cần phân tích và tối ưu tín hiệu, đồng thời các đoạn mã thực hiện các chức năng tối ưu màu đèn (Signal), thời gian (Time) và tư vấn hướng đi (Direction) đều được thực hiện. Giải pháp này được coi là đầy đủ và hữu hiệu đối với một môi trường giao thơng ổn định và ít có sự biến đổi.

Tuy nhiên, một trong những đặc tính quan trọng của hệ thống này là khả năng tùy biến đối với sự thay đổi của mơi trường, ví dụ như những biến động về thời tiết, lưu lượng giao thông biến động theo giờ, v.v. Do vậy, mơ-đun dùng trong cơng việc phân tích cần mang tính độc lập và các phương thức phân tích tín hiệu cần được chuyển đổi qua lại một cách linh hoạt (tùy theo điều kiện của môi trường). Phương thức optimizeTraffic()

trong lớp Optimizer tương đối phức hợp, điều đó gây khó khăn cho quá trình thực thi cũng như bảo trì hệ thống. Một số vấn đề phát sinh cần được xem xét đối với lớp Optimizer cụ thể như sau:

– Chức năng của lớp Optimizer là tối ưu hóa các tín hiệu nhận được từ bộ TrafficController, nó cần thực hiện ba mục tiêu cụ thể: (1) tối

ưu về mặt tín hiệu (signal), (2) tối ưu về mặt thời gian (time) và (3) tối ưu về cách lựa chọn hướng đi (direction). Nhưng rõ ràng, với cách thiết kế thuật toán như trên, khi phương thức optimizeTraffic() được thực thi, nó sẽ ln ln gọi đến đồng bộ cả ba chức năng trên. Điều này gây lãng phí tài ngun của hệ thống vì q trình thực hiện khơng tối ưu.

– Nếu hệ thống cần phải tích hợp thêm một chức năng tối ưu nào đó, nhu cầu thêm một lớp mới kế thừa từ lớp Optimizersẽ xuất hiện. Và như vậy, lớp con đó phải kế thừa tất cả những gì lớp Optimizer đang có. Đây là những điều rất cần tránh trong xây dựng phần mềm. Để khắc phục các khó khăn trên, người thiết kế hệ thống có thể sử dụng mẫu thiết kế Strategy để tiến hành tái cấu trúc lại lớp Optimizer.

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 94 - 96)

Tải bản đầy đủ (PDF)

(132 trang)