Từ mô hình trực quan cấu trúc lại chương trình

Một phần của tài liệu Tái kỹ nghệ trong phát triển phần mềm hướng đối tượng (Trang 69)

a. Kỹ nghệ ngược

Kỹ nghệ ngược thường là sự tái hiện kỹ nghệ trước đó, một hệ thống được kỹ nghệ ngược sẽ là đầu vào cho tiến trình đặc tả các yêu cầu, hỗ trợ quá trình bảo trì sau này. Để phân tích được một phần mềm phải dựa trên quan điểm hiểu thiết kế và đặc tả của nó, có thể là một phần của tiến trình tái kỹ nghệ, cũng có thể là quá trình cụ thể hóa lại một hệ thống cho việc cài đặt lại. Nhờ đó xây dựng được bộ dữ liệu chương trình và sinh dữ liệu từ nó.

Hình 4-5 Sơ đồ tiến trình cấu trúc chương trình

Việc áp dụng quy trình tái kỹ nghệ cho hệ thống cảnh báo thiên tai với mạng cảm nhận không dây có đề cập vấn đề cấu trúc lại chương trình, dữ liệu và cải thiện một số chức năng chương trình để phù hợp với yêu cầu mở rộng hệ thống và tiết kiệm năng lượng cho mạng, đồng thời giúp hiểu hệ thống và dễ bảo trì sau này.

Tiết kiệm năng lượng cho nút mạng cảm nhận không dây nhằm kéo dài thời gian sống của nút mạng, cụ thể là: tiết kiệm năng lượng dựa trên hoạt động truyền nhận không dây, dựa trên việc thiết lập chế độ làm việc của nó, ngoài ra phụ thuộc yếu tố tiêu thụ điện năng của thiết bị phần cứng. Việc thay đổi các chế độ và cách chuyển đổi giữa các chế độ của hệ vi xử lý CC1010 thông qua tần số đã giúp cho việc thay đổi chế độ làm việc của nút mạng WSN một cách linh hoạt trong phần mềm nhúng. Khi chọn chế độ được thực hiện bằng phần mềm và khi có sự chuyển đổi chế độ làm việc nhờ đưa vào thông số thời gian cho nút mạng trong quá trình thiết lập hợp lý sẽ mang lại tiết kiệm năng lượng đáng kể.

b. Cấu trúc lại chương trình

Cải thiện cấu trúc chương trình là quá trình sửa lại các cấu trúc điều khiển sai trong vòng lặp và đơn giản hóa lại điều kiện Ví dụ: Điều kiện phức tạp: if not (A > B and (C < D or not ( E > F) ) ).... Điều kiện được đơn giản hóa: if (A <= B and (C>=

D or E > F)... Hệ thống cảnh báo Cấu trúc chương trình Cấu trúc dữ liệu Các thực thể chức năng Phân tích tự động Diễn giải thủ công Tạo tài liệu

Hình 4-6 Tiến trình kiến trúc lại chương trình

Trong qúa trình tổ chức lại chương trình, hệ thống được chỉnh sửa với hai thuật toán: thuật toán của chương trình thu nhận nhiện độ và thuật toán định tuyến giá tối thiểu. Do vi điều khiển bị ràng buộc về mặt tài nguyên nên đòi hỏi chương trình đưa vào vi điều khiển phải ngắn gọn, tiết kiệm bộ nhớ song vẫn đảm bảo cho việc viết chương trình nhanh, bảo trì và nâng cấp dễ dàng. Thuật toán của chương trình thu nhận nhiện độ có thể mô tả như sau:

Hình 4-7 Thuật toán làm việc thu nhận nút mạng cảm nhận

Khởi tạo các tham số: - Khởi tạo ADC, RF. - Về chế độ nghỉ - Wake up C1010 - Thu thập số liệu (cảm nhận) - Phát số liệu cho nút gốc - Trở về chế độ nghỉ F T Đến thời điểm phát số liệu? Chương trình cần kiến trúc lại Chương trình đã kiến trúc lại Phân tích, xác định các

cấu trúc điều khiển chương trình Bộ sinh mã

Trình diễn biểu đồ

Ý nghĩa của các bước trong lưu đồ thuật toán:

Bước 1: Khởi tạo:

 Khởi tạo ADC:

+ Đặt bộ biến đổi ADC về chế độ đơn (10 bit). + Đặt điện áp tham chiếu là 1.25V.

 Khởi tạo RF:

 Thiết lập một trong các tần số RF: 433MHz, 868MHz, 915MHz.  Cách điều chế tín hiệu: mã hoá Manchester

 Công suất phát: 4 dBm

 Xác định tốc độ truyền dữ liệu: 2.4kb/s  Về chế độ nghỉ:

 Thiết lập giá trị của bit PCON.IDLE = 01h.

Bước 2: Thời điểm phát số liệu là thời điểm xung nhịp của đồng hồ thời gian thực – RTC đã đếm được 15s sau khi nút mạng chuyển về chế độ nghỉ.

 Nếu True : nút mạng sẽ chuyển sang trạng thái của bước 3.  Nếu False : nút mạng quay trở lại trạng thái nghỉ.

Bước 3:

 Wake up C1010: Nút mạng thức dậy và chuyển sang chế độ hoạt động, giá trị của bit PCON.IDLE thay đổi.

 Thu thập số liệu (cảm nhận): Cảm biến sẽ thực hiện chức năng cảm nhận, thu thập thông tin, sau đó đưa tín hiệu ở dạng tương tự về cho vi điều khiển. Tại vi điều khiển, ADC sẽ chuyển tín hiệu sang dạng số rồi đọc giá trị vừa chuyển đổi.

 Phát số liệu cho nút gốc: Bộ thu phát RF bật TX để thực hiện truyền số liệu cảm nhận được về nút gốc.

 Trở về chế độ nghỉ: Thiết lập giá trị cho bit PCON.IDLE = 1

 Khởi tạo ADC: dùng hàm halConfigADC() trong thư viện HAL với các giá trị khởi tạo như sau:

halConfigADC(ADC_MODE_SINGLE | ADC_REFERENCE_INTERNAL_1_25, CC1010EB_CLKFREQ, 0);

// ADC sẽ chuyển đổi dữ liệu theo chế độ single, không liên tục.

 Khởi tạo RF: Các giá trị được thiết lập theo cấu trúc sau:

RF_RXTXPAIR_SETTINGS code RF_SETTINGS = {

0xA3, 0x2F, 0x15, // Modem 0, 1 and 2 0x75, 0xA0, 0x00, // Freq A

0x58, 0x32, 0x8D, // Freq B 0x01, 0xAB, // FSEP 1 and 0 0x40, // PLL_RX

0x30, // PLL_TX

0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND

0xFF, // PA_POW – Năng lượng đầu ra 0x00, // MATCH

0x00, // PRESCALER };

Hình 4-8 Định nghĩa thông tin thiết lập

Giải thuật chọn đường theo thuật toán giá tối thiểu. Trường Cost của nút trong mạng được thiết lập theo giá của nó so với nút đích (giá tối thiểu), để gói tin có thể chảy xuống nút cơ sở (sink) dọc theo một đường dẫn tối thiểu theo quy luật nước chảy chỗ trũng.

Hình 4-9 Giải thuật nước chảy chỗ trũng ACD Sinh

Khi gói tin được gửi từ nguồn, thì nó phải chứa giá tối thiểu tính từ nguồn tới sink. Message này cũng phải chứa tổng cost tính từ lúc bắt đầu nguồn tới nút hiện tại. Nút gửi phát quảng bá gói tin trên kênh Wireless mà không cần nhắm vào một nút hàng xóm nào cụ thể (đó là lý do mà không cần trường ID). Một thông điệp nghe từ nút hàng xóm quyết định việc phân tuyến cho gói tin dựa vào tổng cost mà nó có (tin này chứa trên gói tin header). Do vậy đạt được con đường phân tuyến tối ưu mà không cần duy trì thông tin đường dẫn tường minh

Hình 4-10 Lược đồ giải thuật giá tối thiểu

Sink A B C D Vo = Current_cost V.cost < Vi.cost V.cost = Vi.cost i = i +1 Trace (i) Đúng Sai Vi

Hình 4-11 Ví dụ lược đồ giải thuật giá tối thiểu

Ví dụ, Source A, B và C có giá tối thiểu lần lượt là 200, 90, 100. Source phát REP tới sink theo đường đi tối ưu. Khi một nút quảng bá gói tin, nó chứa một ngân sách tính từ nguồn tới nó. Giả sử nút A phát quảng bá (có giá 110 cả giá quảng bá), sau khi B, C nghe đươc gói tin cả hai đều chắc chắn là gần sink hơn A. Một nút có giá lớn hơn sẽ bị bỏ, tính 200 -110 = 90, khi đó B sẽ phát REP vì 90 bằng với giá của nó OLb, còn C bị bỏ vì 90 < OLc.

Qua đây ta được một đường đi tối ưu là: Source A  Bsink.

Để thực hiện được điều minh họa trên thì pha thứ nhất phải thiết lập cho trường giá thông qua giải thuật phân cấp sau:

THUẬT TOÁN

Sự kiện: nút N nhận được gói tin ADV từ nút M

if(Ln> Lm + Cn,m) {

Ln = Lm + Cn,m

Sau đó thiết lập biến đếm thời gian = A*Cn,m (gọi là biến thời gian hạn định)

}

Sự kiện: nếu N đạt đến thời gian hạn định thì nó phát gói tin ADV có chứa Ln

Ln, Lm: là giá của node N, M so với nút cơ sở sink

Cn,m: là giá giữa hai liên kết nút N và M

A: là hệ số thời gian thực nghiệm

Hình 4-12 Lớp setting bổ sung

Ý nghĩa và tên gọi các trường trong lớp setting bổ sung:

Trường ID: là định danh của nút mạng, dùng cho mục đích hiển thị hoạt động của từng nút mạng và theo vết của gói tin.

− Trường COST: là giá của gói tin, dùng cho mục đích quảng bá giá và xử lý chuyển tiếp gói tin về nút cơ sở.

Trường HS: là hiệu suất, dùng đánh giá một phần hiệu suất gửi tin của nút cơ sở và nút mạng. Trường này chứa số thứ tự của gói tin mà nó đã gửi.

Trường TRACERT: là theo vết, chứa thông tin về những nút mạng mà gói tin đã đi qua.

Hình 4-13 Thuật toán tại nút cơ sở

Hoạt động thuật toán ở nút cở sở trong đó: Nr là một hằng số cho trước mô tả tỉ lệ giữa số lần nhận gói tin và số lần quảng bá giá, trong thử nghiệm mô tả ở đây Nr chọn bằng 500 (giá trị thực nghiệm).

Hình 4-14 Mô hình thay đổi bổ sung

Một phần của tài liệu Tái kỹ nghệ trong phát triển phần mềm hướng đối tượng (Trang 69)

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

(95 trang)