Biểu đồ lớp của hệ thống ARTC sau khi 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 96 - 100)

thời cho phép nó hốn đổi vị trí một cách linh hoạt. Như minh họa trong Hình 4.6, chúng tơi phân rã phương thức optimizeTraffic() thành ba thuật toán con (OptimizeStrategy1, OptimizeStrategy2, OptimizeStrategy3) từ lớp

Optimizer sau đó hình thành một hệ thống các lớp giải thuật có chia sẻ giao diện OptimizerStrategy. Biểu đồ tuần tự tương ứng với kịch bản của hệ

thống sau khi tái cấu trúc được mô tả như trong Hình 4.7.

Nếu như biểu đồ ca sử dụng dùng để mơ tả các chức năng chính của hệ thống, cụ thể hơn, nó sẽ biểu diễn những hành vi (khía cạnh động) mà hệ thống sẽ thực hiện, thì biểu đồ lớp lại đóng vai trị mơ tả về mặt cấu trúc, tức là khía cạnh tĩnh của hệ thống. Biểu đồ lớp của hệ thống ARTC được biểu diễn như trong Hình 4.6, bao gồm bảy lớp: bốn lớp thông thường Detector, TrafficController, Junction andRoad, một lớp trừu tượngOptimizerStrategy

và ba lớp con OptimizeStrategy1, OptimizeStrategy2 và OptimizeStrategy3.

Lớp TrafficController sẽ đóng vai trị trung tâm, thu nhận và xử lý thông tin của cung cấp bởi tất cả các lớp còn lại, đưa ra các quyết định về thời gian của các tín hiệu, sao cho hệ thống ARTC hoạt động đạt được hiệu quả cao nhất.

4.4.3 Xác định các hành vi cần bảo toàn

Hệ thống ARTC mang những yếu tố đặc trưng về thời gian thực, nó cần phải đáp ứng một cách kịp thời tất cả những biến đổi của tình trạng giao thơng một cách hiệu quả và chính xác. Trong hệ thống ARTC, khơng mất tính tổng quát, giả sử rằng tại một hướng nào đó của giao lộ, chúng ta xác định một số hành vi của hệ thống cần được bảo tồn như sau:

– Khi giao thơng đang ở trạng thái ách tắc (heavyTraffic), tín hiệu đèn xanh cần được bật lên (nếu nó đang đỏ).

– Ngược lại, khi giao thơng đang ở trạng thái thơng thống (lowTraffic), tín hiệu đèn đỏ cần được bật lên (nếu nó đang xanh).

– Khi giao thông đang ở trạng thái ách tắc (heavyTraffic), tín hiệu đèn

xanh đã được bật lên, thì thời gian (time) dành cho tín hiệu này cần được gia tăng.

– Khi giao thơng đang ở trạng thái thơng thống, tín hiệu đèn đỏ đã được bật lên, thì thời gian dành cho tín hiệu này cần được gia tăng. – Tại một hướng giao lộ nào đó, khi giao thơng đang ở trạng thái với lưu

lượng cao (highTraffic), tín hiệu đèn xanh đang được bật, thì phương tiện giao thơng nên lựa chọn theo hướng đi này, còn với tất cả các trạng thái còn lại, giải pháp noChoose nên được thực hiện.

4.4.3.1 Biểu diễn các hành vi bằng OCL

Để phục vụ cho mục tiêu kiểm chứng tính nhất quán của hệ thống, các hành vi trên được biểu diễn bằng OCL như như Đặc tả 4.1.

1 Context Optimizer inv self.amberTime = 5 2 Context Detector::getTrafficFlow()

3 pre: self.trafficFlow -> isEmpty() 4 post: self.trafficFlow -> notEmpty()

5 Context TrafficController::analyzeTraffic() 6 pre: self.trafficFlow -> notEmpty()

7 post: (state = heavyTraffic) OR (state = lowTraffic)

8 OR (state = highTraffic) OR (state = noTraffic) 9 Context Optimizer::optimizeTraffic()

10 pre: (state = heavyTraffic) OR (state = lowTraffic) OR (state = highTraffic) OR (state = noTraffic)

11 post: if (state = heavyTraffic) then ((signal = green) AND ( greenTime > 60))

12 else (if (state = lowTraffic) then ((signal = red) AND ( redTime > 60))

13 else (if (state = highTraffic) then (direction = CHOOSE))

14 else (direction = NO_CHOOSE) 15 endif)

16 endif) 17 endif

Đặc tả 4.1: Đặc tả trên biểu đồ lớp của hệ thống ARTC khởi đầu. Sau khi áp dụng mẫu thiết kế Strategy, như minh họa trong Hình 4.6, chúng tơi đã phân rã phương thức optimizeTraffic() thành ba thuật toán con tương ứng được chứa đựng trong các lớp OptimizeStrategy1, OptimizeS- trategy2 và OptimizeStrategy3. Sau đó hình thành một hệ thống các lớp giải

thuật có chia sẻ giao diện OptimizerStrategy. Lúc này, các ràng buộc trên

mơ hình lớp sau tái cấu trúc được biểu diễn như Đặc tả 4.2.

1 Context OptimizerStrategy inv self.amberTime = 5 2 Context Detector::getTrafficFlow()

3 pre: self.trafficFlow -> isEmpty() 4 post: self.trafficFlow -> notEmpty()

5 Context TrafficController::analyzeTraffic() 6 pre: self.trafficFlow -> notEmpty()

7 post: (state = heavyTraffic) OR (state = lowTraffic) 8 OR (state = highTraffic) OR (state = noTraffic) 9 Context OptimizeStrategy1::optimizeTraffic()

10 pre: (state = heavyTraffic) OR (state = lowTraffic) OR (state = highTraffic) OR (state = noTraffic)

11 post: if (state = heavyTraffic) then (signal = green) 12 else (signal = red)

13 endif 14

15 Context OptimizeStrategy2::optimizeTraffic()

16 pre: (state = heavyTraffic) OR (state = lowTraffic) OR (state = highTraffic) OR (state = noTraffic)

17 post: if (state = heavyTraffic) then (greenTime > 60) 18 else (greenTime <= 60)

19 endif

20 Context OptimizeStrategy3::optimizeTraffic()

21 pre: (state = heavyTraffic) OR (state = lowTraffic) OR (state = highTraffic) OR (state = noTraffic)

22 post: if (state = highTraffic) then (direction = CHOOSE) 23 else (direction = NO_CHOOSE)

24 endif 25

Đặc tả 4.2: Đặc tả trên biểu đồ lớp của hệ thống ARTC sau tái cấu trúc.

Dựa trên Định nghĩa 4.4 và Định nghĩa 4.5 chúng ta có thể suy dẫn ra tiền và hậu điều kiện cho phương thức optimizeTraffic() trong giao diện

OptimizerStrategy như Đặc tả 4.3:

1 Context OptimizerStrategy inv self.amberTime = 5 2 Context OptimizerStrategy:: optimizeTraffic()

3 pre: (state = heavyTraffic) OR (state = lowTraffic) OR (state = highTraffic) OR (state = noTraffic)

4 post: if (state = heavyTraffic) then ((signal = green) AND ( greenTime > 60))

5 else (if (state = lowTraffic) then ((signal = red) AND ( greenTime <= 60))

6 else (if (state = highTraffic) then (direction = CHOOSE)

7 else (direction = NO_CHOOSE) 8 endif)

9 endif) 10 endif

Đặc tả 4.3: Đặc tả trên lớp OptimizerStrategy sau tái cấu trúc.

Sau khi áp dụng mẫu thiết kế Strategy cho biểu đồ lớp ban đầu, kịch bản tính tốn tối ưu hóa hệ thống calculating optimal control đã được vẽ lại như Hình 4.7.

Mối quan tâm lớn nhất của chúng ta bây giờ là liệu mơ hình phần mềm sau tiến hóa có bảo tồn các tính chất tĩnh và động sau khi thực hiện tái cấu trúc với mẫu thiết kế Strategy hay không ?

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 96 - 100)

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

(132 trang)