Áp dụng ngôn ngữ lập trình maude việc phát triển phần mềm cho hệ thống nhúng và thời gian thực

119 156 0
Áp dụng ngôn ngữ lập trình maude việc phát triển phần mềm cho hệ thống nhúng và thời gian thực

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI NGUYỄN TIẾN THÀNH ÁP DỤNG NGÔN NGỮ LẬP TRÌNH MAUDE THEO PHƯƠNG PHÁP HÌNH THỨC VÀO VIỆC PHÁT TRIỂN PHẦN MỀM CHO HỆ THỐNG NHÚNG VÀ THỜI GIAN THỰC Chuyên ngành : Công nghệ thông tin LUẬN VĂN THẠC SĨ KHOA HỌC NGÀNH CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS Huỳnh Quyết Thắng Hà Nội – Năm 2011 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực MỤC LỤC MỤC LỤC DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG .7 DANH MỤC HÌNH VẼ LỜI CAM ĐOAN MỞ ĐẦU Lý chọn đề tài Lịch sử tìm hiểu Mục đích tìm hiểu, đối tượng, phạm vi tìm hiểu luận văn 10 3.1 Mục đích tìm hiểu 10 3.2 Đối tượng tìm hiểu 10 3.3 Phạm vi tìm hiểu 10 Các luận điểm đóng góp 11 Phương pháp nghiên cứu 11 CHƯƠNG I: TỔNG QUAN 13 1.1 Các hệ thống nhúng thời gian thực 13 1.1.1 Hệ thống nhúng 13 1.1.2 Phần mềm nhúng 15 1.1.3 Một số đặc thù yêu cầu phần mềm nhúng 17 1.1.4 Mô phỏng, giả lập, biên dịch nhúng gỡ rối nhúng 19 1.1.5 Tìm hiểu dự án nhúng có 22 1.2 Phương pháp hình thức 24 1.2.1 Tổng quan phương pháp hình thức 24 1.2.2 Nguyên nhân .27 -2- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực 1.3 Ngôn ngữ lập trình Maude 28 1.3.1 Tổng quan Maude 28 1.3.2 Nguyên nhân chọn lựa 31 CHƯƠNG II: LẬP TRÌNH PHƯƠNG TRÌNH 33 2.1 Nền tảng đại số 33 2.1.1 Đại số đơn tập hợp 33 2.1.2 Đại số đa tập hợp 34 2.1.3 Tiên đề hóa phương trình 35 2.1.4 Áp dụng phương trình: 38 2.2 Thuật ngữ viết lại 39 2.2.1 Ví dụ .39 2.2.2 Tính dừng 40 2.2.3 Tính hội tụ 41 2.2.4 Tính kết hợp tính giao hoán .41 2.3 Cơ Maude 42 2.3.1 Ví dụ .42 2.3.2 Tái sử dụng thành phần .45 2.3.3 Tính kết hợp tính giao hoán .46 2.3.4 Cài đặt sử dụng Maude 47 2.4 Tập phương trình thành viên .48 2.4.1 Tập 49 2.4.2 Tiên đề thành viên 51 2.5 Lập trình hướng đối tượng 52 2.5.1 Lớp đối tượng 52 2.5.2 Kế thừa đa hình 54 2.5.3 Design Pattern .56 2.6 Kiểm chứng mô hình .58 -3- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực 2.6.1 Tính bất biến 59 2.6.2 Kiểm chứng mô hình với tính bất biến 59 2.6.3 Kiểm chứng đường biên: 61 2.6.4 Trừu tượng hóa mô hình .62 2.6.5 Bài toán đối sánh văn 63 2.6.6 Phát biểu lại toán 65 2.6.7 Kiểm chứng mô hình chứng minh thuật toán 67 2.7 Logic thời gian tuyến tính .70 2.7.1 Cơ LTL 70 2.7.2 Đối sánh văn thời gian thực 73 CHƯƠNG III: PHÁT TRIỂN ỨNG DỤNG NHÚNG 75 3.1 Xây dựng giải pháp đối sánh văn cho phần mềm 75 3.1.1 Phát biểu toán 75 3.1.2 Giới thiệu link-4.1b .75 3.1.3 Yêu cầu cấu trúc liệu 76 3.1.4 Sử dụng Visitor Pattern 81 3.2 Thiết kế phần mềm 87 3.2.1 Quyết định chiến lược thiết kế .88 3.2.2 Quyết định chiến thuật thiết kế 93 3.2.3 Quyết định cài đặt 93 3.3 Phát triển phần mềm Listen English on PDA N770 93 3.3.1 Các công cụ hỗ trợ cho Maemo SDK 94 3.3.2 Những ý trình sử dụng máy Nokia N770 96 CHƯƠNG IV: KẾT QUẢ VÀ BÀN LUẬN 98 4.1 Kết 98 4.2 Bàn luận 100 KẾT LUẬN VÀ KIẾN NGHỊ 102 -4- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Kết luận 102 Kiến nghị 102 TÀI LIỆU THAM KHẢO 104 PHỤ LỤC 105 A Cài đặt giả lập cho Nokia N770 máy PC 105 B Nâng quyền người dùng thiết bị Nokia N770 110 C Mã nguồn Maude minh họa mẫu thiết kế Visitor Pattern: 112 -5- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Chữ viết tắt Ý nghĩa API Application Programmable Interface - Giao diện lập trình ứng dụng CMU Carnegie Mellon University - Đại học Carnegie Mellon CPU Central Processing Unit - Đơn vị xử lý trung tâm FPGA Field-programmable gate array - Vi mạch dùng cấu trúc mảng phần tử logic mà người dùng lập trình GCC GNU Compiler Collections - Tập hợp trình biên dịch GNU GPL GNU General Public License - Giấy phép Công cộng GNU HdS Hardware Dependent Software - Phần mềm phụ thuộc phần cứng J2ME Java 2th Mobile Edition - Java, phiên thứ hai dành cho di động LTL Linear Temporal Logic - Logic thời gian tuyến tính NASA National Aeronautics and Space Administration - Cục Quản trị Hàng không Không gian Quốc gia PC Personal Computer - Máy vi tính cá nhân PDA Personal Digital Assistant - Thiết bị trợ giúp số cá nhân PVS Prototype Verification System - Hệ thống xác thực mẫu thử UML United Modeling Language - Ngôn ngữ mô hình hóa thống RTOS Real Time Operating System - Hệ điều hành thời gian thực -6- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực DANH MỤC CÁC BẢNG Bảng 1.1: So sánh hệ thống nhúng máy tính thông thường (Desktop) .15 Bảng 2.1 : Lời bình luận từ đoạn văn 64 Bảng 2.2: Lời bình luận từ đứng đầu đoạn văn đứng cuối đoạn văn .64 Bảng 3.1 Các thuộc tính lớp Element 78 Bảng 3.2: Các thuộc tính lớp IToken 79 Bảng 3.3: Các phương thức lớp IToken 80 Bảng 3.4: Các định thiết kế phần mềm 88 Bảng 4.1: So sánh nội dung văn chuẩn văn tự tạo 98 DANH MỤC HÌNH VẼ Hình 2.1: Dạng đệ quy thuật toán 68 Hình 2.2: Biểu đồ hoạt động hai tiến trình p, q theo thời gian 71 Hình 2.3: Biểu đồ hoạt động tiến trình p tiến trình N p 71 Hình 2.4: Biểu đồ hoạt động tiến trình p, q tiến trình p U q .72 Hình 2.5: Biểu đồ hoạt động tiến trình p tiến trình p 72 Hình 3.1: Cách thức sử dụng link-4.1b: dùng chương trình C++ để chạy công cụ 76 Hình 3.2: Mô hình mẫu thiết kế Visitor Pattern 82 Hình 3.3: Visitor lớp .83 Hình 3.4: Cấu trúc mẫu thiết kế Visitor Pattern 84 Hình 3.5: Cấu trúc ITokenFactory 84 Hình 3.7: Kiểu dáng kiến trúc đường ống lọc 89 Hình 3.8: Kiến trúc Parse theo ngôn ngữ ADL Acme 90 Hình 3.9: Bên lọc “Init_Tokens” 90 Hình 3.10: Bên lọc “Arrangement_Tokens” 91 Hình 3.11: Bên lọc “Choose_Tokens” 92 Hình 3.12: Bên lọc Assign_Tokens .92 -7- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực LỜI CAM ĐOAN Tôi xin cam đoan luận văn "Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển hệ thống nhúng thời gian thực" thân thực hướng dẫn Phó giáo sư, Tiến sĩ Huỳnh Quyết Thắng Viện Công nghệ thông tin Truyền thông - Trường Đại học Bách khoa Hà Nội, không chép nguyên văn luận văn công bố Nội dung luận văn có tham khảo sử dụng tài liệu, thông tin đăng tải tác phẩm, tạp chí trang web theo danh mục tài liệu tham khảo luận văn Các kết chạy thử nghiệm số liệu trung thực Tác giả luận văn Nguyễn Tiến Thành -8- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực MỞ ĐẦU Lý chọn đề tài Trong năm gần đây, giới, phương pháp hình thức dần áp dụng vào việc phát triển phần mềm nhúng - vốn số đề tài hấp dẫn với đơn vị nghiên cứu, công ty liên quan đến truyền thông, công nghiệp hãng phát triển phần mềm toàn giới Với mong muốn tìm hiểu lý thuyết, kỹ thuật công nghệ để xây dựng ứng dụng theo phương pháp đó, chọn đề tài cho luận văn là: “Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm cho hệ thống nhúng thời gian thực” Lịch sử tìm hiểu Để khắc phục khó khăn việc phát triển phần mềm, cụ thể đặc tả yêu cầu phần mềm kỹ thuật đánh giá chất lượng phần mềm, phương pháp hình thức đời áp dụng vào việc phát triển phần mềm nói chung phần mềm nhúng nói riêng: Ngay từ năm 1988, Dijkstra có tiên đoán việc phát triển phần mềm phương pháp hình thức sách “The Cruelty of Really Teaching Computing Science” Tác giả Mike Holloway làm việc nhóm phương pháp hình thức NASA (từ năm 1992) có tổng kết việc áp dụng phương pháp hình thức phát triển phần mềm báo: “Why engineers should consider formal methods” vào tháng 10 năm 1997 Năm 1996, nhóm tác giả Manuel Clavel José Meseguer công bố tài liệu Maude Đến năm 2000, tác giả Olveczky công bố tài liệu đặc tả phân tích hệ thống thời gian thực: “Specification and Analysis of Real-Time and Hybrid Systems in Rewriting Logic” Năm 2002, tác giả Eker José Meseguer công bố tài liệu logic thời gian tuyến tính với Maude: “The Maude LTL Model Checker” Tiếp thu thành tựu -9- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực nhà khoa học trước, PGS.TS Huỳnh Quyết Thắng hướng dẫn, cố gắng thực đề tài: "Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm cho hệ thống nhúng thời gian thực" Mục đích tìm hiểu, đối tượng, phạm vi tìm hiểu luận văn 3.1 Mục đích tìm hiểu Muốn xây dựng phần mềm tốt dành cho thiết bị nhúng, việc phải có nguồn nhân lực thành thạo ngôn ngữ lập trình nhúng phải tuân thủ theo quy trình phát triển phần mềm nhúng, dự án phát triển cần phải áp dụng thành tựu ngành công nghệ phần mềm Việc phát triển phần mềm nhúng, dù tiến hành thiết bị thời gian thực, có đặc thù riêng mà lập trình viên quen lập trình máy vi tính bất ngờ gặp phải vấn đề Trong phạm vi luận văn, xin trình bày trình xây dựng phần mềm nhúng cho thiết bị PDA Nokia N770 Việc xây dựng ứng dụng cho thiết bị áp dụng lý thuyết kiến trúc phần mềm, lý thuyết đặc tả yêu cầu kiểm chứng mô hình tuân thủ theo quy trình phát triển phần mềm nhúng 3.2 Đối tượng tìm hiểu Luận văn tập trung tìm hiểu vấn đề phương pháp hình thức; lý thuyết đại số trừu tượng; công nghệ, giải pháp, công cụ Maude vào việc xây dựng mô hình toán học cho ứng dụng phần mềm cụ thể Với mong muốn giúp đẩy nhanh trình học tiếng Anh, luận văn có công sức vào vấn đề đối sánh văn đối sánh văn thời gian thực Do giới hạn nên luận văn phát triển phần mềm đối sánh văn cho thiết bị nhúng Nokia N770 3.3 Phạm vi tìm hiểu Trên sở mục đích tìm hiểu đối tượng tìm hiểu, luận văn xác định phạm vi tìm hiểu phương pháp hình thức vấn đề nguồn gốc xuất hiện, sở lý thuyết phạm vi áp dụng phương pháp hình thức vào việc phát triển phần mềm nói chung Với ngôn ngữ lập trình Maude, luận văn tập trung vào tìm hiểu vấn đề -10- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực PHỤ LỤC A Cài đặt giả lập cho Nokia N770 máy PC Tiến hành cài đặt giả lập Nokia N770 cho máy PC (máy PC cài hệ điều hành Fedora 7) Đề nghị: nên cài đặt giả lập cho máy PC cài hệ điều hành Debian Ubuntoo Yêu cầu cấu hình cho máy PC: + Bộ xử lý Intel (x86), tối thiểu 500 Mhz + 256 MB RAM + GB trống ổ cứng + Bản phân phối Linux (Đề nghị Debian Ubuntu) Cài đặt gói phần mềm sau + Scratchbox: Bộ giả lập cho phép xây dựng ứng dụng cho thiết bị nhúng tảng máy PC + Maemo SDK: tải miễn phí Để cài đặt phần mềm này, bạn phải tải mạng gói phần mềm phụ thuộc sau đây: + scratchbox-core-1.0.7-i386.tar.gz + scratchbox-libs-1.0.7-i386.tar.gz + scratchbox-toolchain-cs2005q3.2-glibc-arm-1.0.5-i386.tar.gz + scratchbox-toolchain-cs2005q3.2-glibc-i386-1.0.5-i386.tar.gz + scratchbox-devkit-debian-1.0.6-i386.tar.gz + scratchbox-devkit-cputransp-1.0.1-i386.tar.gz + Maemo_Dev_Platform_v2.2_i386-rootstrap.tgz + Maemo_Dev_Platform_v2.2_armel-rootstrap.tgz Sau tiến hành cài đặt sau: Cài đặt Scratchbox (bộ giả lập): Đăng nhập vào chế độ dòng lệnh để chuẩn bị cài đặt: Sử dụng chế độ dòng lệnh Linux để thực lệnh cài đặt phù hợp - 105 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Nhập vào hình dòng lệnh lệnh sau đây: Phải chắn việc cài đặt không xảy lỗi Chú ý: thời điểm bạn cần cài đặt gói phần mềm thôi, số gói khác dành vào lúc sau Tiếp tục nhập vào hình dòng lệnh lệnh sau: Sau nhập vào lệnh sau, thay ‘username’ tên người dùng tùy bạn Giả sử bạn muốn dùng với tên andy80: Sau tiến hành khởi động lại máy, đăng nhập vào máy mở lại cửa sổ dòng lệnh Với hệ điều hành Fedora 7, nhập thêm lệnh sau: # echo > /proc/sys/vm/vdso_enabled Lệnh thiết lập biến môi trường vdso_enabled giá trị - 106 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Ở hệ điều hành khác Linux Debian Ubuntoo, giá trị mặc định với Fedora 7, giá trị rỗng (null) Khởi động Scratchbox: Sau đăng nhập vào Scratchbox, tạo file bash_profile có nội dung sau: Thoát khỏi Scratchbox hình dòng lệnh, gõ vào lệnh sau Lệnh cho phép Scratchbox kích hoạt lúc khởi động máy Cài đặt Maemo SDK: Đặt hai gói phần mềm Maemo_Dev_Platform_v2.2_i386-rootstrap.tgz Maemo_Dev_Platform_v2.2_armel-rootstrap.tgz vào địa chỉ: /scratchbox/packages (/scratchbox thư mục cài đặt scratchbox) Cài đặt Xephyr: Tạo file start-xephyr.sh có nội dung sau: Chuyển file thành file thực thi lệnh: - 107 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Chạy file lệnh sau đây: Sau thực lệnh này, xuất cửa sổ sau đây: Đăng nhập lại vào Scratchbox: Thực lệnh sau: Và lệnh sau: Khi hình xuất cửa sổ hình máy tính: - 108 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Đã cài đặt thành công giả lập cho Nokia N770 Một số giao diện chạy giả lập: - 109 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Một số giao diện giả lập B Nâng quyền người dùng thiết bị Nokia N770 Thiết bị Nokia N770 sản xuất với mục đích dành cho người dùng bình thường Nếu muốn cài đặt để trở thành thiết bị hỗ trợ lập trình, cần phải cài thay đổi không thông số môi trường Maemo thiết bị Điều thực với người quản trị hệ thống (root) thiết bị người dùng bình thường Do cần phải tăng quyền người dùng bình thường để thành người quản trị (root) hệ thống Tuy điều nguy hiểm, việc làm nâng quyền người dùng thành người quản trị hệ thống thực chất hành động HACK thiết bị Nhưng để tạo điều kiện cho cộng đồng mã nguồn mở tham gia lập trình cho Nokia N770, mạng có xuất tài liệu hướng dẫn HACK dòng máy Với dòng máy Nokia N770 cài đặt hệ điều hành Maemo phiên năm 2006 Bước 1: cài đặt phần mềm XTerm Dropbear Hai phần mềm cài đặt cách dùng thiết bị Nokia N770 truy cập Internet để tải cài đặt copy vào thiết bị cách kết nối với máy vi tính thông qua cổng USB - 110 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Sau cài đặt xong, xuất X Terminal hình thiết bị nhúng sau: Khi bật lên, XTerm có giao diện dạng sau: - 111 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Bước 2: Thực lệnh sau: Nhập lệnh sau vào cửa sổ dòng lệnh Bước 3: bỏ chế độ yêu cầu người dùng phải nhập mật root Mở file /usr/sbin/gainroot Chỉnh sửa dòng lệnh sau Chuyển thành dòng có nội dung sau: Sau chạy file /usr/sbin/gainroot lệnh Thiết lập mật root tự động nhập cho người dùng (user) Sau thực tiếp hai lệnh sau: Và lệnh sau: Thực việc gửi mật root đến người dùng (user) Như kể từ trở đi, để đăng nhập với quyền người quản trị hệ thống, cần nhập lệnh sau: C Mã nguồn Maude minh họa mẫu thiết kế Visitor Pattern: - 112 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Với yêu cầu luận văn, sử dụng ngôn ngữ Maude việc thực hóa Visitor Pattern thông qua việc cài đặt lớp thay Interface Java (Maude hỗ trợ đa thừa kế) Về thiết kế lớp (Object Module) sau: Có hai lớp Element Visitor Có lớp phục vụ mục đích tạo đối tượng Car, Body, Engine Wheel Lớp PrintVisitor kế thừa lớp Visitor thực cài đặt phương thức visit tương thích với đối tượng Car, Body, Engine, Wheel Việc xây dựng mô tả cụ thể thông qua mã nguồn kèm -File Visitor.maude (omod VISITOR is protecting QID subsort Qid < Oid class Visitor msg visit : Oid -> Msg endom) -File Element.maude (omod ELEMENT is protecting QID subsort Qid < Oid class Element msg accept : Oid -> Msg endom) -File Wheel.maude (omod WHEEL is including ELEMENT including VISITOR protecting QID protecting STRING subsort Qid < Oid class Wheel | name : String , status : String subclass Wheel < Element vars A P : Oid vars N M : String - 113 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực rl [accept] : accept(A) < A : Wheel | name : N , status : M > => < A : Wheel | name : N , status : "Visitting Wheel" > visit(A) endom) -File Engine.maude (omod ENGINE is including ELEMENT including VISITOR protecting QID protecting STRING subsort Qid < Oid class Engine | status : String subclass Engine < Element var N : String vars E P : Oid rl [accept] : accept(E) < E : Engine | status : N > => < E : Engine | status : "Visitting Engine" > visit(E) endom) -File Body.maude (omod BODY is including ELEMENT including VISITOR protecting QID protecting STRING subsort Qid < Oid class Body | status : String subclass Body < Element var A : Oid var N : String - 114 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực rl [accept] : accept(A) < A : Body | status : N > => < A : Body | status : "Visitting Body" > visit(A) endom) -Car.maude (omod CAR is including ELEMENT including VISITOR protecting QID protecting STRING subsort Qid < Oid class Car | engine : Oid , body : Oid , wheel : Oid , status : String subclass Car < Element vars E B W C P : Oid var N : String rl [accept] : accept(C) < C : Car | engine : E , body : B , wheel : W , status : N > => < C : Car | engine : E , body : B , wheel : W , status : "Visitting Car" > visit(C) accept(W) accept(B) accept(E) endom) -PrintVisitor.maude (omod PRINTVISITOR is including VISITOR including BODY including ENGINE including WHEEL including CAR protecting QID protecting STRING protecting INT - 115 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực subsort Qid < Oid class PrintVisitor subclass PrintVisitor < Visitor vars N M : String vars B E P C W : Oid rl [visit] : visit(B) < B : Body | status : N > => < B : Body | status : "Visitting Body" > rl [visit] : visit(E) < E : Engine | status : N > => < E : Engine | status : "Visiting Engine " > rl [visit] : visit(W) < W : Wheel | name : N , status : M > => < W : Wheel | name : N , status : "Visitting Wheel" > rl [visit] : visit(C) < C : Car | engine : E , body : B , wheel : W , status : N > => < C : Car | engine : E , body : B , wheel : W , status : "Visiting Car" > endom) -Main.maude (omod MAIN is including ELEMENT including CAR including PRINTVISITOR protecting QID protecting STRING subsort Qid < Oid class Main | name : String msg main : Oid -> Msg - 116 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực vars C B E W : Oid var N : String rl [main] : main(C) < C : Car | engine : E , body : B , wheel : W , status : N > => < C : Car | engine : E , body : B , wheel : W , status : "Visitting Car" > accept(C) endom) Khi chạy chương trình: Cho đến thời điểm luận văn tiến hành giới thiệu qua khái niệm quan trọng mà sử dụng trình thực hiện: Một sử dụng Full Maude làm công cụ viết chương trình Thứ hai cài đặt môi trường thực thi Cuối dựa Visitor Pattern việc thiết kế, xây dựng ứng dụng Project gồm Object Module lưu file Visitor.maude, Element.maude, Car.maude, Body.maude, Wheel.maude, Engine.maude Để chạy chương trình truớc tiên cần khởi động Maude Khởi động Maude /maude.linux full-maude.maude Để thực thi file maude cần phải thực hiên load file có liên quan đến Trong project, thực thi load file theo thứ tự sau load Visitor.maude load Element.maude load Body.maude load Engine.maude load Wheel.maude load PrintVisitor.maude load Main.maude Trong Maude cách chạy chương trinh khác so với ngôn ngữ khác Chạy thông điệp accept cho đối tượng Wheel (sau load PrintVisitor.maude) Maude> (rew < 'A-001 : Wheel | name : "Banh" , status : "Wheel" accept('A-001) ) ->Kết rewrites: 3116 in 12ms cpu (13ms real) (259666 rewrites/second) rewrite in PRINTVISITOR : < 'A-001 : Wheel | name : "Banh",status : "Wheel" > accept('A-001) result Object : - 117 > Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực < 'A-001 : Wheel | name : "Banh",status : "Visitting Wheel" > Chạy thông điệp accept cho đối tượng Body (sau load PrintVisitor.maude) Maude> (rew < 'A-001 : Body | status : "Body" > accept('A-001) ) -> Kết rewrites: 2656 in 8ms cpu (5ms real) (331958 rewrites/second) rewrite in PRINTVISITOR : < 'A-001 : Body | status : "Body" > accept('A-001) result Object : < 'A-001 : Body | status : "Visitting Body" > Chạy thông điệp accept cho đối tượng Engine (sau load PrintVisitor.maude) Maude> (rew < 'A-001 : Engine | status : "Engine" > accept('A-001) ) -> Kết rewrites: 2656 in 4ms cpu (5ms real) (664000 rewrites/second) rewrite in PRINTVISITOR : < 'A-001 : Engine | status : "Engine" > accept('A-001) result Object : < 'A-001 : Engine | status : "Visiting Engine " > Chạy thông điệp accept cho đối tượng Car (sau load PrintVisitor.maude) Maude> (rew < 'A-001 : Engine | status : "Engine" > < 'A-002 : Body | status : "Body" > < 'A-003 : Wheel | name : "Banh" , status : "Wheel" > < 'A-004 : Car | engine : 'A-001 , body : 'A-002 , wheel : 'A-003 , status : "Car" > accept('A-004) ) -> Kết rewrites: 3514 in 12ms cpu (10ms real) (292808 rewrites/second) rewrite in PRINTVISITOR : < 'A-001 : Engine | status : "Engine" > < 'A-002 : Body | status : "Body" > < 'A-003 : Wheel | name : "Banh",status : "Wheel" > < 'A-004 : Car | engine : 'A-001,body : 'A-002,wheel : 'A-003,status : "Car" > accept('A004) result Configuration : < 'A-001 : Engine | status : "Visiting Engine " > < 'A-002 : Body | status : "Visitting Body" > < 'A-003 : Wheel | name : "Banh",status : "Visitting Wheel" > < 'A-004 : Car | body : 'A-002,engine : 'A-001,status : "Visiting Car",wheel : 'A-003 > - 118 Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Chạy thông điệp main cho toàn chương trình (sau load file Main.maude) Maude> (rew < 'A-001 : Engine | status : "Engine" > < 'A-002 : Body | status : "Body" > < 'A-003 : Wheel | name : "Banh" , status : "Wheel" > < 'A-004 : Car | engine : 'A-001 , body : 'A-002 , wheel : 'A-003 , status : "Car" > main('A-004) ) -> Kết rewrites: 4285 in 16ms cpu (19ms real) (267795 rewrites/second) rewrite in MAIN : < 'A-001 : Engine | status : "Engine" > < 'A-002 : Body | status : "Body" > < 'A-003 : Wheel | name : "Banh",status : "Wheel" > < 'A-004 : Car | engine : 'A-001,body : 'A-002,wheel : 'A-003,status : "Car" > main('A-004) result Configuration : < 'A-001 : Engine | status : "Visiting Engine " > < 'A-002 : Body | status : "Visitting Body" > < 'A-003 : Wheel | name : "Banh",status : "Visitting Wheel" > < 'A-004 : Car | body : 'A-002,engine : 'A-001,status : "Visiting Car",wheel : 'A-003 > - 119 ... .92 -7- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực LỜI CAM ĐOAN Tôi xin cam đoan luận văn "Áp dụng ngôn ngữ lập trình Maude theo... thứ hai tạo mẫu hình cho ngôn ngữ lập trình (ở phần mở rộng -30- Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm nhúng thời gian thực Maude để đối phó với... nghệ để xây dựng ứng dụng theo phương pháp đó, chọn đề tài cho luận văn là: Áp dụng ngôn ngữ lập trình Maude theo phương pháp hình thức vào việc phát triển phần mềm cho hệ thống nhúng thời gian

Ngày đăng: 27/07/2017, 20:24

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT

  • DANH MỤC CÁC BẢNG

  • DANH MỤC HÌNH VẼ

  • LỜI CAM ĐOAN

  • MỞ ĐẦU

  • CHƯƠNG I: TỔNG QUAN

  • CHƯƠNG II: LẬP TRÌNH PHƯƠNG TRÌNH

  • CHƯƠNG III: PHÁT TRIỂN ỨNG DỤNG NHÚNG

  • CHƯƠNG IV: KẾT QUẢ VÀ BÀN LUẬN

  • KẾT LUẬN VÀ KIẾN NGHỊ

  • TÀI LIỆU THAM KHẢO

  • PHỤ LỤC

Tài liệu cùng người dùng

Tài liệu liên quan