Bối cảnh
Phần mềm ngày càng đóng vai trò quan trọng trong xã hội hiện đại. Tỷ trọng giá trị phần mềm trong các hệ thống ngày càng lớn. Tuy nhiên, trong nhiều hệ thống, lỗi của phần mềm gây ra các hậu quả đặc biệt nghiêm trọng, không chỉ thiệt hại về mặt kinh tế mà còn có thể làm tổn thất trực tiếp đến sinh mạng con người.
“Có khoảng hơn 50% ngân sách của một dự án phần mềm được chi cho các hoạt động liên quan đến nâng cao chất lượng phần mềm. Các nhà lãnh đạo ngành công nghiệp khẳng định rằng đó là do sự quan tâm không đầy đủ đến chất lượng phần mềm trong giai đoạn phát triển.”
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.
Lập trình là một hoạt động trí tuệ phức tạp và kỹ năng cốt lõi của sinh viên CNTT năm đầu tiên. 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. Tuy nhiên, chương trình của sinh viên thường không được tối ưu, vì chúng thường cố gắng giải quyết một vấn đề càng nhanh càng tốt mà không xem xét các giải pháp khác nhau cho một chương trình, không cần suy nghĩ về chất lượng các chương trình.
Cách tốt nhất để nâng cao chất lượng các chương trình của sinh viên là giảng viên bàn luận với sinh viên về cách giải quyết một vấn đề cụ thể, từ đó thảo luận về các bài tập mà sinh viên đã làm. Tuy nhiên, để nhận xét được tất cả các bài tập của sinh viên và giúp sinh viên suy nghĩ về chất lượng các chương trình của mình là nhiệm vụ khó khăn và tốn rất nhiều thời gian. Đặc biệt với quy mô lớp học hiện nay ở Việt Nam (đông sinh viên) lại càng khó khăn hơn. 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.
Trong bối cảnh trên, đề tài nghiên cứu của tôi 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.
Nội dung nghiên cứu
Trong luận văn này, nội dung nghiên cứu chính của tôi 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. Đồng thời tôi cũng 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.
Có nhiều cách tiếp cận của Phân tích chương trình. Tuy nhiên tôi nghiên cứu hai cách tiếp cận là: Phân tích dựa vào các đơn vị đo phần mềm (software metrics) và dựa vào Phân tích cấu trúc của chương trình để đánh giá hai chương trình tương tự.
Trên cơ sở lý thuyết đã tìm hiểu, tôi 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).
Các phần còn lại của luận văn có bố cục như sau:
- Chương một là Kiến thức cơ sở về phân tích chương trình. Chương này, tôi sẽ giới thiệu khái quát về phân tích chương trình, các ứng dụng, các kỹ thuật và một số công cụ phân tích chương trình đã có.
- Chương hai là Cây cú pháp trừu tượng (abstract syntax tree – AST). Chương này, tôi sẽ trình bày về cây cú pháp trừu tượng. Tôi sẽ nêu lên ứng dụng của cây cú pháp trừu tượng, đặc biệt là trong việc mô tả mã nguồn java phục vụ cho việc so sánh hai chương trình tương tự.
- Chương ba là các đơn vị đo phần mềm (Software metrics). Chương này, tôi sẽ trình bày sơ lược về các đơn vị đo phần mềm sử dụng trong đánh giá phần mềm. Tôi sẽ trình kỹ hơn về một đơn vị đo phần mềm là Cyclomatic complexity.
- Chương bốn là Bài toán ứng dụng trong giảng dạy. Chương này tôi sẽ mô tả bài toán để có thể ứng dụng trong giảng dạy cũng như các phương pháp, các công thức để giải bài toán này.
- Chương năm là Thực nghiệm. Chương này tôi sẽ trình bày về cách thức cài đặt cũng như kết quả cài đặt hệ thống đánh giá chương trình của sinh viên mà tôi đã đặt ra ở chương bốn.
Link tải tài liệu: https://tii.la/7RYzq0nQIf
Lưu ý: Link tải có chứa quảng cáo được rút gọn bằng Shrinkearn.com
Mật khẩu mở tệp PDF: sharetailieu.net