Nguyễn Văn Thanh



tải về 296.99 Kb.
trang10/11
Chuyển đổi dữ liệu05.09.2016
Kích296.99 Kb.
#31705
1   2   3   4   5   6   7   8   9   10   11

4.5. Kết luận


Chương này đã trình bày bài toán kiểm chứng dựa trên AST gồm các phần sau.

Giới thiệu cấu trúc một mã nguồn được tổ chức dưới dạng cây như thế nào? Sâu đó khái quát thuật toán sẽ được triển khai. Bằng việc nhìn được cấu trúc mã nguồn qua cây cú pháp trừu tượng – AST , nội dung của chương tập trung vào việc phân tích thuật toán duyệt cây.

Không chỉ khái quát hóa thuật toán mà còn đưa ra được những khía cạnh khác liên quan sâu hơn đến thuật toán cả về mặt lý thuyết lẫn thực tiễn để có một cái nhìn sâu hơn và toàn diện hơn về thuật toán đang xây dựng.

Chúng tôi đã đưa ra ứng dụng của thuật toán trong một bài toán cụ thể. Cách tiếp cận này thuật toán được nhìn nhận trực quan hơn và cụ thể hơn. Với bài toán được xây dựng đáp ứng đầy đủ những gì mà thuật toán muốn đạt được trong thực tiễn.

Trong tương lai, thuật toán được mở rộng với nhiều ngôn ngữ hơn và nhiều dạng mã nguồn hơn.

CHƯƠNG 5. THỰC NGHIỆM


Trong chương này sẽ xây dựng ứng dụng cụ thể với bài toán được phân tích ở trên gồm có việc cài đặt, xây dựng và triển khai của bài toán.

5.1. Phạm vi ứng dụng


Trong khóa luận, chỉ đưa ra một ứng dụng nhỏ để thể hiện được mặt công nghệ của bài toán kiểm chứng. Ứng dụng được chia làm các nhiệm vụ chính sau:

  • Xây dựng đoạn mã ví dụ để kiểm chứng với một file chứa mô hình của RBAC0.

  • Xây dựng chương trình thể hiện thuật toán kiểm chứng trên môi trường Eclipse (Với plug-in là công cụ CDT)

5.2. Thiết kế ứng dụng


Cài đặt chương trình:

Bài toán được xây dựng dựa trên ngôn ngữ Java (Ngôn ngữ độc lập nền), vì thế sau khi xây dựng có thể triển khai trên môi trường Window, Linux, Unix … Để xây dựng và triển khai bài toán ta cần một số chương trình sau:



Cài đặt môi trường chạy cho Java: Cài đặt JDK-1.6 và thiết lập biến môi trường JAVA_HOME: “C:\Program Files\Java\jdk1.6.0\bin”.

Cài đặt bộ biên dịch C/C++: MinGW

Download MinGW sau đó cài đặt tự động vào C:\MinGW



Cài đặt Eclipse: dùng Eclipse (GADIMEDE)

Cài đặt công cụ CDT: dùng công cụ CDT 6.0

Sau khi cài đặt thành công các thành phần trên sẽ có kết quả với StartPage của Eclipse như sau:





Hình 5.1: Giao diện StartPage sau khi cài CDT

Với quá trình cài đặt thêm công cụ CDT vào Eclipse sẽ có một công cụ để phát triển với C/C++. Đặt biệt sau khi cài đặt thành công công cụ này có thêm thành phần DOM AST là thành phần quan trọng nhất của khóa luận.

Cấu trúc của thành phần DOM AST như sau:



Hình 5.2: Cấu trúc DOM AST

5.3. Xây dựng và triển khai bài toán

5.3.1. Xây dựng chương trình chính


Chương trình chính viết trên Eclipse với ngôn ngữ Java. Do đây là bài toán rất nhỏ nên chỉ thao tác với hai file chính trong Project VisitorAST:

  • FindAExpressionVisitor.Java” (Thực hiện việc visitor các Expression trong mã nguồn)

  • GetProject.Java” (Thực hiện hầu hết các thao tác xử lý và chạy chương trình).

Để thực hiện được thuật toán cần phải thực hiện rất nhiều bước.

Bước 1: Xác định được Project cần kiểm tra. Sau đó, mới bắt đầu thực hiện việc xử lý với Project đó

Bước 2: Duyệt một node trong các thành phần của cây. Với công cụ CDT, Eclipse cung cấp một thành phần là DOM AST nhưng vấn đề quan trọng là phải nắm bắt được và thực hiện được việc duyệt được AST. Công cụ này cung cấp rất nhiều API để có thể thực hiện việc duyệt cây này.

Ví dụ để duyệt các Expression : shouldVisitExpressions = true ;

và hàm override hàm visit của nó

@Override

public int visit(IASTExpression myExpression)

Tất cả những công việc này chúng tôi sẽ triển khai ở một file chứa class riêng để thực hiện. Công việc thực hiện ở file “GetProject.Java” chỉ là gọi các đối tượng của class này và thực hiện câu lệnh accept để bắt đầu tiến hành duyệt các Expression từ trên xuống trong file mã nguồn.





Bước 3: Thực hiện so sánh các Expression này với các Expression của các Statement đang xét (ví dụ: ifStatement, whileStatement …).

Vì có nhiều Statement cần xét nên cần xây dựng một phương thức thể hiện tính đa hình của ngôn ngữ lập trình hướng đối tượng.



checkRBAC(ExpressionFunction, object, functionCall)

Phương thức này xử lý các trường hợp của Statement và cho kết quả là true hay false. Kết quả trả về này rất quan trọng trong quá trình kiểm tra các điều kiện của mã nguồn tương ứng với các mô hình RBAC0.

Để hiển thị được kết quả sau khi kiểm tra có phương thức:

treatFunction(functionName, functionCall)

Phương thức này sẽ hiển thị các dòng thông báo sau khi kiểm tra thông báo lỗi cũng thấy rất rõ kết quả.


5.3.2. Xây dựng chương trình kiểm tra:


Chương trình kiểm tra khá đơn giản là một Project C/C++ tên RBACTest chứa file RBACTest.CPP. File này có nhiệm vụ xây dựng một chương trình thể hiện được mô hình RBAC0 với các biểu thức điều kiện và các hàm tác động đến “dữ liệu nhạy cảm” như đã quy định sẵn trong chương trình chính. Với mục đích chỉ thể hiện về mặt công nghệ nên mã nguồn được xây dựng trước (hard-code) nếu để phát triển lên một cấp cao hơn trong tương lai phải thực hiện với những đoạn mã nguồn không được quy định sẵn và được phát triển với hầu hết các mã nguồn đưa vào.

Chương trình kiểm tra nhất thiết phải là “runtime-EclipseApplication” để có thể chạy được chương trình. Với đầu vào là Project RBACTest. Giao diện của chương trình Test như sau:





Hình 5.3: Giao diện chương trình Test

Với giao diện này khi chạy, sẽ có kết quả hiển thị ở màn hình console của chương trình chính. Khi chạy thành công sẽ hiển thị thông báo như sau:





Hình 5.4: Giao diện khi chạy Test thành công

Và kết quả nhận được ở chương trình chính như sau:





Hình 5.5: Giao diện kết quả


tải về 296.99 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   10   11




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương