kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển

63 1.4K 0
kỹ thuật phân tích mã nguồn và xây dựng ứng dụng chuyển đổi mã nguồn java sang cấu trúc điều khiển

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN KỸ THUẬT PHÂN TÍCH MÃ NGUỒN VÀ XÂY DỰNG ỨNG DỤNG CHUYỂN ĐỔI MÃ NGUỒN JAVA SANG CẤU TRÚC ĐIỀU KHIỂN Sinh viên thực hiện : Vũ Đức Minh Lớp CNPM- K51 Giáo viên hướng dẫn: PGS.TS Huỳnh Quyết Thắng HÀ NỘI 6-2011 Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 2 PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1. Thông tin về sinh viên Họ và tên sinh viên: Vũ Đức Minh. Điện thoại liên lạc 01687954897 Email: minhvd88@gmail.com Lớp: CNPM-K51 Hệ đào tạo: Đại học chính quy Đồ án tốt nghiệp được thực hiện tại: Viện công nghệ thông tin và truyền thông Thời gian làm ĐATN: Từ ngày 15 / 01 /2011 đến 28 / 05 /2011 2. Mục đích nội dung của ĐATN Tìm hiểu về phân tích mã nguồn. Ứng dụng làm phần mềm chuyển đổi mã nguồn ngôn ngữ java sang flow chart 3. Các nhiệm vụ cụ thể của ĐATN • Tìm hiểu lý thuyết phân tích tĩnh chương trình • Tìm hiểu cấu trúc hóa chương trình sử dụng cây AST (Astract Syntax Tree) • Ứng dụng lý thuyết phân tích chương trình xây dựng phần mềm chuyển đổi mã nguồn Java thành sơ đồ khối 4. Lời cam đoan của sinh viên: Tôi – Vũ Đức Minh - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của và PGS.TS. Huỳnh Quyết Thắng Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác. Hà Nội, ngày tháng năm Tác giả ĐATN Vũ Đức Minh 5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ: Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 3 Hà Nội, ngày tháng năm Giáo viên hướng dẫn PGS.TS Huỳnh Quyết Thắng Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 4 MỤC LỤC PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 3 MỤC LỤC 5 LỜI CẢM ƠN 6 TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 7 3.1.1. Mô tả 27 3.2.1. Thiết kế tổng quan của chương trình 28 Ứng dụng có đầu vào là một mã nguồn (source code) của một chương trình nào đó, đầu ra là sơ đồ khối (flowchart) của mã nguồn đó. Để thực hiện được điều đó hệ thống sẽ thực hiện 2 giai đoạn lớn 28 + Giai đoạn 1: Tạo cây cú pháp trừu tượng (AST) từ mã nguồn 28 + Giai đoạn 2: Từ cây AST vẽ sơ đồ khối lên màn hình 28 Ta có sơ đồ thực hiện của hệ thống như sau: 28 28 3.2.2. Chi tiết xây dựng chương trình 28 Như đã giới thiệu ở trên hệ thống xây dựng qua 2 giai đoạn lớn. Bây giờ ta sẽ đi chi tiết từng giai đoạn 28 3.2.2.1. Xây dựng cây cú pháp trừu tượng (AST) từ mã nguồn 28 Đây là giai đoạn quan trọng mang tính quyết định của hệ thống. Nếu xây dựng được cấu trúc cây tốt thì sẽ dễ dàng thực hiện bước tiếp theo là vẽ sơ đồ khối 28 a. Cấu trúc cây cú pháp trừu tượng 30 Dưới đây là định nghĩa một nút của cây: 30 public class Lg_TreeNode { 30 String label; 30 String content; 30 List<Lg_TreeNode>child=new ArrayList<Lg_TreeNode>(); 30 } 30 Child là các nút con của nút hiện tại. Nút có thể có 0,1, hoặc nhiều con 33 Nút có label= “normal” không có nút con 33 Nút có label= “while” có 2 nút con 33 Nút có label=”for” có 3 nút con 33 Nút có label= “if” có 2 nút con (nếu không có else) và có 3 nút con nếu có else 33 Nút có label= “if_body”, “for_body” hoặc “while_body” có một hoặc nhiều nút con 33 Nút có label = “decision” không có nút con 33 b. Thuật toán xây dựng cây cú pháp trừu tượng 33 3.2.2.2. Vẽ sơ đồ khối từ cây cú pháp trừu tượng 39 TÀI LIỆU THAM KHẢO 64 Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 5 LỜI CẢM ƠN Lời đầu tiên em xin phép được bày tỏ lòng biết ơn sâu sắc nhất tới PGS.TS. Huỳnh Quyết Thắng, Viện Công nghệ thông tin và Truyền thông, trường Đại học Bách Khoa Hà Nội. Thầy đã tận tình hướng dẫn và dìu dắt em trong thời gian thực tập tốt nghiệp cũng như thời gian làm đồ án tốt nghiệp. Em xin chân thành cảm ơn các thầy cô trường Đại học Bách Khoa Hà Nội, đặc biệt là các thầy cô trong viện Công nghệ thông tin và truyền thông.Các thầy cô đã chỉ bảo, dạy dỗ em kể từ những ngày đầu tiên bước vào trường đại học cho đến khi tốt nghiệp. Lời cuối cùng em xin được cảm ơn gia đình, bạn bè đã luôn ở bên cạnh động viên và tạo điều kiện cho em trong suốt những năm học vừa qua. Hà Nội, ngày 28 tháng 5 năm 2011. Vũ Đức Minh Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 6 TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Phân tích chương trình là một giai đoạn quan trọng trong quá trình phát triển phần mềm. Nó đem lại rất nhiều ứng dụng to lớn đối với sự phát triển của phần mềm. Phân tích chương trình tĩnh và phân tích chương trình động là hai phần lớn trong quá trình phân tích chương trình, và đều được phát triển rộng rãi. Phân tích tĩnh chỉ phân tích chương trình mà không cần biết chương trình đó sẽ chạy như thế nào, do đó phân tích tĩnh chương trình có khả năng đưa ra nhiều hướng giải quyết hơn so với phân tích động. Kết quả của quá trình phân tích tĩnh được sử dụng vào nhiều ứng dụng từ việc phát hiện ra lỗi trong mã nguồn đến cấu trúc hóa chương trình. Nội dung nghiên cứu của đồ án tập trung vào tập trung tìm hiểu về lý thuyết phân tích chương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java để xây dựng ứng dụng chuyển đổi mã nguồn (source code) của java sang sang cấu trúc điều khiên hay còn gọi sơ đồ khối (flowchart) Luận văn gồm 3 chương: Chương 1 giới thiệu chung về phân tích chương trình, giới thiệu lý thuyết phân tích tĩnh. Chương 2 giới thiệu về sơ đồ khối (flowchart) , đưa ra bài toán chuyển đổi mã nguồn sang sơ đồ khối Chương 3 là phần chương trình đã thực hiện được. Giới thiệu thiết kế và kết quả đạt được Cuối cùng là kết luận chung và hướng phát triển Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 7 ABSTRACT OF THESIS Program analysis is an important stage in the process of software development. It brings so many great applications for the development of software. Static analysis and dynamic analysis are two main analysis programs. The are widely developed. The static analysis program analysis program without knowing how it will run, so a static program analysis can provide more solutions than the dynamic analysis. Results of static analysis process is used in many applications since the discovery of errors in the source code to structured programs. The content of the research concentrates theoretical static analysis, and applies it to build a software which can convert source code java language to flowchart. The thesis consists of 3 chapters. + Chapter 1 is general information about program analysis, the theoretical static analysis + Chapter 2 is the introduction of flowchart, and propose the problem to convert source code to flowchart + Chapter 3 focuse on building the application : Convert source code java language to flowchart Finally, final chapter is used to conclusion; we will summarize the theory and the implementation to get the final result of this thesis. Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 8 DANH MỤC TỪ VIẾT TẮT STT Từ viết tắt Từ tiếng Anh Nghĩa tiếng Việt 1 AST Abstract Syntax Tree Cây cú pháp trừu tượng 2 IDEs Integrated Development Environments Môi trường phát triển tích hợp Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 9 DANH MỤC HÌNH ẢNH Hình 1: Ví dụ cây ngữ pháp 20 Hình 2: Cây ngữ pháp trừu tượng (Abstract Syntax Tree) [2] 21 Hình 3: Ví dụ sơ đồ khối 24 Hình 4: Ví dụ Visustin 25 Hình 5: Ví dụ Code visual to flowchart 26 Hình 6: Sơ đồ thực hiện phân tích chương trình 28 Hình 7: Sơ đồ chuyển từ source code sang cây AST 29 Hình 8: Ví dụ chuyển từ source code sang cây AST 34 Hình 9: Ví dụ 2 chuyển source code sang AST 35 Hình 10: Lớp Converter 36 Hình 11: Sơ đồ chuyển từ AST sang flowchart 40 Hinh 12: Lớp Flowchart 41 Hình 13: Ví dụ chuyển đổi từ AST sang Flowchart 42 Hình 14: Ví dụ chuyển đổi tử Source code sang AST đến Flowchart 42 Hình 15: Giao diện của chương trình 43 Hình 16: Giao diện ví dụ 3.3.1 44 Hình 17: Kết quả ví dụ 3.3.1 44 Hình 18: Giao diện ví dụ 3.3.2 45 Hình 19: Kết quả ví dụ 3.3.2 45 Hình 20: Giao diện ví dụ 3.3.3 46 Hình 21: Kết quả ví dụ 3.3.3 47 Hình 22: Giao diện ví dụ 3.3.4 48 Hình 23: Kết quả ví dụ 3.3.4 49 Hình 24: Giao diện ví dụ 3.3.5 50 Hình 25: Kết quả ví dụ 3.3.5 50 Hình 26: Giao diện ví dụ 3.3.6 51 Hình 27: Kết quả ví dụ 3.3.6 52 Hình 28: Giao diện ví dụ 3.3.7 53 Hình 29: Kết quả ví dụ 3.3.7 54 Hình 30: Giao diện chương trình khi chạy thử nghiệm 1 55 Hình 31: Kết quả chương trình khi chạy thử nghiệm 1 56 Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 10 Hình 32: Kết quả thực nghiệm 1 khi chạy bằng phần mềm visustin 57 Hình 33: Giao diện chương trình khi chạy thử nghiệm 1 59 Hình 34: Kết quả chương trình khi chạy thử nghiệm 2 60 Hình 35: Kết quả thực nghiệm 2 khi chạy bằng phần mềm visustin 61 Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 11 [...]... mã nguồn, bộ dịch có thể thực hiện tổ chức lại mã nguồn, phân tích mã nguồn sâu hơn Phân tích tĩnh chỉ phân tích chương trình mà không cần biết chương trình đó sẽ chạy như thế nào, do đó phân tích tĩnh chương trình có khả năng đưa ra nhiều hướng giải quyết hơn so với phân tích tĩnh Kết quả của quá trình phân tích tĩnh được sử dụng vào nhiều ứng dụng từ việc phát hiện ra lỗi trong mã nguồn đến cấu trúc. .. trung vào tập trung tìm hiểu về lý thuyết phân tích chương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java để xây dựng ứng dụng chuyển đổi mã nguồn (source code) của Java sang sang cấu trúc điều khiên hay còn gọi sơ đồ khối (flowchart) 2 Bố cục của đồ án: Đồ án được chia làm 3 chương bao gồm các nội dung sau: Chương 1: Giới thiệu tổng quan về phân tích mã nguồn chương trình: Giới thiệu chung về phân. .. phân tích mã nguồn, phân tích lý thuyết về phương pháp phân tích mã nguồn tĩnh Chương 2: Đưa ra bài toán ứng dụng: chuyển đổi mã nguồn sang sơ đồ khối (flowchart): Giới thiệu sơ qua về định nghĩa, lịch sử hình thành cũng như tầm quan trong của sơ đồ khối và đưa ra bài toán ứng dụng Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 12 Chương 3: Xây dựng chương trình chuyển đổi mã nguồn. .. phân tích mã nguồn • Phương pháp phân tích mã nguồn tĩnh • Sử dụng cây cú pháp trừu tượng (AST) để phân tích 1.1 Giới thiệu chung vể phân tích mã nguồn Quá trình phân tích chương trình là quá trình phân tích các hành vi của một chương trình Phân tích chương trình bao gồm các động cơ, cách thức cơ bản và các phương thức Có hai cách cơ bản để tiếp cận quá trình phân tích chương trình đó là phân tích. .. khối và đưa ra bài toán ứng dụng của phân tích mã nguồn để chuyển đổi mã nguồn về dạng sơ đồ khối Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 22 Chương 2: Bài toán chuyển đổi mã nguồn sang sơ đồ khối Nội dung của chương này sẽ trình bày các vấn đề sau: • Tầm quan trọng của sơ đồ khối (flowchart) • Giới thiệu bài toán chuyển đổi mã nguồn sang sơ đồ khối • Một số phần mềm chuyển đổi. .. quan trọng của nớ đối với công nghệ thông tin Và cũng trong chương này ta đã đưa ra bài toán chuyển đổi mã nguồn sang sơ đồ khối Trong chương kế tiếp sẽ là phần ứng dụng chuyển đổi mã nguồn sang sơ đồ khối thực hiện với ngôn ngữ java Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 26 Chương 3: Xây dựng chương trình chuyển đổi mã nguồn java sang flowchart Nội dung của chương này sẽ trình... không thể chuyển đổi tất các câu lệnh của java sang sơ đồ khối (flowchart) được Do đó trong ứng dụng đồ án này chỉ chuyển đổi những câu lệnh, cấu trúc lệnh hay sử dụng nhất của ngôn ngữ java đó là: + Cấu trúc if – then – else + Vòng lặp while Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 27 + Vòng lặp for Đó là những cấu trúc cơ bản của ngôn ngữ java 3.2 Thiết kế và xây dựng chương... ban đầu để hỗ trợ cho quá trình phân tích là quá trình quan trọng Để phân tích chương trình thì việc phân tích từng câu lệnh, các khối dữ liệu chuyển qua giữa các thành phần trong chương trình cần dùng đến biểu đồ luồng điều khiển của chương trình đó Kết quả của quá trình phân tích tĩnh được sử dụng vào nhiều ứng dụng từ việc phát hiện ra lỗi trong mã nguồn đến cấu trúc hóa chương trình Trong chương... sau: • Mô tả phần mêm và giới hạn chương trình • Chi tiết xây dựng chương trình • Kết quả chương trình • Thử nghiệm đánh giá và so sánh 3.1 Mô tả phần mềm và giới hạn chương trình 3.1.1 Mô tả Ứng dụng có tên gọi là : chuyển đổi mã nguồn java sang biểu đồ flowchart Do đó ta có thể dễ dàng hình dung công dụng của nó đó là từ mã nguồn (java) khó đọc cho người không viết ra nó chuyển đổi về biểu đồ flowchart... trình phân tích sẽ được dùng để làm rõ những phần trong mã nguồn gây lỗi Sinh viên thực hiện: Vũ Đức Minh – Khóa 51 - Lớp Công nghệ phần mềm 14 1.2.1 Các loại phân tích tĩnh Các công cụ sử dụng phương pháp phân tích tĩnh được sử dụng rộng rãi trong các chương trình dịch Các công cụ được phân làm nhiều loại như phân tích tĩnh để xác định kiểu, phân tích ngữ pháp, phân tích để hiểu chương trình, phân tích . THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN KỸ THUẬT PHÂN TÍCH MÃ NGUỒN VÀ XÂY DỰNG ỨNG DỤNG CHUYỂN ĐỔI MÃ NGUỒN JAVA SANG CẤU TRÚC ĐIỀU KHIỂN Sinh. về phân tích mã nguồn chương trình: Giới thiệu chung về phân tích mã nguồn, phân tích lý thuyết về phương pháp phân tích mã nguồn tĩnh Chương 2: Đưa ra bài toán ứng dụng: chuyển đổi mã nguồn sang. chương trình tĩnh và áp dụng lý thuyết đó vào ngôn ngữ java để xây dựng ứng dụng chuyển đổi mã nguồn (source code) của Java sang sang cấu trúc điều khiên hay còn gọi sơ đồ khối (flowchart) 2. Bố

Ngày đăng: 22/11/2014, 08:41

Từ khóa liên quan

Mục lục

  • 3.1.1. Mô tả

  • 3.2.1. Thiết kế tổng quan của chương trình

  • Ứng dụng có đầu vào là một mã nguồn (source code) của một chương trình nào đó, đầu ra là sơ đồ khối (flowchart) của mã nguồn đó. Để thực hiện được điều đó hệ thống sẽ thực hiện 2 giai đoạn lớn

  • + Giai đoạn 1: Tạo cây cú pháp trừu tượng (AST) từ mã nguồn

  • + Giai đoạn 2: Từ cây AST vẽ sơ đồ khối lên màn hình

  • Ta có sơ đồ thực hiện của hệ thống như sau:

  • 3.2.2. Chi tiết xây dựng chương trình

  • Như đã giới thiệu ở trên hệ thống xây dựng qua 2 giai đoạn lớn. Bây giờ ta sẽ đi chi tiết từng giai đoạn

  • 3.2.2.1. Xây dựng cây cú pháp trừu tượng (AST) từ mã nguồn

  • Đây là giai đoạn quan trọng mang tính quyết định của hệ thống. Nếu xây dựng được cấu trúc cây tốt thì sẽ dễ dàng thực hiện bước tiếp theo là vẽ sơ đồ khối

  • a. Cấu trúc cây cú pháp trừu tượng

  • Dưới đây là định nghĩa một nút của cây:

  • public class Lg_TreeNode {

  • String label;

  • String content;

  • List<Lg_TreeNode>child=new ArrayList<Lg_TreeNode>();

  • }

  • Child là các nút con của nút hiện tại. Nút có thể có 0,1, hoặc nhiều con

  • Nút có label= “normal” không có nút con

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

Tài liệu liên quan