Luận văn: Phân tích chương trình và ứng dụng trong giảng dạy CNTT

Tài liệu Phân tích chương trình: ứng dụng trong giảng dạy tổng hợp lý thuyết và thực hành, phục vụ học tập ngành trong thời kỳ mới

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2014

61
0
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

DANH MỤC CÁC BẢNG

DANH MỤC CÁC HÌNH VẼ

Nội dung nghiên cứu

1. CHƯƠNG 1: KIẾN THỨC CƠ SỞ VỀ PHÂN TÍCH CHƯƠNG TRÌNH

1.1. Khái niệm và phân loại Phân tích chương trình

1.2. Phân tích chương trình tĩnh

1.3. Phương pháp tiếp cận dựa trên tri thức

1.4. Sử dụng lý luận mờ trong việc hiểu chương trình dựa trên tri thức

1.5. Phương pháp đánh giá chương trình tương tự

1.6. Phân tích chương trình động

1.7. Các ứng dụng chính của phân tích chương trình

1.8. Chính xác hóa chương trình

1.9. Tối ưu hóa chương trình

2. CHƯƠNG 2: CÂY CÚ PHÁP TRỪU TƯỢNG

2.1. Đặc trưng của cây cú pháp trừu tượng

2.2. Các công cụ sinh cây cú pháp trừu tượng từ mã nguồn

2.3. Các ứng dụng của cây cú pháp trừu tượng

2.4. Phát hiện lỗi mã nguồn trong thời gian thực

2.5. Cây phác thảo mã nguồn thời gian thực

2.6. Sơ đồ lớp đối tượng

2.7. Tái cấu trúc mã nguồn

3. CHƯƠNG 3: CÁC ĐƠN VỊ ĐO PHẦN MỀM

3.1. Các khái niệm về đơn vị đo phần mềm

3.2. Đơn vị đo phần mềm là gì?

3.3. Phân loại software metrics

3.4. Biểu đồ luồng điều khiển (Control flow graph – CFG)

3.5. Định nghĩa Cyclomatic Complexity

3.6. Cyclomatic Complexity và việc kiểm thử các đường tuyến tính độc lập

3.7. Hạn chế của Cyclomatic Complexity

4. CHƯƠNG 4: BÀI TOÁN ỨNG DỤNG TRONG GIẢNG DẠY

4.1. Mô tả bài toán

4.2. Cách giải quyết bài toán

4.3. Phân tích các đơn vị đo phần mềm

4.4. Phân tích sự tương tự về cấu trúc

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

5.1. Các chức năng đã cài đặt được

5.2. Công nghệ và môi trường xây dựng mô hình thực nghiệm

5.3. Cài đặt hệ thống

5.4. Tạo ra cây cú pháp trừu tượng (AST)

5.5. Thuật toán so sánh hai cây cú pháp trừu tượng

5.6. Kết quả thực nghiệm

5.7. Tính Cyclomatic complexity (CC)

5.8. So sánh sự tương tự về cấu trúc

5.9. Đánh giá kết quả thực nghiệm

TÀI LIỆU THAM KHẢO

MỞ ĐẦU

Tóm tắt

I. Tổng Quan Luận Văn Thạc Sĩ Phân Tích Chương Trình và Ứng Dụng

Luận văn thạc sĩ tập trung vào phân tích chương trìnhứng dụng trong giảng dạy có vai trò quan trọng trong việc nâng cao chất lượng giáo dục, đặc biệt trong lĩnh vực công nghệ thông tin. Nghiên cứu này khám phá các phương pháp và kỹ thuật phân tích mã nguồn, từ đó đưa ra các giải pháp cải tiến chương trình giảng dạy và hỗ trợ sinh viên trong quá trình học tập. Phân tích chương trình là quá trình tự động phân tích hành vi của các chương trình máy tính, giúp xác định lỗi, tối ưu hóa hiệu suất và hiểu rõ hơn về cấu trúc và chức năng của chương trình. Luận văn đi sâu vào các khía cạnh của phân tích chương trình tĩnhphân tích chương trình động, đồng thời đề xuất các ứng dụng thực tiễn trong môi trường giáo dục học. Nghiên cứu này sử dụng các phương pháp nghiên cứu hiện đại và các công cụ phân tích dữ liệu tiên tiến để đánh giá hiệu quả của các giải pháp đề xuất. Các kết quả nghiên cứu đóng góp vào việc phát triển chương trình đào tạo sư phạm và nâng cao hiệu quả giảng dạy.

1.1. Bối Cảnh và Tầm Quan Trọng của Nghiên Cứu

Phần mềm ngày càng đóng vai trò quan trọng trong xã hội hiện đại, và tỷ trọng giá trị phần mềm trong các hệ thống ngày càng lớn. Tuy nhiên, lỗi của phần mềm gây ra các hậu quả đặc biệt nghiêm trọng. Do đó, việc trang bị các kỹ năng lập trình cho các lập trình viên là vô cùng quan trọng ngay từ khi còn đang học đại học. Các nghiên cứu đã chỉ ra rằng hầu hết các sinh viên đều có thể viết các chương trình, nhưng chương trình của sinh viên thường không được tối ưu. Việc tự động phân tích các chương trình của sinh viên có thể làm giảm sự khó khăn của vấn đề này. Hơn nữa tự động phân tích còn làm cho quá trình chấm điểm của các giảng viên được nhanh hơn. Quan trọng hơn, nó có thể giúp đưa ra mức độ đánh giá chi tiết hơn về chất lượng các chương trình của sinh viên, giúp sinh viên nâng cao kỹ năng lập trình của mình. Nghiên cứu này sẽ nghiên cứu về “Phân tích chương trình” để ứng dụng vào kiểm tra các chương trình java của sinh viên.

1.2. Mục Tiêu và Phạm Vi Nghiên Cứu

Mục tiêu chính của luận văn là nghiên cứu các phương pháp phân tích chương trình, đặc biệt là phân tích tĩnh, và ứng dụng chúng trong việc giảng dạy lập trình. Phạm vi nghiên cứu bao gồm việc xây dựng một hệ thống tự động đánh giá chương trình java của sinh viên, sử dụng các đơn vị đo phần mềmphân tích cấu trúc. Nghiên cứu cũng tập trung vào việc phát triển các phương pháp đánh giáphản hồi hiệu quả cho sinh viên, giúp họ cải thiện kỹ năng lập trình. Nội dung nghiên cứu chính bao gồm: Tìm hiểu các khái niệm liên quan và phân loại phân tích chương trình. Tìm hiểu một số cách tiếp cận về hiểu chương trình tự động dựa vào phân tích chương trình tĩnh. Trên cơ sở lý thuyết đã tìm hiểu, xây dựng một chương trình để phân tích đánh giá chương trình java của những sinh viên mới bắt đầu học lập trình (sinh viên năm đầu tiên).

II. Thách Thức và Vấn Đề Phân Tích Chương Trình trong Giảng Dạy

Việc phân tích chương trìnhứng dụng nó trong giảng dạy gặp phải nhiều thách thức. Thứ nhất, việc đánh giáphản hồi cho sinh viên về chất lượng chương trình của họ đòi hỏi một lượng lớn thời gian và công sức từ giảng viên. Thứ hai, các phương pháp đánh giá truyền thống thường mang tính chủ quan và không cung cấp đủ thông tin chi tiết để sinh viên hiểu rõ điểm mạnh và điểm yếu của mình. Thứ ba, việc đảm bảo tính khả thitính hiệu quả của các giải pháp tự động đánh giá là một thách thức lớn, đòi hỏi sự kết hợp giữa lý thuyết và thực tiễn. Cuối cùng, việc duy trì và cải tiến chương trình giảng dạy dựa trên kết quả nghiên cứu là một quá trình liên tục, đòi hỏi sự cam kết và đầu tư từ các nhà giáo dục.

2.1. Hạn Chế của Phương Pháp Đánh Giá Truyền Thống

Các phương pháp đánh giá truyền thống, như chấm bài thủ công, thường tốn nhiều thời gian và dễ bị ảnh hưởng bởi yếu tố chủ quan của người chấm. Giảng viên khó có thể đưa ra những phản hồi chi tiết và kịp thời cho từng sinh viên, đặc biệt trong các lớp học đông sinh viên. Hơn nữa, việc đánh giá chỉ dựa trên kết quả cuối cùng mà không xem xét quá trình tư duy và giải quyết vấn đề của sinh viên có thể không phản ánh đúng năng lực thực tế của họ.

2.2. Khó Khăn trong Việc Tự Động Hóa Phân Tích Chương Trình

Việc tự động hóa phân tích chương trình đòi hỏi việc xây dựng các công cụ và thuật toán phức tạp có khả năng phân tích mã nguồn, đánh giá chất lượng và đưa ra phản hồi hữu ích cho sinh viên. Việc đảm bảo tính chính xác và tin cậy của các công cụ này là một thách thức lớn. Bên cạnh đó, việc thiết kế các giao diện thân thiện và dễ sử dụng cho cả giảng viên và sinh viên cũng là một yếu tố quan trọng để đảm bảo sự thành công của hệ thống.

III. Phương Pháp Phân Tích Tĩnh Giải Pháp Đánh Giá Chương Trình Tối Ưu

Phân tích chương trình tĩnh là quá trình kiểm tra mã nguồn mà không thực hiện chương trình. Phương pháp này cho phép xác định vị trí các lỗi mã bao gồm cả lỗi tiềm ẩn, các vùng phức tạp và dài dòng không cần thiết. Phân tích chương trình tĩnh thường mô tả các kết quả có thể có cho một tập các yếu tố đầu vào (thường là cho tất cả các yếu tố đầu vào của chương trình). Vì hành vi của một chương trình có thể khác nhau cho mỗi đầu vào khác nhau cho nên phân tích tĩnh thường là mang ý nghĩa gần đúng. Thay vì đưa ra kết quả chính xác, phân tích tĩnh thường đưa ra giới hạn trên và dưới của các giá trị có thể. Các phương pháp tiếp cận về việc hiểu chương trình tự động được chia thành các loại sau: Phương pháp tiếp cận dựa trên tri thức, sử dụng lý luận mờ trong việc hiểu chương trình, phương pháp tiếp cận đánh giá chương trình tương tự....

3.1. Sử Dụng Cây Cú Pháp Trừu Tượng AST để Phân Tích Cấu Trúc

Cây cú pháp trừu tượng (AST) là một cây đại diện cho cấu trúc ngữ pháp trừu tượng của mã nguồn. Mỗi nút của cây thể hiện một cấu trúc đang có của mã nguồn. Đặc trưng của AST thể hiện rõ ở mức độ biểu thức, các nút bên trong thể hiện các toán tử (operator), các nút lá của nó thể hiện các toán hạng (operands) của toán tử. Cây AST còn giản lược một số thành phần cú pháp không cần thiết. Cây AST được sử dụng cho nhắc mã nguồn, phát hiện lỗi mã nguồn trong thời gian thực, cây phác thảo mã nguồn thời gian thực, tìm kiếm mã nguồn, tối ưu hóa mã nguồn....

3.2. Các Đơn Vị Đo Phần Mềm Software Metrics để Đánh Giá Chất Lượng

Các đơn vị đo phần mềm (Software metrics) là một cách tiếp cận định lượng nổi tiếng được sử dụng để đo chất lượng phần mềm. Có 2 loại metrics: Process Metrics và Products Metrics. Product Metrics bao gồm đơn vị về độ tin cậy, chức năng, hiệu xuất, khả năng sử dụng, chi phí, kích thước, độ phức tạp, kiểu. Size Metrics bao gồm LOC (Lines of code), Token Count, Function Count. Software science metrics, Control Flow Metrics (McCabe’s Cyclomatic Metric), Information flow metrics, Object oriented metrics.... Các đơn vị đo được sử dụng để ước tính chi phí, đánh giá hiệu quả, thiết lập xu hướng, nâng cao chất lượng, dự báo nhân sự.

IV. Ứng Dụng Thực Tiễn Hệ Thống Tự Động Phân Tích và Đánh Giá Code

Luận văn đề xuất một hệ thống tự động phân tíchđánh giá chương trình java của sinh viên, dựa trên các phương pháp phân tích tĩnh và các đơn vị đo phần mềm. Hệ thống này giúp giảng viên tiết kiệm thời gian và công sức trong việc đánh giá bài tập của sinh viên, đồng thời cung cấp cho sinh viên những phản hồi chi tiết và hữu ích để cải thiện kỹ năng lập trình. Hệ thống bao gồm các chức năng chính như phân tích cú pháp, phân tích ngữ nghĩa, tính toán độ phức tạp, và so sánh cấu trúc.

4.1. Xây Dựng Cơ Sở Dữ Liệu Bài Tập và Giải Pháp Mẫu

Cơ sở dữ liệu bài tập và giải pháp mẫu là thành phần quan trọng của hệ thống. Cơ sở dữ liệu lưu lại các bài tập của hệ thống đưa ra cho sinh viên làm bao gồm mã bài, tên bài, yêu cầu của bài tập. Cơ sở dữ liệu lưu lại các chương trình mẫu (giải pháp mẫu) ứng với các bài tập bao gồm mã giải pháp, tên giải pháp, mã bài tập, đường dẫn đến tệp tin mã nguồn của giải pháp, lời đánh giá cho giải pháp. Cơ sở dữ liệu đưa ra tập các đầu vào, đầu ra mong đợi cho bài tập. Cơ sở dữ liệu phục vụ cho phân tích động.

4.2. Phát Triển Thuật Toán So Sánh Cấu Trúc và Đánh Giá Độ Phức Tạp

Thuật toán tính CC được mô tả như sau: Input: Tệp tin chương trình của sinh viên. Output: CC. Bước 1: Xác định tệp tin chương trình của sinh viên. Bước 2: Gán CC=1. Bước 3: Lần lượt duyệt từng dòng lệnh trong tệp tin chương trình của sinh viên, nếu gặp lệnh (toán tử) quyết định nào thì tăng CC lên 1: CC=CC+1. Chú ý: Các lệnh (toán tử) quyết định gồm có: if, else, while, case, for, switch, do, continue, break, &&, ||, ?, : , catch, finally, throw, throws, default, return, foreach, elseif, or, and, xor. Bước 4: Trả về Cyclomatic complexity (CC)

4.3. Giao diện người dùng thân thiện và dễ sử dụng

Hệ thống cung cấp giao diện người dùng thân thiện cho phép sinh viên dễ dàng truy cập bài tập, nộp bài, xem kết quả và phản hồi. Giao diện cho phép giảng viên dễ dàng quản lý bài tập, xem kết quả và đánh giá.

V. Thực Nghiệm và Đánh Giá Tính Khả Thi Tính Hiệu Quả của Hệ Thống

Chương này trình bày kết quả thực nghiệm và đánh giá hệ thống tự động phân tíchđánh giá chương trình java. Các kết quả thực nghiệm cho thấy hệ thống có tính khả thitính hiệu quả cao trong việc hỗ trợ sinh viên học lập trình. Hệ thống có thể tự động xác định lỗi cú pháp, đánh giá chất lượng mã nguồn, và cung cấp phản hồi chi tiết cho sinh viên. Các sinh viên tham gia thực nghiệm đều đánh giá cao tính hữu ích của hệ thống và cho rằng nó giúp họ cải thiện kỹ năng lập trình.

5.1. Kết Quả Phân Tích Độ Phức Tạp và So Sánh Cấu Trúc

Kết quả phân tích cho thấy hệ thống có khả năng tính toán độ phức tạp và so sánh cấu trúc mã nguồn một cách chính xác. Hệ thống phát hiện các điểm tương đồng giữa code của học sinh và các giải pháp đã có trong kho. Kết quả phân tích phục vụ giảng viên một cách dễ dàng, nhanh chóng.

5.2. Đánh Giá Tính Hữu Ích và Khả Năng Áp Dụng trong Giảng Dạy

Sinh viên đánh giá cao tính hữu ích và khả năng áp dụng của hệ thống trong giảng dạy. Hệ thống giúp họ phát triển kỹ năng và đánh giá khách quan hơn. Đồng thời giúp giảng viên tiết kiệm thời gian và công sức.

VI. Kết Luận và Đề Xuất Phát Triển Phân Tích Chương Trình trong Giáo Dục

Luận văn đã trình bày một nghiên cứu về phân tích chương trìnhứng dụng nó trong giảng dạy lập trình. Nghiên cứu đã đề xuất một hệ thống tự động phân tíchđánh giá chương trình java, dựa trên các phương pháp phân tích tĩnh và các đơn vị đo phần mềm. Hệ thống này có tính khả thitính hiệu quả cao trong việc hỗ trợ sinh viên học lập trình. Luận văn cũng đề xuất các hướng nghiên cứu tiếp theo để phát triểncải tiến hệ thống, nhằm nâng cao hơn nữa chất lượng giáo dục.

6.1. Tóm Tắt Kết Quả Nghiên Cứu và Đóng Góp của Luận Văn

Luận văn đã đạt được các kết quả sau: Đề xuất hệ thống phân tích và đánh giá chương trình Java dựa trên phân tích tĩnh và đơn vị đo phần mềm. Hệ thống đã được chứng minh tính khả thi cao trong quá trình thử nghiệm.

6.2. Hướng Nghiên Cứu Tiếp Theo và Khả Năng Mở Rộng Hệ Thống

Nghiên cứu tiếp theo cần tập trung vào việc phát triển thêm các chức năng như tự động sửa lỗi, đề xuất cách tối ưu code, hỗ trợ nhiều ngôn ngữ lập trình khác. Đồng thời, cần có các nghiên cứu sâu hơn về yếu tố tâm lý trong giảng dạy.

24/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: KIẾN THỨC CƠ SỞ VỀ PHÂN TÍCH CHƯƠNG TRÌNH Trong chương này, tôi sẽ trình bày các khái niệm liên quan đến Phân tích chương trình, cũng như các kỹ thuật khác nhau và các ứng dụng của Phân tích chương trình. Khái niệm và phân loại Phân tích chương trình Theo [7]: “Trong khoa học máy tính, phân tích chương trình là quá trình tự động phân tích hành vi của các chương trình máy tính. 8], dựa vào việc chương trình có được thực hiện hay không, phân tích chương trình có thể được chia làm hai loại chính: + Phân tích chương trình tĩnh + Phân tích chương trình động Theo [4]: “Phân tích chương trình tĩnh là quá trình kiểm tra mã nguồn mà không thực hiện chương trình. Nó được sử dụng để xác định vị trí các lỗi mã bao gồm cả lỗi tiềm ẩn, các vùng phức tạp và dài dòng không cần thiết.” Trong phân tích chương trình tĩnh, một chương trình được phân tích mà không cần phải thực thi với một đầu vào cụ thể.

Phân tích chương trình tĩnh thường mô tả các kết quả có thể có cho một tập các yếu tố đầu vào (thường là cho tất cả các yếu tố đầu vào của chương trình). Vì hành vi của một chương trình có thể khác nhau cho mỗi đầu vào khác nhau cho nên phân tích tĩnh thường là mang ý nghĩa gần đúng. Thay vì đưa ra kết quả chính xác, phân tích tĩnh thường đưa ra giới hạn trên và dưới của các giá trị có thể. Theo [4]: “Phân tích chương trình động là việc phân tích phần mềm máy tính được làm bằng cách thực thi các chương trình trên một tập các dữ liệu đầu vào.” Để hiểu được hành vi của chương trình, chúng ta thực hiện chương trình bằng một số đầu vào, và sau đó kiểm tra đầu ra của nó.

Để hiểu được chương trình tốt hơn, chúng ta phải thực hiện chương trình với việc sử dụng nhiều bộ đầu vào khác nhau. Điều này khiến việc phân tích chương trình động mất nhiều thời gian hơn so với phân tích chương trình tĩnh. Tuy nhiên, phân tích chương trình động chính xác hơn phân tích chương trình tĩnh, vì đầu ra của nó là kết quả từ một đầu vào cụ thể và có kiểm chứng, chứ không phải là một tập hợp các giả định của cả đầu vào và đầu ra. Phân tích chương trình tĩnh Trong phân tích chương trình tĩnh, chương trình được phân tích bằng phương pháp phân tích cấu trúc, mà không cần chạy mã lệnh.

Phân chương trình tĩnh dựa trên mã nguồn có thể được thực hiện bằng nhiều cách khác nhau. Ví dụ: phân tích tĩnh có thể được dựa trên việc kiểm tra luồng điều khiển của chương trình, kiểm tra luồng dữ TIEU LUAN MOI download : skknchat@gmail.com 10 liệu của chương trình, hoặc kiểm tra sự phức tạp của chương trình bằng cách sử dụng các đơn vị (metrics) khác nhau, … Hầu hết các nghiên cứu về sự hiểu chương trình tự động đều dựa trên Phân tích chương trình tĩnh. Các phương pháp tiếp cận về việc hiểu chương trình tự động được chia thành các loại sau: + Phương pháp tiếp cận dựa trên tri thức + Sử dụng lý luận mờ trong việc hiểu chương trình + Phương pháp tiếp cận đánh giá chương trình tương tự +… 1. Phương pháp tiếp cận dựa trên tri thức Theo [3]: “Kỹ thuật dựa trên tri thức được dựa trên các cơ sở tri thức được lưu trữ và định nghĩa trước.

Ý tưởng cơ bản của hiểu chương trình dựa trên tri thức chỉ đơn giản là chúng ta so sánh mã nguồn đầu vào với các đoạn mã mẫu có trong thư viện. Các đoạn mã này thường được gọi là các kế hoạch, các mẫu, các phân đoạn, … ” Nếu chúng ta hiểu được các kế hoạch làm gì thì chúng ta có thể dễ dàng hiểu được đoạn mã nguồn đó làm gì khi chúng ta tìm thấy một sự phù hợp giữa những đoạn mã nguồn và một kế hoạch nào đó. Sự hiểu chương trình dựa trên tri thức là quá trình tìm hiểu một chương trình về mục tiêu của nó. Trong khái niệm này, viết một chương trình mới là một quá trình của việc viết lại các mục tiêu của chương trình trong một tập hợp các mục tiêu con sử dụng các kế hoạch như các quy tắc cho quá trình viết lại.

Sự hiểu chương trình có thể được coi là một quá trình ngược lại, là sự hiểu biết mục tiêu thông qua sự hiểu biết về các mục tiêu con sử dụng các kế hoạch. Các kế hoạch riêng biệt và đơn giản có thể được gộp lại thành một hình thức phức tạp để tạo ra một chương trình. Các thuật toán có thể được coi là được hình thành từ các kế hoạch. Ví dụ, như Letovsky và Soloway mô tả thuật toán mergesort có thể được suy ra từ sự kết hợp một số kế hoạch: kế hoạch đệ quy trên cây nhị phân, kế hoạch để tách một chuỗi thành hai, kế hoạch phân loại cặp số, và kế hoạch sát nhập các danh sách được sắp xếp.

Vì vậy, kế hoạch này không nên nhầm lẫn với các thuật toán hoặc thủ tục vì chúng là các khái niệm khác nhau. Phương pháp tiếp cận dựa trên tri thức có thể được chia làm 3 loại: Phương pháp tiếp cận từ trên xuống, từ dưới lên và kết hợp cả hai. Phương pháp chủ yếu là phương pháp tiếp cận từ dưới lên, có nghĩa là đầu tiên chúng tôi cố gắng để nhận dạng và hiểu những đoạn mã nhỏ (còn gọi là các kế hoạch cơ bản). Sau khi hiểu được các kế hoạch cơ bản, chúng tôi có thể tiếp tục quá trình nhận ra và hiểu kế hoạch cấp cao hơn bằng cách kết hợp ý nghĩa của những kế hoạch TIEU LUAN MOI download : skknchat@gmail.com 11 cơ bản đã được xác định.

Tiếp tục quá trình này, cuối cùng chúng ta có thể kết luận toàn bộ những gì mã nguồn sẽ làm. Phương pháp tiếp cận từ trên xuống: ý tưởng ở đây là bằng cách biết được vấn đề chính, chúng ta có thể lựa chọn kế hoạch đúng từ thư viện để giải quyết vấn đề cụ thể và sau đó so sánh các mã nguồn với các kế hoạch. Nếu có một sự phù hợp giữa mã nguồn và kế hoạch trong thư viện, chúng ta có thể trả lời câu hỏi về những gì mà chương trình làm được. Thêm vào đó, một số phương pháp lai giữa hai kỹ thuật từ trên xuống và kỹ thuật từ dưới lên cũng được sử dụng.

Một ví dụ về các phương pháp này là: Các kế hoạch của chương trình đầu tiên được xác định (hiểu) bằng kỹ thuật từ dưới lên, sau đó kế hoạch chung được đề xuất bởi hệ thống được so sánh với chương trình bằng cách từ trên xuống. Các kế hoạch chung được đề xuất bằng cách sử dụng một thư viện kế hoạch được tổ chức tốt, trong đó mỗi kế hoạch được đánh một chỉ mục, mục tiêu và ý nghĩa liên kết đến các kế hoạch khác. Bằng cách sử dụng một cơ sở lập chỉ mục, hệ thống có thể nhanh chóng kết hợp một phần của mã nguồn với một kế hoạch trong cơ sở tri thức. Sử dụng lý luận mờ trong việc hiểu chương trình dựa trên tri thức Thay vì thực hiện nhiệm vụ so sánh mã với tất cả các kế hoạch, thì cách tiếp cận thường được sử dụng trong việc hiểu chương trình dựa trên tri thức ở đây là: Đầu tiên nó nhận ra một nhóm các câu lệnh như một phân vùng của mã gọi là khối mã.

Các khối mã, hoặc chỉ đơn giản là các khối – là các phần của mã có thể được hiểu khác các phần khác của mã, và làm điều gì đó có ý nghĩa độc lập. Khối đôi khi được coi như một bản mẫu, một kế hoạch, một lược đồ hoặc một cơ sở. Lúc đầu, các khối tiềm năng được xác định từ mã nguồn. Trong các chương trình lớn hơn, có thể có một số lượng lớn các khối tiềm năng được xác định.

Do đó, có một việc cần làm là phải bằng cách nào đó giảm con số này bằng cách chọn các khối có triển vọng nhất từ các khối tiềm năng được gọi là khối ứng cử viên. Ngay khi các khối ứng cử viên được hiểu, hệ thống sẽ chỉ lấy từ thư viện kế hoạch ra những kế hoạch mà trông giống như những khối này. Nó xếp hạng các kế hoạch theo sự tương đồng với mã và lựa chọn những kế hoạch xếp hạng cao nhất để nghiên cứu và so sánh kỹ lưỡng hơn. Chi tiết của việc nghiên cứu và so sánh bao gồm các thao tác tính toán giá trị mà không phải so sánh tất cả các kế hoạch với các mã sử dụng trong các thao tác này.

Vì vậy mà một lượng thời gian đáng kể có thể được tiết kiệm. Lý luận mờ được sử dụng cho việc tìm kiếm các kế hoạch tương tự nhất và xếp hạng chúng. Để áp dụng lý luận mờ, đầu tiên chúng ta phải tìm những loại đặc trưng TIEU LUAN MOI download : skknchat@gmail.com 12 của mã có thể phân biệt được và so sánh các mã, từ đó giúp chúng ta tìm thấy sự tương đồng giữa các kế hoạch và khối. Nghiên cứu bởi Berghel và Sallach đưa ra các đặc trưng của mã được sử dụng như các phép đo tương tự.

Những đặc trưng này được thể hiện trong Bảng 1. Các đặc trưng của mã được sử dụng bởi Berghel and Sallach Code characteristics Effectiveness[0 -1] (Các đặc trưng) (Ảnh hưởng) Tổng số thao tác 0.98 Tổng số toán hạng 0.90 Tổng số biến 0.87 Các toán hạng duy nhất 0.85 Tổng số dòng 0.78 Các thao tác duy nhất 0.52 Các ảnh hưởng ở mức thấp hơn -- Sau khi chọn các đặc trưng mã thích hợp, bước tiếp theo là định lượng chúng. Có nhiều cách tiếp cận khác nhau về định lượng các yếu tố đã lựa chọn. Phương pháp tốt nhất và phù hợp nhất nên được lựa chọn là dựa trên ý nghĩa thông thường và có xem xét bối cảnh và các loại vấn đề.

Bước tiếp theo là chuyển đổi các yếu tố định lượng thành ngôn ngữ tập mờ, ví dụ LOW, MEDIUM và HIGH có nghĩa là tỉ lệ phần trăm thấp, trung bình và cao của sự khác biệt giữa kế hoạch và các đoạn mã tương ứng. Khi giá trị của từng yếu tố được tính toán, một bộ quy tắc được tạo ra. Những quy tắc này sau đó được sử dụng trong lý luận: một biến đơn được tìm thấy các giá trị khác nhau của các yếu tố khác nhau. Biến đơn này có thể được đặt tên, ví dụ SIMILARITY thể hiện sự tương tự của kế hoạch cụ thể với khối lệnh.

Một nguyên tắc ví dụ như sau: nếu giá trị của số lượng biến là LOW và giá trị của toán hạng duy nhất là MEDIUM, thì SIMILARITY là MEDIUM.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ