ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: XÂY DỰNG HỆ THỐNG PHÁT HIỆN SAO CHÉP MÃ NGUỒN Người hướng dẫn: ThS. PHAN CHÍ TÙNG Sinh viên thực hiện: HU Ỳ NH TH Ị DI Ệ U TRÂM Số thẻ sinh viên: 102150138 Lớp : 15T2 Đà Nẵng, 12 / 2019 NH Ậ N XÉT C Ủ A NGƯ Ờ I HƯ Ớ NG D Ẫ N ................................................................................................... ........................................ ................................................................................................... .................. ...................... ................................................................................................... ........................................ ............................................................................................... ........................................... . ................................................................................................... ........................................ ......................................................................... ........................................................ .......... ................................................................................................... ........................................ ................................................... ..................................................................... ................... ................................................................................................... ........................................ ............................. ................................................................................. ............................. ................................................................................................... ........................................ ....... .............................................................................................. ...................................... ................................................................................................... ......................... ............... ................................................................................................... ........................................ ................................................................................................... .. ...................................... ................................................................................................... ........................................ ............................................................................... .................................................... ........ ................................................................................................... ........................................ ......................................................... .................................................................. ................ ................................................................................................... ........................................ ................................... .............................................................................. .......................... ................................................................................................... ........................................ ............. .......................................................................................... .................................... ................................................................................................... ............................... ......... ................................................................................................... ........................................ ................................................................................................... ......... .............................. ................................................................................................... ........................................ ...................................................................................... ................................................. .... ................................................................................................... ........................................ ................................................................ ............................................................. .............. ................................................................................................... ........................................ .......................................... ........................................................................... ...................... ................................................................................................... ........................................ .................... ....................................................................................... ................................ NH Ậ N XÉT C Ủ A NGƯ Ờ I PH Ả N BI Ệ N ............................................................................ ............................................................... ............................................................................................................................. .............. ...................................................... ..................................................................................... ............................................................................................................................. .............. ................................ ........................................................................................................... ............................................................................................................................. .............. .......... ............................................................................................................................. .... ............................................................................................................................. .. ............ ............................................................................................................................. .............. ......................................................................................................... .................................. ............................................................................................................................. .............. ................................................................................... ........................................................ ............................................................................................................................. .............. ............................................................ ............................................................................... ............................................................................................................................. .............. ...................................... ..................................................................................................... ............................................................................................................................. .............. ................ ........................................................................................................................... ............................................................................................................................. ........ ...... ............................................................................................................................. .............. ............................................................................................................... ............................ ............................................................................................................................. .............. ......................................................................................... .................................................. ............................................................................................................................. .............. ................................................................... ........................................................................ ............................................................................................................................. ............. ............................................. .............................................................................................. ............................................................................................................................. .............. ....................... .................................................................................................................... ............................................................................................................................. .............. . ............................................................................................................................. ............. ...................................................................................................................... ..................... ............................................................................................................................. .............. ................................................................................................ ........... ................... ........ Đ Ạ I H Ọ C Đ À N Ẵ N G T R Ư Ờ N G Đ Ạ I H Ọ C B Á C H K H O A KHOA CÔNG NGHỆ THÔNG TIN 54, Nguyễn Lương Bằng, Hoà Khánh, Liên Chiểu, TP. Đà Nẵng Tel. 84.511.3.736.949, Fax. 84.511.842.771 - Website: itf.dut.edu.vn - E - mail: cntt@dut.udn.vn PHIẾU DUYỆT ĐỒ ÁN TỐT NGHIỆP I. Phần dành cho Sinh viên 1. Họ và tên: Huỳnh Thị Diệu Trâm 2. Mã Sinh viên: 102150138 3. Lớp: 15 T2 4. Tên đề tài: Xây dựng hệ thống phát hiện sao chép mã nguồn 5. Điện thoại: 0961213356 6. E - mail: htdtram97 @gmail.com 7. Họ và tên GVHD: ThS. Phan Chí Tùng II. Phần dành cho Hội đồng STT Nội dung đánh giá Kết luận 1. Trình bày báo cáo theo đúng mẫu qui định của Khoa 2. Không có sự sao chép nội dung báo cáo và chương trình đã có 3. Biên dịch mã nguồn và chạy được chương trình 4. Có kịch bản thực hiện với dữ liệu thử nghiệm 5. Kết quả thực hiện chương trình đúng theo báo cáo 6. Có sự đóng góp, phát triển của tác giả trong đồ án Ý kiến khác: ......................................................................................... .................................. ....................................................................................................... ............................. .............. Kết luận: Đạt yêu cầu Phải sửa chữa lại Không đạt yêu cầu Đà Nẵng, ngày tháng 12 năm 2019 Chủ tịch Hội đồng (Ký và ghi họ tên) Cán bộ duyệt kiểm tra (Ký và ghi họ tên) ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP 1. Thông tin chung: 1. Họ và tên sinh viên: Huỳnh Thị Diệu Trâm 2. Lớp: 15T2 Số thẻ SV: 102150138 3. Tên đề tài: Xây dựng hệ thống phát hiện sao chép mã nguồn 4. Người hướng dẫn: ThS. Phan Chí Tùng Học hàm/ học vị: Thạc Sĩ II. Nhận xét, đánh giá đồ án tốt nghiệp: 1. Về tính cấp thiết, tính mới, khả năng ứng dụng của đề tài: (điểm tối đa là 2đ) ……………………………………………………………………………………….. …………………………………………… ………………………………………….. 2. Về kết quả giải quyết các nội dung nhiệm vụ yêu cầu của đồ án: (điểm tối đa là 4đ) ……………………………………………………………………………………….. ……………………………………………………………………………………….. 3. Về hình thức, cấu trúc, bố cục của đồ án tốt nghiệp: (điểm tối đa là 2đ) ……… ……………………………………………………………………………….. ……………………………………………………………………………………….. 4. Đề tài có giá trị khoa học/ có bài báo/ giải quyết vấn đề đặt ra của doanh nghiệp hoặc nhà trường: (điểm tối đa là 1đ) ……………………………………………………………………………………….. …………………………………………………………………………… ………….. 5. Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………………………………………………………….. ……………………………………………………………………………………….. III. Tinh thần, thái độ làm việc của sinh viên: (điểm tối đa 1đ) ……………………………………………………………………………………….. IV. Đánh giá: 1. Điểm đánh giá: ……../10 (lấy đến 1 số lẻ thập phân) 2. Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không được bảo vệ Đà Nẵn g, ngày tháng 12 năm 2019 Người hướng dẫn TÓM T Ắ T Tên đ ề tài: Xây d ự ng h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n Sinh viên th ự c hi ệ n: Hu ỳ nh Th ị Di ệ u Trâm S ố th ẻ SV: 102150138 L ớ p: 15T2 Hi ệ n nay, vi ệ c sinh viên n ộ p bài t ậ p ở các l ớ p h ọ c ph ầ n thư ờ ng xuyên sao chép mã ngu ồ n v ớ i nhau, đ ề u này khi ế n cho vi ệ c đánh giá năng l ự c c ủ a sinh viên không chính xác. Đ ể gi ả i quy ế t v ấ n đ ề đó, em đã phát tri ể n đ ề tài “Xây d ự ng h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n” giúp gi ả m thi ể u s ự gian l ậ n sao chép mã ngu ồ n trong h ọ c t ậ p đ ể đánh giá đúng năng l ự c c ủ a m ỗ i sinh viên . H ệ th ố ng giúp tìm ra nh ữ ng bài t ậ p c ủ a sinh viên khác có đo ạ n mã ngu ồ n gi ố ng v ớ i sinh viên mu ố n so sánh, cho bi ế t đư ợ c t ỉ l ệ ph ầ n trăm s ự gi ố ng nhau và ch ỉ ra đo ạ n mã ngu ồ n trùng nhau gi ữ a hai bài t ậ p c ủ a sinh viên , giúp gi ả ng viên d ễ so sánh và đ ố i chi ế u các bài t ậ p v ề nhà c ủ a sinh viên đã th ự c hi ệ n . ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HÔI CHỦ NGHĨ A VIỆT NAM Độc lập - Tự do - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Thị Diệu Trâm Số thẻ sinh viên: 102150138 Lớp: 15T2 Khoa: Công nghệ thông tin Ngành: Công nghệ thông tin 1. Tên đề tài đồ án: Xây dựng hệ thống phát hiện sao chép mã nguồn 2. Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện 3. Các số liệu và dữ liệu ban đầu: ……………………………………………………………………………………………… 4. Nội dung các phần thuyết minh và tính toán: Nội dung thuyết minh gồm: Mở đầu: Phần mở đầu của luận văn giới thiệu tổng quan về đề tài, lý do chọn đề tài, đồng thời nêu lên mục đích và phương pháp thực hiện đề tài . Chương 1: Tổng quan về sao chép mã nguồn: Giới thiệu về sao chép mã nguồn, các phương pháp sử dụng và các hệ thống phát hiện sao ch ép mã nguồn. Chương 2: Xây dựng mô hình phát hiện sao chép mã nguồn: Trình bày các thuật toán, cơ sở lý thuyết để áp dụng xây dựng mô hình. Chương 3: Xây dựng hệ thống phát hiện sao chép mã nguồn: Trình bày công nghệ được sử dụng trong hệ thống, hồ sơ phâ n tích và hồ sơ thiết kế trong xây dựng hệ thống và luồng hoạt động của hệ thống. Chương 4: Triển khai và đánh giá: Mô tả cài đặt, vận hành hệ thống và đánh giá kết quả đạt được. Kết luận và hướng phát triển : Phần kết luận của luận văn, nhấn mạnh vấn đề đ ã được giải quyết, cũng như vấn đề chưa được giải quyết và hướng phát triển. 5. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ): ……………………………………………………………………………………………….. 6. Họ tên người hướng dẫn: ThS. Phan Chí Tùng 7. Ngày giao nhiệm vụ đồ án: ……../ ……./20 19 8. Ngày ho àn thành đồ án: ……../……./2019 Đà Nẵng, ngày tháng 12 năm 201 9 Trưởng Bộ môn Công nghệ phần mềm Người hướng dẫn i L Ờ I NÓI Đ Ầ U Trước hết, em xin bày tỏ tình cảm và lòng biết ơn của em tới thầy giáo T hs. Phan Chí Tùng . Người đã từng bước hướng dẫn, giúp đỡ em trong quá trình thực hiện đồ án tốt nghiệp của mình. Em xin chân thành cảm ơn các thầy cô giáo Khoa Công nghệ thông tin của Trường Đại học Bách khoa – Đại học Đà Nẵng đã dìu dắt, dạy dỗ em cả về kiến thức chuyên môn và tinh thần học tập để em có được những kiến thức thực hiện đồ án tốt nghiệp của mình. Em xin chân thành cảm ơn ban giám hiệu nhà trường, các phòng ban đã giúp đỡ tạo điều kiện tốt nhất cho em trong suốt thời gian học tập tại trường. Tuy có nh iều cố gắng trong quá trình học tập, cũng như trong quá trình làm đồ án tốt nghiệp không thể tránh khỏi những thiếu sót, em rất mong được sự góp ý quý báu của tất cả các thầy cô giáo cũng như tất cả các bạn để kết quả của em được hoàn thiện hơn. Một lần nữ a em xin chân thành cảm ơn tất cảm mọi người đã giúp em hoàn thiện đồ án này . Đà Nẵng, ngày 20 tháng 12 năm 2019 Sinh viên thực hiện Huỳnh Thị Diệu Trâm ii CAM ĐOAN Tôi xin cam đoan: 1. N ộ i dung trong đ ồ án này là do em th ự c hi ệ n dư ớ i s ự hư ớ ng d ẫ n tr ự c ti ế p c ủ a Ths. Phan Chí Tùng . 2. Các tham kh ả o dùng trong đ ồ án đ ề u đư ợ c trích d ẫ n rõ ràng tên tác gi ả , tên công trình, th ờ i gian, đ ị a đi ể m công b ố . 3. N ế u có nh ữ ng sao chép không h ợ p l ệ , vi ph ạ m, em xin ch ị u hoàn toàn trách nhi ệ m . Sinh viên th ự c hi ệ n Hu ỳ nh Th ị Di ệ u Trâm iii M Ụ C L Ụ C TÓM T Ắ T NHI Ệ M V Ụ Đ Ồ ÁN L Ờ I NÓI Đ Ầ U ................................ ................................ ................................ ............. i CAM ĐOAN ................................ ................................ ................................ ............... ii M Ụ C L Ụ C ................................ ................................ ................................ ................ iii DANH SÁCH B Ả NG ................................ ................................ ................................ . v DANH SÁCH HÌNH Ả NH ................................ ................................ ....................... vi DANH SÁCH T Ừ VI Ế T T Ắ T ................................ ................................ ................. vii M Ở Đ Ầ U ................................ ................................ ................................ .................... 1 CHƯƠNG 1 T Ổ NG QUAN V Ề SAO CHÉP MÃ NGU Ồ N ................................ . 3 1.1. Khái ni ệ m ................................ ................................ ................................ ......... 3 1.2. Các phương pháp và h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n ........................ 3 1.2.1. Phương pháp phát hi ệ n sao chép mã ngu ồ n ................................ ........... 3 1.2.2. H ệ th ố ng phát hi ệ n sao chép mã ngu ồ n ................................ ................. 4 1.3. K ế t chương ................................ ................................ ................................ ....... 7 CHƯƠNG 2 XÂY D Ự NG MÔ HÌNH PHÁT HI Ệ N SAO CHÉP MÃ NGU Ồ N 8 2.1. Mô hình phát hi ệ n sao chép mã ngu ồ n ................................ ........................... 8 2.2. Các giai đo ạ n c ủ a mô hình ................................ ................................ ............ 10 2.2.1. Tokenization ................................ ................................ ....................... 10 2.2.2. KGram và Hashing ................................ ................................ ............. 11 2.2.3. Build Windows và Select Fingerprints ................................ ................ 13 2.3. K ế t chương ................................ ................................ ................................ ..... 15 CHƯƠNG 3 XÂY D Ự NG H Ệ TH Ố NG PHÁT HI Ệ N SAO CHÉP MÃ NGU Ồ N ................................ ................................ ................................ ........ 16 3.1. Công ngh ệ s ử d ụ ng ................................ ................................ ......................... 16 3.1.1. T ổ ng quan v ề .NET ................................ ................................ ............. 16 3.1.2. M ô hình MVC (Mode – View - Controller) ................................ ........ 19 3.1.3. T ổ ng quan v ề ASP .NET MVC ................................ ........................... 20 iv 3.1.4. T ổ ng quan v ề Entity Framework ................................ ......................... 21 3.2. Phân tích thi ế t k ế h ệ th ố ng ................................ ................................ ............ 23 3.2.1. Phân tích nghi ệ p v ụ h ệ th ố ng ................................ .............................. 23 3.2.2. Sơ đ ồ phân rã ch ứ c năng ................................ ................................ ..... 23 3.2.3. Bi ể u đ ồ ca s ử d ụ ng ................................ ................................ .............. 24 3.2.4. Bi ể u đ ồ ho ạ t đ ộ ng ................................ ................................ ............... 28 3.3. Thi ế t k ế h ệ th ố ng ................................ ................................ ........................... 29 3.3.1. Bi ể u đ ồ l ớ p ................................ ................................ ......................... 29 3.3.2. Bi ể u đ ồ tu ầ n t ự ................................ ................................ ................... 30 3.3.3. Thi ế t k ế cơ s ở d ữ li ệ u ................................ ................................ .......... 31 3.4. K ế t chương ................................ ................................ ................................ ..... 34 CHƯƠNG 4 TRI Ể N KHA I VÀ ĐÁNH GIÁ ................................ ..................... 35 4.1. Yêu c ầ u c ấ u hình máy ch ủ ................................ ................................ ............. 35 4.2. Tri ể n khai h ệ th ố ng ................................ ................................ ........................ 35 4.3. K ế t chương ................................ ................................ ................................ ..... 37 K Ế T LU Ậ N VÀ HƯ Ớ NG PHÁT TRI Ể N ................................ ............................... 38 1. K ế t qu ả đ ạ t đư ợ c ................................ ................................ ............................ 38 2. Hư ớ ng phát tri ể n ................................ ................................ ........................... 38 TÀI LI Ệ U THAM KH Ả O ................................ ................................ ....................... 39 v DANH SÁCH B Ả NG B ả ng 1.1. B ả ng so sánh m ộ t s ố h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n hi ệ n nay .......... 7 B ả ng 3.1. Ca s ử d ụ ng đăng nh ậ p ................................ ................................ ................ 25 B ả ng 3.2. Ca s ử d ụ ng xem d anh sách bài t ậ p c ủ a sinh viên ................................ ........ 25 B ả ng 3.3. Ca s ử d ụ ng tìm ki ế m bài t ậ p c ủ a sinh viên ................................ ................. 26 B ả ng 3.4. Ca s ử d ụ ng xem danh sách bài t ậ p c ủ a sinh viên có đo ạ n mã trùng ............ 26 B ả ng 3.5. Ca s ử d ụ ng xem chi ti ế t t ừ ng c ặ p bài t ậ p gi ố ng nhau ................................ .. 27 B ả ng 3.6. Mô t ả b ả ng HocPhan ................................ ................................ .................. 31 B ả ng 3.7. Mô t ả b ả ng LopHocP han ................................ ................................ ........... 32 B ả ng 3.8. Mô t ả b ả ng ThongTin ................................ ................................ ................ 32 B ả ng 3.9. Mô t ả b ả ng SinhVien ................................ ................................ ................. 33 B ả ng 3.10. Mô t ả b ả ng SinhVienTrongLop ................................ ................................ 33 B ả ng 3.11. Mô t ả b ả ng BaiTap ................................ ................................ .................. 33 B ả ng 3.12. Mô t ả b ả ng BaiTapCuaSinhVien ................................ .............................. 33 vi DANH SÁCH HÌNH Ả NH Hình 1.1. Sơ đ ồ kh ố i c ủ a h ệ th ố ng SIM ................................ ................................ ....... 5 Hình 2.1. Mô hình t ổ ng quan c ủ a phương pháp phát hi ệ n sao chép mã ngu ồ n .............. 9 Hình 2.2. So sánh d ấ u vân tay ................................ ................................ ...................... 9 Hình 2.3. Ví d ụ v ề d ữ li ệ u đ ầ u vào ................................ ................................ ............. 10 Hình 2.4. D ữ li ệ u sau khi đã ti ề n x ử lý ................................ ................................ ....... 11 Hình 2.5.Các bư ớ c c ủ a thu ậ t toán Winnowing ................................ ........................... 14 Hình 3.1. Ki ế n trúc .NET Framework ................................ ................................ ........ 17 Hình 3.2. Thành ph ầ n cơ b ả n c ủ a IDE ................................ ................................ ....... 19 Hình 3.3. Mô hình MVC ................................ ................................ ............................ 20 Hình 3.4. Mô hình Entity Framework ................................ ................................ ........ 22 Hình 3.5. Sơ đ ồ phân r ã ch ứ c năng ................................ ................................ ............ 24 Hình 3.6. Bi ể u đ ồ ca s ử d ụ ng các ch ứ c năng c ủ a h ệ th ố ng ................................ ......... 24 Hình 3.7. Bi ể u đ ồ ho ạ t đ ộ ng ch ứ c năng qu ả n lý bài t ậ p c ủ a sinh viên ........................ 28 Hình 3.8. Bi ể u đ ồ các l ớ p ph ụ c v ụ ch ứ c năng qu ả n lý bài t ậ p c ủ a sinh viên ............... 29 Hình 3.9. Bi ể u đ ồ tu ầ n t ự c ủ a ch ứ c năng ki ể m tra gi ố ng nhau c ủ a bài t ậ p sinh viên ... 30 Hình 3.10. Thi ế t k ế cơ s ở d ữ li ệ u. ................................ ................................ .............. 31 Hình 4.1. Giao di ệ n c ủ a ch ứ c năng qu ả n lý bài t ậ p c ủ a sinh viên ............................... 35 Hình 4.2. Giao di ệ n ch ứ c năng hi ể n th ị danh sách các bài t ậ p sinh viên có đo ạ n mã trùng ................................ ................................ ................................ .......................... 36 Hình 4.3. Giao di ệ n ch ứ c năng hi ể n th ị chi ti ế t s ự gi ố ng nhau c ủ a hai đo ạ n mã ngu ồ n ................................ ................................ ................................ ................................ .. 36 Hình 4.4. Giao di ệ n ch ứ c năng hi ể n th ị chi ti ế t s ự gi ố ng nhau c ủ a hai đo ạ n mã ngu ồ n ................................ ................................ ................................ ................................ .. 37 Hình 4.5. Giao di ệ n ch ứ c năng hi ể n th ị chi ti ế t s ự gi ố ng nhau c ủ a hai mã ngu ồ n ....... 37 vii DANH SÁCH T Ừ VI Ế T T Ắ T T ừ vi ế t t ắ t Di ễ n gi ả i MS Microsoft COM Component Object Model LINQ Language - Integrated Query MSIL Microsoft Intermediate Language ASP Active Server Page MVC Mode View Controller URL Uniform Resource Locator IIS Internet Information Server Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 1 M Ở Đ Ầ U 1. T ổ ng quan v ề đ ề tài Vi ệ c tái s ử d ụ ng l ạ i các đo ạ n mã ngu ồ n b ằ ng cách sao chép nguyên v ẹ n ho ặ c có s ự thay đ ổ i nh ỏ trong mã ngu ồ n là m ộ t ho ạ t đ ộ ng ph ổ bi ế n trong ngành công nghi ệ p ph ầ n m ề m hi ệ n này. K ế t qu ả là các h ệ th ố ng ph ầ n m ề m thư ờ ng ch ứ a các đo ạ n mã ngu ồ n gi ố ng nhau g ọ i l à sao chép mã ngu ồ n. Sao chép mã ngu ồ n có th ể h ữ u ích trong m ộ t s ố trư ờ ng h ợ p, tuy nhiên nó l ạ i có th ể kéo theo h ậ u qu ả l ớ n trong quá trình b ả o trì và nâng c ấ p h ệ th ố ng ph ầ n m ề m. Trong lĩnh v ự c h ọ c t ậ p, tái s ử d ụ ng mã ngu ồ n là hình th ứ c ph ổ bi ế n, tuy nhiê n trong trư ờ ng h ợ p c ầ n ki ể m tra, đánh giá thì vi ệ c tái s ử d ụ ng mã ngu ồ n l ạ i gây ra tác h ạ i không nh ỏ . S inh viên có th ể sao chép mã ngu ồ n t ừ m ộ t ho ặ c nhi ề u sinh viên khác và c ố ý thay đ ổ i ho ặ c thêm vào nh ữ ng y ế u t ố không c ầ n thi ế t vào mã ngu ồ n làm m ặ c dù c ấ u trúc hoàn toàn gi ố ng nhau nh ằ m che d ấ u hành vi sao chép mã ngu ồ n c ủ a mình. Do đó em đ ề xu ấ t đ ề tài “ Xây d ự ng h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n ” . 2. M ụ c tiêu và ý nghĩa c ủ a đ ề tài 2.1. M ụ c đích - Nghiên c ứ u, áp d ụ ng thu ậ t toán Rabin - Karp , thu ậ t toán Winnowing đ ể x ây d ự ng mô hình phát hi ệ n sao chép mã ngu ồ n ; - Phát tri ể n h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n trên cơ s ở mô hình đ ề xu ấ t s ử d ụ ng Model - View - Controller (MVC) cho phép tìm ra các đo ạ n mã ngu ồ n gi ố ng nhau và chi ti ế t t ỷ l ệ ph ầ n trăm sao chép c ủ a các đo ạ n mã ngu ồ n. 2.2. Ý nghĩa - Giúp gi ả m thi ể u s ự gian l ậ n sao chép mã ngu ồ n trong h ọ c t ậ p đ ể đánh giá đúng năng l ự c c ủ a m ỗ i sinh viên. 3. Phương pháp th ự c hi ệ n - Phương pháp lý thuy ế t: nghiên c ứ u tài li ệ u, xây d ự ng mô hình, phương pháp pháp hi ệ n sao chép mã ngu ồ n. - Phương pháp th ự c nghi ệ m: xây d ự ng h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n và tri ể n khai trong th ự c t ế . 4. B ố c ụ c c ủ a đ ồ án Đồ án bao gồm các nội dung sau: Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 2 Mở đầu Chương 1: TỔNG QUAN VỀ SAO CHÉP MÃ NGUỒN Chương 2: XÂY DỰNG MÔ HÌNH PHÁT HIỆN SAO CHÉP MÃ NGUỒN Chương 3: XÂY DỰNG HỆ THỐNG PHÁT HIỆN SAO CHÉP MÃ NGUỒN Chương 4: TRIỂN KHAI VÀ ĐÁNH GIÁ Kết luận và hướng phát triển. Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 3 CHƯƠNG 1 T Ổ NG QUAN V Ề SAO CHÉP MÃ NGU Ồ N 1.1. Khái ni ệ m Sao chép mã ngu ồ n đư ợ c hi ể u là s ự sao chép mà không có m ộ t s ự thay đ ổ i nào ho ặ c có s ự thay đ ổ i nhưng r ấ t nh ỏ và không ả nh hư ở ng gì đ ế n c ấ u trúc mã ngu ồ n [1]. Theo [2 - 6 ], s ử a đ ổ i mã ngu ồ n có th ể đư ợ c phân thành hai lo ạ i chính: s ử a đ ổ i t ừ v ự ng và s ử a đ ổ i c ấ u trúc. S ử a đ ổ i t ừ v ự ng thư ờ ng không yêu c ầ u b ấ t k ỳ ki ế n th ứ c và k ỹ năng l ậ p trình. Ở h ầ u h ế t các trư ờ ng h ợ p, lo ạ i s ử a đ ổ i này có th ể d ễ dàng đư ợ c phát hi ệ n và b ỏ qua. Ví d ụ đi ể n hình c ủ a s ử a đ ổ i t ừ v ự ng là: S ử a đ ổ i đ ị nh d ạ ng c ủ a mã ngu ồ n: các trư ờ ng h ợ p như chèn ho ặ c xóa các dòng tr ố ng, các ng ắ t dòng b ổ sung, các kho ả ng tr ắ ng hay các ta b ; b ổ sung, s ử a đ ổ i ho ặ c xóa các comment; đ ổ i tên đ ị nh danh: bao g ồ m thay đ ổ i tên c ủ a các l ớ p, phương th ứ c và bi ế n ; t ách ho ặ c h ợ p nh ấ t các khai báo bi ế n: m ộ t s ố đ ị nh danh có th ể đư ợ c k ế t h ợ p trong cùng m ộ t khai báo bi ế n n ế u các bi ế n gi ố ng nhau ki ể u d ữ li ệ u ; b ổ sung, s ử a đ ổ i ho ặ c xóa các access modifiers ; s ử a đ ổ i các giá tr ị h ằ ng s ố . Không gi ố ng như s ử a đ ổ i t ừ v ự ng , s ử a đ ổ i c ấ u trúc đòi h ỏ i m ứ c đ ộ cao hơn ki ế n th ứ c và k ỹ năng l ậ p trình. Lo ạ i s ử a đ ổ i này làm cho phát hi ệ n r ấ t khó khăn. Ví d ụ đi ể n hình c ủ a s ử a đ ổ i c ấ u trúc là: Thay đ ổ i th ứ t ự các bi ế n trong các câu l ệ nh; t hay đ ổ i th ứ t ự c ủ a các câu l ệ nh trong các hàm; s ắ p x ế p l ạ i các hàm; b ổ sung ho ặ c lo ạ i b ỏ các câu l ệ nh, các phương th ứ c không bao gi ờ đư ợ c g ọ i ho ặ c các bi ế n th ừ a không bao gi ờ đư ợ c s ử d ụ ng; s ử a đ ổ i c ấ u trúc đi ề u ki ệ n ; t hay đ ổ i ki ể u d ữ li ệ u ; s ử a đ ổ i, thêm các bi ế n t ạ m th ờ i và các bi ể u th ứ c con . 1.2. Các phương pháp và h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n 1.2.1. Phương pháp phát hi ệ n sao chép mã ngu ồ n Hi ệ n nay, các phương pháp phát hi ệ n sao chép mã ngu ồ n đang đư ợ c s ử d ụ ng ph ổ bi ế n [6, 13 ] là: Text - based , Token - based , Tree - based , PDG - based (PDG – Program Dependency Graph) , Metrics - based , Hybrid - based : - Text - based: Là cách ti ế p c ậ n d ự a trên vi ệ c so kh ớ p m ộ t cách chính xác các chu ỗ i trong mã ngu ồ n, v ớ i phương pháp này thì ch ỉ hi ệ u qu ả trong vi ệ c phát hi ệ n hai mã ngu ồ n có gi ố ng nhau toàn b ộ hay không, n ế u ngư ờ i sao chép ch ỉ c ầ n s ử a đ ổ i m ộ t chút trong đo ạ n chương trình mình v ừ a sao chép thì s ẽ không b ị h ệ th ố ng phát hi ệ n ra; Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 4 - Token - based: Trong phương pháp này mã ngu ồ n đư ợ c chu ẩ n hóa và bi ể u di ễ n thành m ộ t chu ỗ i token, và s ử d ụ ng thu ậ t toán so sánh chu ỗ i đ ể tìm đo ạ n mã trùng l ặ p. Đi ề u này lo ạ i b ỏ đư ợ c các trư ờ ng h ợ p như thêm, s ử a, xóa kho ả ng tr ắ ng, comment, tên đ ị nh danh, …làm cho h ệ th ố ng chính xác hơn so v ớ i phương p háp text - based; - Tree - based: Toàn b ộ cơ s ở mã ngu ồ n đư ợ c phân tích cú pháp đ ể xây d ự ng thành cây phân tích cú pháp (AST). Các đo ạ n mã đư ợ c bi ể u di ễ n dư ớ i d ạ ng cây con c ủ a cây phân tích ho ặ c AST, s ử d ụ ng thu ậ t toán đ ể so sánh các cây con này. Phương pháp này cho phép phát hi ệ n s ự tương đ ồ ng ở m ứ c cao hơn. Ví d ụ như so sánh cây cú pháp có th ể bình thư ờ ng hóa các câu l ệ nh đi ề u ki ệ n ho ặ c là phát hi ệ n các c ấ u trúc tương đương gi ố ng nhau; - PDG - based: T ạ o ra các bi ể u đ ồ ph ụ thu ộ c chương trình(PDGs) t ừ mã ngu ồ n. Các đo ạ n mã là các sơ đ ồ con c ủ a các PDG này, s ử d ụ ng thu ậ t toán đ ể so sánh các sơ đ ồ con này. PDG n ắ m b ắ t lu ồ ng đi ề u khi ể n th ự c t ế trong m ộ t chương trình và cho phép xác đ ị nh v ị trí tương đương ở m ứ c cao hơn nhi ề u, v ớ i chi phí l ớ n hơn v ề đ ộ ph ứ c t ạ p và th ờ i g ian tính toán; - Metrics - based: Phương pháp này dùng đ ể đánh giá các s ố li ệ u mã ngu ồ n đã s ử d ụ ng, ví d ụ : s ố lư ợ ng bi ế n đã s ử d ụ ng, vòng l ặ p, đi ề u ki ệ n, toán t ử , …và sau đó so sánh d ự a trên các s ố li ệ u đó; - Hybrid - based: là s ự k ế t h ợ p m ộ t s ố phương pháp đã nêu trên. Ví d ụ : có th ể k ế t h ợ p kh ả năng phát hi ệ n c ủ a cây phân tích v ớ i t ố c đ ộ đư ợ c cung c ấ p b ở i cây h ậ u t ố (suffix trees) m ộ t lo ạ i c ấ u trúc d ữ li ệ u kh ớ p chu ỗ i. 1.2.2. H ệ th ố ng phát hi ệ n sao chép mã ngu ồ n Trong th ự c t ế , các h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n ph ổ bi ế n hi ệ n nay đ ề u ứ ng d ụ ng nh ữ ng phương pháp đã nêu trên, có th ể li ệ t kê: S IM , Marble, Plaggie , …. SIM SIM [7, 15] là h ệ th ố ng ki ể m tra s ự tương t ự t ừ v ự ng trong các văn b ả n ngôn ng ữ t ự nhiên và trong các chương trình đư ợ c vi ế t b ằ ng C, C ++, Java, Pascal, Modula - 2, Miranda, Lisp và mã trình biên d ị ch mã 8086 . Nó đư ợ c phát tri ể n vào năm 1989 b ở i Dick Grune t ạ i Đ ạ i h ọ c VU Amsterdam. Nó đư ợ c s ử d ụ ng đ ể phát hi ệ n mã trùng l ặ p trong các d ự án ph ầ n m ề m l ớ n, trong văn b ả n chương trình, trong các t ậ p l ệ nh shell và trong tài li ệ u; phát hi ệ n đ ạ o văn trong các d ự án (ph ầ n m ề m), giáo d ụ c . SIM là h ệ th ố ng có giao di ệ n b ằ ng c ommand line . Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 5 Hình 1 . 1 . Sơ đ ồ kh ố i c ủ a h ệ th ố ng SIM Quá trình S im s ử d ụ ng đ ể phát hi ệ n s ự tương đ ồ ng là mã hóa mã ngu ồ n trư ớ c, sau đó đ ể xây d ự ng b ả ng tham chi ế u có th ể đư ợ c s ử d ụ ng đ ể phát hi ệ n các k ế t qu ả kh ớ p t ố t nh ấ t gi ữ a các t ệ p đư ợ c g ử i và văn b ả n mà c ầ n đư ợ c so sánh. H ệ th ố ng SIM s ử d ụ ng thu ậ t toán String alignment đ ể so sánh hai chương trình. Marble Marble [8, 16] là m ộ t công c ụ phát hi ệ n sao chép mã ngu ồ n hư ớ ng c ấ u trúc đơn gi ả n, d ễ b ả o trì cho chương trình đư ợ c vi ế t b ằ ng Java, C# , Perl, PHP and XSLT , đư ợ c phát tri ể n vào năm 2002 t ạ i Đ ạ i h ọ c Utrecht . H ệ th ố ng s ử d ụ ng cách ti ế p c ậ n structure - based đ ể so sánh các bài n ộ p. Marble chu ẩ n hóa mã đ ể t ạ o mã token đ ộ c l ậ p v ớ i ngôn ng ữ , đ ể lo ạ i b ỏ các chi ti ế t kh ỏ i các t ệ p mà sinh viên d ễ dàng thay đ ổ i: phân tích t ừ v ự ng đư ợ c th ự c hi ệ n (đư ợ c th ự c hi ệ n trong Perl b ằ ng cách s ử d ụ ng các bi ể u th ứ c chính quy) gi ữ l ạ i các t ừ khóa (như class , for ) và tên class và tên phương th ứ c đư ợ c thay th ế thành t ừ đơn gi ả n hơn (như String, System, toString). Comments , kho ả ng tr ắ ng th ừ a , bi ế n h ằ ng và khai báo inport đư ợ c lo ạ i b ỏ m ộ t cách đơn gi ả n, các mã token khác đư ợ c tr ừ u tư ợ ng hóa v ớ i mã token “type” c ủ a nó . Ví d ụ : m ọ i s ố th ậ p l ụ c phân đư ợ c thay th ế b ằ ng H và m ọ i ký t ự b ằ ng ch ữ L. Vi ệ c so sánh th ự c t ế các t ệ p sau khi đc mã hóa đư ợ c th ự c hi ệ n b ằ ng cách s ử d ụ ng ti ệ n ích Unix / Linux diff. Đi ể m s ố đư ợ c tính t ừ t ỷ l ệ gi ữ a s ố dòng mà chúng khác nhau và t ổ ng s ố dòng trong hai t ệ p đư ợ c so sánh sau khi mã hóa. Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 6 Các k ế t qu ả đư ợ c trình bày thông qua t ệ p suspects.nf có m ộ t s ố dòng theo c ấ u trúc sau đây: “echo M1 S1 S2 M2 U/S && edit File 1 && edit File 2 ” . Trong đó, M1 và M2 các giá tr ị bi ể u th ị t ỷ l ệ ph ầ n trăm trùng kh ớ p, S1 và S2 cho chúng ta kích thư ớ c c ủ a các k ế t qu ả trùng nhau . Plaggie Plagg ie [9, 17] l à m ộ t h ệ th ố ng phát hi ệ n sao chép cho các chương trình đư ợ c vi ế t b ằ ng Java. Nó đư ợ c phát tri ể n vào năm 2002 b ở i Ahtiainen et al. t ạ i Đ ạ i h ọ c Công ngh ệ Helsinki . Nó là m ộ t ứ ng d ụ ng command line Java , không ph ả i là web - app. H ệ th ố ng chu ẩ n hóa mã ngu ồ n thành chu ỗ i token, đ ể so sánh hai mã ngu ồ n thì h ệ th ố ng s ẽ so sánh 2 token đư ợ c chu ẩ n hóa t ừ 2 mã ngu ồ n đó s ử d ụ ng thu ậ t toán Greedy String Tiling đư ợ c gi ớ i thi ệ u b ở i Michael Wise . Khi so sánh hai chu ỗ i token A và B, m ụ c đích là tìm m ộ t t ậ p h ợ p các chu ỗ i con gi ố ng nhau và tho ả i mãn các quy t ắ c: B ấ t k ỳ mã token nào c ủ a A ch ỉ có th ể đư ợ c k h ớ p v ớ i chính xác m ộ t mã token t ừ B. Quy t ắ c này nghĩa là không th ể kh ớ p hoàn toàn các ph ầ n c ủ a văn b ả n ngu ồ n đã đư ợ c sao chép trong chương trình đ ạ o văn. ; C ác chu ỗ i con đư ợ c tìm th ấ y đ ộ c l ậ p v ớ i v ị trí c ủ a chúng trong chu ỗ i. Quy t ắ c này có nghĩa r ằ ng s ắ p x ế p l ạ i các ph ầ n c ủ a mã ngu ồ n là không có hi ệ u qu ả , v ẫ n phát hi ệ n ra s ự sao chép; Các k ế t h ợ p chu ỗ i con dài đư ợ c ưa tiên hơn các chu ỗ i ng ắ n, vì chúng đáng tin c ậ y hơn. Chu ỗ i ng ắ n gi ố ng nhau là nhi ề u kh ả năng là gi ả . Theo m ặ c đ ị nh, k ế t qu ả đư ợ c hi ể n th ị b ằ n g văn b ả n thu ầ n và đư ợ c lưu tr ữ ở đ ị nh d ạ ng HTML. K ế t qu ả bao g ồ m m ộ t b ả ng hi ể n th ị các s ố li ệ u th ố ng kê như phân ph ố i các giá tr ị tương t ự khác nhau, s ố lư ợ ng t ệ p đư ợ c g ử i, v.v. K ế t qu ả bao g ồ m m ộ t b ả ng có th ể s ắ p x ế p ch ứ a các k ế t qu ả hàng đ ầ u và 8 giá tr ị tương t ự khác nhau c ủ a chúng. T ừ vi ệ c phân tích m ộ t s ố h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n nêu trên em đưa ra k ế t qu ả so sánh như B ả ng 1.1. Các h ệ th ố ng nêu trên đ ề u còn t ồ n t ạ i m ộ t s ố h ạ n ch ế như: giao di ệ n h ệ th ố ng ti ệ n l ợ i, k ế t qu ả hi ể n th ị chưa đư ợ c rõ ràng, s ố lư ợ ng ngôn ng ữ l ậ p trình đư ợ c h ỗ tr ợ chưa nhi ề u, … Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 7 B ả ng 1 . 1 . B ả ng so sánh m ộ t s ố h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n hi ệ n nay SIM Marble Plaggie 1 - Supported languages 5 1 1 2 - Extendability + - - 3 - Presentation of results (1 - 5) 2 3 4 4.Usability 2 2 3 5 - Exclusion of template code - - + 6 - Exclusion of small files - + - 7 - Historical comparisons + + - Trong đó, “+”: có, “ - ”: không, và đ ố i v ớ i các tiêu chí 3 và 4 s ẽ đánh giá theo thang đi ể m t ừ 1 đ ế n 5, 1 nghĩa là “x ấ u” và 5 nghĩa là “r ấ t t ố t”. Do đó em đ ề xu ấ t đ ề tài “ Xây d ự ng h ệ th ố ng phát hi ệ n sao chép mã ngu ồ n ” cho phép phát hi ệ n sao chép mã ngu ồ n trên cơ s ở áp d ụ ng các thu ậ t toán như thu ậ t toán Rabin - Karp, thu ậ t toán Winnowing giúp ngư ờ i dùng thu ậ n ti ệ n, d ễ dàng và rõ ràng hơn. 1.3. K ế t chương Chương này cung cấp cho người đọc cái nhìn tổng quan về vấn đề sao chép mã nguồn, các phương pháp phát hiện sao chép mã nguồn và các hệ thống phát hiện sao chép mã nguồn hiện nay. Xây d ự ng h ệ th ố n g phát hi ệ n sao chép mã ngu ồ n SVTH : Hu ỳ nh Th ị Di ệ u Trâm GVHD : ThS. Phan Chí Tùng 8 CHƯƠNG 2 XÂY D Ự NG MÔ HÌNH PH Á T HI Ệ N SAO CHÉP MÃ NGU Ồ N 2.1. Mô hình phát hi ệ n sao chép mã ngu ồ n Mô hình phát hi ệ n sao chép mã ngu ồ n g ồ m 10 giai đo ạ n đư ợ c mô t ả như hình 2.1. Trong đó: - Input là các file mã ngu ồ n mu ố n so sánh; - Pre - processing là quá trình ti ề n x ử lý, lo ạ i b ỏ các thành ph ầ n không quan tr ọ ng mà không ả nh hư ở ng đ ế n c ấ u trúc mã ngu ồ n: các kho ả ng tr ắ ng, t ấ t c ả comment, import, using, … - Tokenization là quá trình chu ẩ n hóa mã ngu ồ n sau khi đã đư ợ c ti ề n x ử lý thành chu ỗ i token; - KGram là quá trình t ạ o ra các k - gram t ừ chu ỗ i token; - Hashing là quá trình tính các giá tr ị hash t ừ các k - gram t ạ o ra; - B uild Windows là quá trình xây d ự ng c ử a s ổ t ừ hash c ủ a k - gram đã có; - Select Fingerprints là quá trình ch ọ n ra b ộ d ấ u vân tay t ừ c ác c ử a s ổ đã xây d ự ng trư ớ c đó; - Compare Fingerprints là quá trình so sánh các b ộ d ấ u vân tay c ủ a các t ệ p, so sánh t ừ ng c ặ p b ộ d ấ u vân tay v ớ i nhau, m ỗ i hash c ủ a b ộ này đư ợ c so sánh v ớ i t ấ t c ả hash c ủ a b ộ kia, quá trình đư ợ c mô t ả như hình 2.2; - Tính t ỉ l ệ p h ầ n trăm gi ố ng nhau: Sau khi tìm ra đư ợ c t ậ p h ợ p các hash gi ố ng nhau, ti ế n hành tính t ỉ l ệ ph ầ n trăm gi ố ng nhau theo công th ứ c như sau:
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: XÂY DỰNG HỆ THỐNG PHÁT HIỆN SAO CHÉP MÃ NGUỒN Người hướng dẫn: ThS PHAN CHÍ TÙNG Sinh viên thực hiện: HUỲNH THỊ DIỆU TRÂM Số thẻ sinh viên: 102150138 Lớp: 15T2 Đà Nẵng, 12/2019 NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN ĐẠI HỌC ĐÀ N ẴNG T RƯ ỜNG Đ ẠI HỌC BÁC H K HO A KHOA CÔNG NGHỆ THƠNG TIN 54, Nguyễn Lương Bằng, Hồ Khánh, Liên Chiểu, TP Đà Nẵng Tel 84.511.3.736.949, Fax 84.511.842.771 - Website: itf.dut.edu.vn - E-mail: cntt@dut.udn.vn PHIẾU DUYỆT ĐỒ ÁN TỐT NGHIỆP I Phần dành cho Sinh viên Họ tên: Huỳnh Thị Diệu Trâm Mã Sinh viên: 102150138 Lớp: 15T2 Tên đề tài: Xây dựng hệ thống phát chép mã nguồn Điện thoại: 0961213356 E-mail: htdtram97@gmail.com Họ tên GVHD: ThS Phan Chí Tùng II Phần dành cho Hội đồng Nội dung đánh giá STT Kết luận Trình bày báo cáo theo mẫu qui định Khoa Khơng có chép nội dung báo cáo chương trình có Biên dịch mã nguồn chạy chương trình Có kịch thực với liệu thử nghiệm Kết thực chương trình theo báo cáo Có đóng góp, phát triển tác giả đồ án Ý kiến khác: Kết luận: Đạt yêu cầu Phải sửa chữa lại Không đạt yêu cầu Đà Nẵng, ngày tháng 12 năm 2019 Chủ tịch Hội đồng Cán duyệt kiểm tra (Ký ghi họ tên) (Ký ghi họ tên) ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Thông tin chung: Họ tên sinh viên: Huỳnh Thị Diệu Trâm Lớp: 15T2 Số thẻ SV: 102150138 Tên đề tài: Xây dựng hệ thống phát chép mã nguồn Người hướng dẫn: ThS Phan Chí Tùng Học hàm/ học vị: Thạc Sĩ II Nhận xét, đánh giá đồ án tốt nghiệp: Về tính cấp thiết, tính mới, khả ứng dụng đề tài: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về kết giải nội dung nhiệm vụ yêu cầu đồ án: (điểm tối đa 4đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về hình thức, cấu trúc, bố cục đồ án tốt nghiệp: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Đề tài có giá trị khoa học/ có báo/ giải vấn đề đặt doanh nghiệp nhà trường: (điểm tối đa 1đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………………………………………………………… ……………………………………………………………………………………… III Tinh thần, thái độ làm việc sinh viên: (điểm tối đa 1đ) ……………………………………………………………………………………… IV Đánh giá: Điểm đánh giá: …… /10 (lấy đến số lẻ thập phân) Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng 12 năm 2019 Người hướng dẫn TÓM TẮT Tên đề tài: Xây dựng hệ thống phát chép mã nguồn Sinh viên thực hiện: Huỳnh Thị Diệu Trâm Số thẻ SV: 102150138 Lớp: 15T2 Hiện nay, việc sinh viên nộp tập lớp học phần thường xuyên chép mã nguồn với nhau, khiến cho việc đánh giá lực sinh viên khơng xác Để giải vấn đề đó, em phát triển đề tài “Xây dựng hệ thống phát chép mã nguồn” giúp giảm thiểu gian lận chép mã nguồn học tập để đánh giá lực sinh viên Hệ thống giúp tìm tập sinh viên khác có đoạn mã nguồn giống với sinh viên muốn so sánh, cho biết tỉ lệ phần trăm giống đoạn mã nguồn trùng hai tập sinh viên, giúp giảng viên dễ so sánh đối chiếu tập nhà sinh viên thực ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Thị Diệu Trâm Số thẻ sinh viên: 102150138 Lớp:15T2 Khoa: Công nghệ thông tin Ngành: Công nghệ thông tin Tên đề tài đồ án: Xây dựng hệ thống phát chép mã nguồn Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: ……………………………………………………………………………………………… Nội dung phần thuyết minh tính tốn: Nội dung thuyết minh gồm: Mở đầu: Phần mở đầu luận văn giới thiệu tổng quan đề tài, lý chọn đề tài, đồng thời nêu lên mục đích phương pháp thực đề tài Chương 1: Tổng quan chép mã nguồn: Giới thiệu chép mã nguồn, phương pháp sử dụng hệ thống phát chép mã nguồn Chương 2: Xây dựng mơ hình phát chép mã nguồn: Trình bày thuật tốn, sở lý thuyết để áp dụng xây dựng mô hình Chương 3: Xây dựng hệ thống phát chép mã nguồn: Trình bày cơng nghệ sử dụng hệ thống, hồ sơ phân tích hồ sơ thiết kế xây dựng hệ thống luồng hoạt động hệ thống Chương 4: Triển khai đánh giá: Mô tả cài đặt, vận hành hệ thống đánh giá kết đạt Kết luận hướng phát triển : Phần kết luận luận văn, nhấn mạnh vấn đề giải quyết, vấn đề chưa giải hướng phát triển Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): ……………………………………………………………………………………………… Họ tên người hướng dẫn: ThS Phan Chí Tùng Ngày giao nhiệm vụ đồ án: …… /……./2019 Ngày hoàn thành đồ án: …… /……./2019 Đà Nẵng, ngày tháng 12 năm 2019 Trưởng Bộ môn Công nghệ phần mềm Người hướng dẫn LỜI NÓI ĐẦU Trước hết, em xin bày tỏ tình cảm lịng biết ơn em tới thầy giáo Ths Phan Chí Tùng Người bước hướng dẫn, giúp đỡ em trình thực đồ án tốt nghiệp Em xin chân thành cảm ơn thầy cô giáo Khoa Công nghệ thông tin Trường Đại học Bách khoa – Đại học Đà Nẵng dìu dắt, dạy dỗ em kiến thức chuyên môn tinh thần học tập để em có kiến thức thực đồ án tốt nghiệp Em xin chân thành cảm ơn ban giám hiệu nhà trường, phòng ban giúp đỡ tạo điều kiện tốt cho em suốt thời gian học tập trường Tuy có nhiều cố gắng trình học tập, trình làm đồ án tốt nghiệp tránh khỏi thiếu sót, em mong góp ý quý báu tất thầy cô giáo tất bạn để kết em hoàn thiện Một lần em xin chân thành cảm ơn tất cảm người giúp em hoàn thiện đồ án Đà Nẵng, ngày 20 tháng 12 năm 2019 Sinh viên thực Huỳnh Thị Diệu Trâm i CAM ĐOAN Tôi xin cam đoan: Nội dung đồ án em thực hướng dẫn trực tiếp Ths Phan Chí Tùng Các tham khảo dùng đồ án trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm cơng bố Nếu có chép không hợp lệ, vi phạm, em xin chịu hoàn toàn trách nhiệm Sinh viên thực Huỳnh Thị Diệu Trâm ii MỤC LỤC TÓM TẮT NHIỆM VỤ ĐỒ ÁN LỜI NÓI ĐẦU i CAM ĐOAN .ii MỤC LỤC iii DANH SÁCH BẢNG v DANH SÁCH HÌNH ẢNH vi DANH SÁCH TỪ VIẾT TẮT vii MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ SAO CHÉP MÃ NGUỒN 1.1 Khái niệm 1.2 Các phương pháp hệ thống phát chép mã nguồn 1.2.1 Phương pháp phát chép mã nguồn 1.2.2 Hệ thống phát chép mã nguồn 1.3 Kết chương CHƯƠNG XÂY DỰNG MƠ HÌNH PHÁT HIỆN SAO CHÉP MÃ NGUỒN 2.1 Mơ hình phát chép mã nguồn 2.2 Các giai đoạn mơ hình 10 2.2.1 Tokenization 10 2.2.2 KGram Hashing 11 2.2.3 Build Windows Select Fingerprints 13 2.3 Kết chương 15 CHƯƠNG NGUỒN XÂY DỰNG HỆ THỐNG PHÁT HIỆN SAO CHÉP MÃ 16 3.1 Công nghệ sử dụng 16 3.1.1 Tổng quan NET 16 3.1.2 Mơ hình MVC (Mode – View - Controller) 19 3.1.3 Tổng quan ASP NET MVC 20 iii