PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

102 1.5K 0
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Đ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

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên sinh viên: Nguyễn Đức Đạt Điện thoại liên lạc : 0944 783 023 Email: ddat145@yahoo.com.vn Lớp: KSTN-CNTT-K49 Hệ đào tạo: Chính qui Đồ án tốt nghiệp thực tại: Bộ môn công nghệ phần mềm Thời gian làm ĐATN: Từ ngày / /2009 đến / /2009 Mục đích nội dung ĐATN Nghiên cứu ứng dụng semantic web trình bảo trì phần mềm Các nhiệm vụ cụ thể ĐATN • • • • • Tìm hiểu cơng nghệ ontology Tìm hiểu vấn đề khó khăn q trình bảo trì phần mềm Tìm hiểu hướng tiếp cận ontology vào trình bảo trì phần mềm Phân tích thiêt kế hệ thống Plugin cho bảo trì phần mềm Xây dựng hệ thống Lời cam đoan sinh viên: Tôi – sinh viên Nguyễn Đức Đạt - cam kết ĐATN cơng trình nghiên cứu thân tơi hướng dẫn TS Cao Tuấn Dũng Các kết nêu ĐATN trung thực, chép tồn văn cơng trình khác Hà Nội, ngày tháng năm Tác giả ĐATN Nguyễn Đức Đạt Xác nhận giáo viên hướng dẫn mức độ hoàn thành ĐATN cho phép bảo vệ: Hà Nội, ngày tháng năm Giáo viên hướng dẫn TS Cao Tuấn Dũng Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 LỜI MỞ ĐẦU Bảo trì phần mềm công việc thực lặp lặp lại nhiều lần trình phát triển phần mềm Cùng với trình phát triển phần mềm việc bảo trì phần mềm ngày trở lên khó khăn dẫn tới tốn mặt thời gian, chi phí cơng sức bảo trì Đã có nhiều nhà nghiên cứu hướng tới việc xây dựng công cụ hỗ trợ cho cơng việc bảo trì đạt kết đơn giản vài tác vụ đơn lẻ trình bảo trì Cho đến người ta nỗ lực tìm kiếm giải pháp để hỗ trợ nhiều tác vụ bảo trì cách có hiệu Đã có hệ thống phát triển nhiều nơi nhiều nhà khoa học khắp giới Nhận thức khả ứng dụng thực tế lợi ích mà cơng cụ hỗ trợ bảo trì phần mềm đem lại nên em lựa chọn đề tài “Xây dựng hệ thống hỗ trợ bảo trì phần mềm tích hợp với Eclipse sử dụng công nghệ web ngữ nghĩa” Đây phần dự án Mitani2009 “Ứng dụng Semantic Web bảo trì tái sử dụng phần mềm” mơn Cơng Nghệ Phần Mềm Mục đích phát triển đề tài xây dựng công cụ, tạm đặt tên “Semantic Software Maintenance Plugin - SemanticSMPlugin”, để hỗ trợ nhà bảo trì số tác vụ cụ thể trình bảo trì Hệ thống dựa tài ngun sẵn có hệ thống source code tài liệu đặc tả hệ thống để tạo thông tin ngữ nghĩa sử dụng thông tin để xây dựng nên chức hỗ trợ bảo trì Nội dung trình bày đồ án Chương I: Bài tốn bảo trì phần mềm Chương II: Web ngữ nghĩa vai trị Ontology bảo trì phần mềm Chương III: Tổng quan công nghệ Chương IV: Phân tích thiết kế hệ thống bảo trì phần mềm dựa web ngữ nghĩa Chương V: Xây dựng hệ thống bảo trì phần mềm dựa web ngữ nghĩa Chương VI: Kết luận hướng phát triển Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 LỜI CẢM ƠN Trước hết, em xin chân thành gửi lời cảm ơn sâu sắc tới thầy cô giáo trường Đại học Bách Khoa Hà Nội nói chung thầy cô khoa Công nghệ Thông tin, mơn Cơng nghệ phần mềm nói riêng tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt năm học tập rèn luyện trường Em xin gửi lời cảm ơn đến thầy Cao Tuấn Dũng - Giảng viên môn Công nghệ phần mềm, khoa Công nghệ Thông tin, trường Đại học Bách Khoa Hà Nội hết lịng giúp đỡ, hướng dẫn dạy tận tình trình em làm đồ án tốt nghiệp Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, chăm sóc, đóng góp ý kiến giúp đỡ q trình học tập, nghiên cứu hoàn thành đồ án tốt nghiệp Hà Nội, ngày 28 tháng 05 năm 2009 Nguyễn Đức Đạt Sinh viên lớp KSTN-CNTT–K49 Khoa Công nghệ Thông tin - Đại học Bách Khoa Hà Nội Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Bảo trì phần mềm giai đoạn quan trọng tốn trình phát triển phần mềm Cùng với phát triển phần mềm khó khăn q trình bảo trì ngày tăng dẫn tới chi phí cho q trình bảo trì tăng theo Các cơng cụ cung cấp hỗ trợ cho việc bảo trì phần mềm mức đơn giản cho vài tác vụ đơn lẻ trình bảo trì Đồ án tập chung vào việc nghiên cứu xây dựng hệ thống dựa web ngữ nghĩa để trợ giúp cho trình bảo trì phần mềm Những nghiên cứu hệ thống áp dụng cho ngơn ngữ lập trình khác Tuy nhiên giới hạn đồ án thực cài đặt cụ thể Plugin cho môi trường phát triển Eclipse ngôn ngữ Java Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 ABSTRACT OF THESIS Software maintenance is a period of important and expensive in the process of software development Along with the software evolution, difficulties of maintaining were increased lead to the cost of software maintenance is increased The currently tools which provide support for software maintenance are simple for a single task during maintenance process This thesis focus on researching and building a system based on the ontology to assist the maintenance software The research can be applied to many different programming languages However, in the limitation of the thesis, the system implemented a specific Plugin for the development environment of Java language - Eclipse Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN ABSTRACT OF THESIS DANH MỤC HÌNH VẼ 11 HÌNH 1: CÁC LOẠI BẢO TRÌ PHẦN MỀM 11 11 HÌNH 2: CÁC HOẠT ĐỘNG TRONG QUY TRÌNH BẢO TRÌ PHẦN MỀM 13 11 HÌNH 3: TRÌNH TỰ BẢO TRÌ 13 11 HÌNH 4: CHI PHÍ PHÁT TRIỂN PHẦN MỀM 15 11 HÌNH 5: KIẾN TRÚC SEMANTIC WEB 18 11 HÌNH 6: VỊNG ĐỜI CỦA ONTOLOGY 21 11 HÌNH 7: ONTOLOGY CON 24 11 HÌNH 8: KIẾN TRÚC PELLET 32 11 HÌNH 9: CÁC THÀNH PHẦN TRONG ECLIPSE SDK 33 11 HÌNH 10: KIẾN TRÚC ECLIPSE PLUGIN 33 11 HÌNH 11: CẤU TRÚC DẠNG CÂY MỘT PROJECT JAVA 34 11 HÌNH 12: HƯỚNG TIẾP CẬN TỔNG QUAN CỦA HỆ THỐNG 37 11 HÌNH 13: KIẾN TRÚC TỔNG QUAN CỦA HỆ THỐNG 38 11 HÌNH 14: SEC ONTOLOGY 40 11 HÌNH 15: FRAGMENT ONTOLOGY 48 11 HÌNH 16: CÂY PHÂN CẤP CLASS CỦA DOCUMENT ONTOLOGY 49 11 HÌNH 17: MAPPING INSTANCES 54 11 HÌNH 18: MAPPING RELATIONS 54 11 HÌNH 19: SINH ANNOTATION TỪ SOURCE CODE 55 11 HÌNH 20: VÍ DỤ VỀ TẠO ANNOTATION TỪ SOURCE CODE 55 11 HÌNH 21: VÍ DỤ VỀ ANNOTATION ĐƯỢC SINH RA TỪ SOURCE CODE 57 11 HÌNH 22: SINH ANNOTATION TỪ DOCUMENT VÀ LINK VỚI ANNOTATION CỦA SOURCE CODE 59 11 HÌNH 23: VÍ DỤ VỀ TÀI LIỆU ĐƯỢC PHÂN TÍCH 61 11 HÌNH 24: VÍ DỤ VIỆC TẠO ANNOTATION TỪ DOCUMENT 62 11 HÌNH 25: TÊN THÀNH PHẦN SOURCE CODE TRONG TÀI LIỆU 62 11 HÌNH 26: TẠO THỦ CƠNG LIÊN KẾT GIỮA SOURCE CODE VÀ TÀI LIỆU 63 11 HÌNH 27: NHỮNG NGƯỜI SỬ DỤNG HỆ THỐNG 65 11 HÌNH 28: USE CASE TỔNG QUÁT CỦA HỆ THỐNG 66 11 HÌNH 29: KIẾN TRÚC HỆ THỐNG 68 11 HÌNH 30: GIAO DIỆN TÌM KIẾM TEST 79 11 Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 HÌNH 31: GIAO DIỆN TÌM KIẾM TÀI LIỆU 80 11 HÌNH 32: GIAO DIỆN TRA CỨU QUAN HỆ MÃ NGUỒN 81 11 HÌNH 33: GIAO DIỆN TRA CỨU CÁC ĐỘ ĐO 82 11 HÌNH 34: GIAO DIỆN CẢNH BÁO THAY ĐỔI TÀI LIỆU 82 11 HÌNH 35: GIAO DIỆN CÂY PHÂN CẤP GỌI HÀM 83 11 HÌNH 36: LỰA CHỌN THÀNH PHẦN CODE TỪ ĐOẠN TEXT ĐƯỢC SELECT 83 11 HÌNH 37: LỰA CHỌN MỘT THÀNH PHẦN SOURCE CODE 84 11 HÌNH 38: POPUP MENU DESCRIPTION IN 85 11 HÌNH 39: POPUP MENU LINK SOURCE CODE VỚI TEST 85 12 HÌNH 40: GIAO DIỆN LỰA CHỌN THÀNH PHẦN TÀI LIỆU 85 12 HÌNH 41: GIAO DIỆN PHÂN TÍCH CODE 86 12 HÌNH 42: GIAO DIỆN PHÂN TÍCH TÀI LIỆU 86 12 HÌNH 43: MƠ HÌNH CHỨC NĂNG TÌM KIẾM 87 12 HÌNH 44: GIAO DIỆN TẠO LAYER CHO HỆ THỐNG 89 12 HÌNH 45: CẬP NHẬT LIÊN KẾT GIỮA CÁC ARTIFACT 94 12 HÌNH 46: MƠ HÌNH LÀM TĂNG TỐC ĐỘ PHÂN TÍCH SOURCE CODE 97 12 CHƯƠNG I: BÀI TỐN BẢO TRÌ PHẦN MỀM 13 TỔNG QUAN VỀ BẢO TRÌ PHẦN MỀM 13 1.1 Khái niệm bảo trì phần mềm .13 1.2 Sự cần thiết bảo trì phần mềm 14 1.3 Quy trình bảo trì phần mềm 14 PHÂN TÍCH HIỆN TRẠNG CỦA HỆ THỐNG BẢO TRÌ PHẦN MỀM 16 2.1 Chi phí bảo trì phần mềm 16 2.2 Những khó khăn gặp phải trình bảo trì phần mềm 17 2.3 Tool hỗ trợ bảo trì 18 CHƯƠNG II: WEB NGỮ NGHĨA VÀ VAI TRÒ CỦA ONTOLOGY TRONG BẢO TRÌ PHẦN MỀM 20 WEB NGỮ NGHĨA 20 1.1 Khái niệm 20 1.2 Kiến trúc Semantic Web 20 ONTOLOGY 21 1.3 Khái niệm 21 1.4 Vòng đời Ontology 22 1.5 Phương pháp xây dựng Ontology .23 ONTOLOGY TRONG BẢO TRÌ PHẦN MỀM 25 1.6 Vai trị Ontology bảo trì phần mềm 25 1.7 Các ontology hệ thống 25 Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 CHƯƠNG III: TỔNG QUAN VỀ CÔNG NGHỆ 28 OWL – WEB ONTOLOGY LANGUAGE 28 1.8 Khái niệm OWL 28 1.9 Cấu trúc OWL 29 1.9.1.Namespace 29 1.9.2.Ontology headers .29 1.10 Các phần tử 29 1.10.1.Class Individual 29 1.10.2.Định nghĩa thuộc tính đơn giản 30 1.10.3.Các đặc tính thuộc tính .30 1.10.4.Ràng buộc thuộc tính .32 PELLET OWL REASONER 32 1.11 Giới thiệu Pellet 32 1.12 Các tính Pellet 32 1.13 Kiến trúc Pellet 33 ECLIPSE PLUGIN FRAMEWORK 34 1.14 Eclipse Plugin 35 1.15 AST Parser 36 CHƯƠNG IV: PHÂN TÍCH THIẾT KẾ HỆ THỐNG BẢO TRÌ PHẦN MỀM DỰA TRÊN WEB NGỮ NGHĨA .38 HƯỚNG TIẾP CẬN CỦA HỆ THỐNG 39 THIẾT KẾ ONTOLOGY 41 1.16 Thiết kế Source Code Ontology 41 1.17 Thiết kế Document Ontology 48 TẠO ANNOTATION 55 1.18 Tự động tạo annotation từ source code 55 1.19 Tạo annotation từ document link với source code .61 1.19.1.Thực tự động 61 1.19.2.Thực thủ công 65 MỤC ĐÍCH VÀ PHẠM VI CỦA HỆ THỐNG 66 1.20 Mục đích hệ thống 66 1.21 Phạm vi hệ thống .66 NHỮNG NGƯỜI SỬ DỤNG HỆ THỐNG 66 CÁC CHỨC NĂNG CHÍNH CỦA HỆ THỐNG 67 KIẾN TRÚC CHUNG CỦA HỆ THỐNG 69 70 ĐẶC TẢ CÁC CHỨC NĂNG CỦA HỆ THỐNG Sinh viên thực hiện: Nguyễn Đức Đạt 71 Lớp KSTN-CNTT-K49 1.22 Tìm kiếm tri thức .71 1.22.1.Tìm kiếm Test 71 1.22.2.Tìm kiếm tài liệu .72 1.23 Tra cứu quan hệ thành phần mã nguồn 74 1.24 Tra cứu độ đo metric 75 1.25 Tra cứu thứ tự gọi hàm 76 1.26 Tạo tri thức 77 1.26.1.Tạo Test .77 1.26.2.Tạo quan hệ mã nguồn tài liệu .78 THIẾT KẾ LỚP CỦA HỆ THỐNG 78 THIẾT KẾ MÀN HÌNH 81 1.27 Giao diện cửa sổ tìm kiếm Test 81 1.28 Giao diện cửa sổ tìm kiếm Document .81 1.29 Giao diện cửa sổ tra cứu quan hệ mã nguồn 82 1.30 Giao diện cửa sổ tra cứu độ đo 84 1.31 Giao diện cửa sổ cảnh báo thay đổi tài liệu 84 1.32 Giao diện cửa sổ phân cấp gọi hàm 84 1.33 Giao diện cửa sổ tạo Test 85 86 1.34 Giao diện tạo thủ công link thành phần source code với tài liệu source code với Test 87 1.35 Giao diện phân tích tự động artifact xem ontology .88 CHƯƠNG VI: CÀI ĐẶT VÀ PHÁT TRIỂN SEMANTICSMPLUGIN 89 CHỨC NĂNG TÌM KIẾM 89 CHỨC NĂNG XÁC ĐỊNH MỐI QUAN HỆ GIỮA CÁC THÀNH PHẦN MÃ NGUỒN 91 CHỨC NĂNG XEM CÁC ĐỘ ĐO METRIC 92 CHỨC NĂNG TẠO TEST 95 CHỨC NĂNG CẢNH BÁO THAY ĐỔI TÀI LIỆU 96 CHƯƠNG VII: XÂY DỰNG HỆ THỐNG BẢO TRÌ PHẦN MỀM DỰA TRÊN WEB NGỮ NGHĨA .98 XÂY DỰNG ỨNG DỤNG 98 1.1 Công cụ môi trường phát triển .98 1.2 Một số vấn đề lập trình 98 1.2.1.Tăng tốc độ trình phân tích source code .98 1.2.2.Đặt tên cho instance trình tự động sinh metadata .99 1.2.3.Sửa đổi ontology source code hệ thống bị thay đổi .100 GIỚI THIỆU KẾT QUẢ 100 CHƯƠNG VIII: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 101 Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 KẾT QUẢ ĐẠT ĐƯỢC 101 1.1 Về mặt lý thuyết 101 1.2 Về mặt chương trình .101 ĐÁNH GIÁ KẾT QUẢ 101 1.36 Về mặt lí thuyết .101 1.37 Về mặt chương trình .101 1.38 Một số hạn chế 102 10 HƯỚNG PHÁT TRIỂN 102 TÀI LIỆU THAM KHẢO 103 Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 10 1.35 Giao diện phân tích tự động artifact xem ontology Hình 41: Giao diện phân tích code Hình 42: Giao diện phân tích tài liệu Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 88 CHƯƠNG VI: CÀI ĐẶT VÀ PHÁT TRIỂN SemanticSMPlugin Chức tìm kiếm Chức tìm kiếm bao gồm chức tìm kiếm test, tìm kiếm tài liệu tìm kiếm mã nguồn Mơ hình xử lý hệ thống chức sau: Hình 43: Mơ hình chức tìm kiếm Sự khác biệt xử lý liệu chức tìm kiếm chủ yếu khác thành phần SPARQL Generator Thành phần có nhiệm vụ tạo câu truy vấn SPARQL tương ứng với giao diện lựa chọn tìm kiếm người dùng Câu truy vấn tạo gửi tới suy diễn để truy vấn kết mà người dùng mong muốn hiển thị kết giao diện truy vấn  Tìm kiếm Test Các tiêu chí tìm kiếm Test bao gồm: Tên tiêu chí Developer Success Last Modified At Tested At Implemented By Description in Document Ý nghĩa Người phát triển (người thực Test) Test có thành cơng hay không Thời điểm chỉnh sửa cuối Test Thời điểm Test Được cài đặt thành phần code Test mô tả tài liệu Bảng 1: Các tiêu chí tìm kiếm Test Ví dụ sau câu truy vấn SPARQL cho ngữ cảnh “Tìm kiếm Test test thành công, thực developer John thời gian sau ngày 20/5/2009” Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 89 PREFIX sec: PREFIX doc: PREFIX rdfs: PREFIX rdf: PREFIX fn: PREFIX owl: PREFIX xsd: SELECT * WHERE{ ?Test sec:hasDirectType ?Type ?Test sec:hasDeveloper ?developer ?Test sec:succeeded “true”^^xsd:boolean ?Test sec:testedAt ?testedAt optional {?Test sec:lastModifiedAt ?lastModifiedAt} optional{?Test sec:isTestOf ?isTestOf} optional{?Test sec:hasDescriptionInDocument ?hasDescriptionInDocument} FILTER(?testedAt < “2009/05/20”^^xsd:datetime) FILTER(?developer ~ 'John’) FILTER((?Type = 'Test') || (?Type = 'UnitTest') || (?Type = 'IntergatedTest')) }  Tìm kiếm tài liệu Các tiêu chí tìm kiếm tài liệu bao gồm: Tên tiêu chí Software Component Ý nghĩa Thành phần phần mềm muốn tìm tài liệu liên quan Bảng 2: Tiêu chí tìm kiếm Test Ví dụ sau câu truy vấn SPARQL cho ngữ cảnh “Tìm kiếm thành phần tài liệu liên quan tới method loadOWL class OWLLoader package ontology.owl” SELECT DISTINCT ?content ?page ?document ?content_of ?property WHERE { { ?property ?content_of ?content_of rdfs:label ?label ?paragraph doc:hasTextContent ?content ?paragraph doc:definedIn ?documentIns ?documentIns doc:localURI ?document ?paragraph doc:startPage ?page filter fn:starts-with(str(?property), "http://www.itee.uq.edu.au/~dwood/ontologies/sec0.2.owl#") filter fn:matches(str(?content), fn:string-join('[ ]', fn:string-join(str(?label),'[ ]'))) } UNION { sec:hasDescriptionInElement ?paragraph ?paragraph doc:hasTextContent ?content ?paragraph doc:definedIn ?documentIns ?documentIns doc:localURI ?document Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 90 ?paragraph doc:startPage ?page } } Câu truy vấn đưa đoạn tài liệu người dùng trực tiếp định nghĩa link tới method mà cịn đưa tài liệu gợi ý (khơng chắn 100% xác) dựa nội dung tài liệu Ví dụ đoạn tài liệu có nhắc tới class OWLLoader đưa người sử dụng tham khảo Các đoạn tài liệu đưa bao gồm đoạn tài liệu liên quan tới Class chứa method trên, tài liệu liên quan tới method mà method sử dụng… Chức xác định mối quan hệ thành phần mã nguồn Chức bao gồm hai chức sau:  Xác định quan hệ Layer/Module Xác định quan hệ Layer xác định số lời gọi lẫn Layer Nhưng trước hết ta cần phải tạo Layer cho hệ thống, công việc người lập trình đảm nhận có người lập trình hiểu rõ Layer bao gồm thành phần Việc tạo Layer thực giao diện sau, giao diện tùy biến phụ thuộc vào project phân tích, nghĩa project thay đổi liệu phân cấp package sau thay đổi Hình 44: Giao diện tạo Layer cho hệ thống Như layer bao gồm nhiều package, package chứa nhiều method Số lần gọi lẫn hai layer tính tổng số lần gọi method Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 91 package layer method package layer Việc tính tốn tổng thể count(*) AS ?numberCalls câu truy vấn sau: SELECT ?layer1 ?layer2 (count(*) AS ?numberCalls) WHERE { ?layer1 sec:containsMethod ?method1 ?layer2 sec:containsMethod ?method2 ?method1 sec:usesMethod ?method2 ?layer1 sec:hasDirectType ‘Layer’ ?layer2 sec:hasDirectType ‘Layer’ } GROUP BY ?layer1 ?layer2  Xác định quan hệ phụ thuộc Class Chức giúp ta biết quan hệ phụ thuộc class nhau, cụ thể class sử dụng class layer (sử dụng Layer định nghĩa từ trước) Ví dụ sau câu truy vấn SPARQL cho ngữ cảnh “Tìm kiếm class sử dụng class OWLLoader lớp ontology.owl” SELECT DISTINCT ?layer ?class WHERE { sec:usesClass ?class optional { ?layer sec:containsClass ?class ?layer sec:hasDirectType ‘Layer’ } } Ở ta sử dụng tùy chọn optional để lấy class chưa định nghĩa nằm layer Các class đưa vào layer chung gọi Default Layer, nhờ layer mà người sử dụng có thêm sở để định nghĩa thêm layer Chức xem độ đo metric Các độ đo xây dựng bao gồm: độ đo cho class, độ đo cho package độ đo cho layer Trong ontology độ đo khái niệm ClassMetric, PackageMetric LayerMetric ClassMetric sinh q trình phân tích source code cịn độ đo PackageMetric LayerMetric xây dựng cách áp dụng số luật sau sử dụng suy diễn Hai luật sử dụng chức viết SWRL sau: Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 92 Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 93 Hai luật mô tả lời cách ngắn gọn sau: • Nếu method M packageMemberOf package P, layer L lại containsPackage P layer L containsMethod method M • Nếu class C packageMember package P, class C lại chứa method M M packageMember package P Sau câu truy vấn độ đo:  Class Metric Metric cho class OWLLoader package ontology.owl SELECT ?numInterfaces ?numAttributes ?numMethods WHERE{ ?metric sec:isMetricOf sec:numInterfaces sec:numAttributes sec:numMethods sec:hasDirectType ?numInterfaces ?numAttributes ?numMethods 'ClassMetric'  Package Metric Metric cho package ontology.owl, riêng với package ta phải thực hai truy vấn Truy vấn đầu đưa số lượng thành phần packge, truy vấn sau đưa cụ thể số lượng thành phần class thuộc package SELECT ?package (count(?class) AS ?cls) (sum(?numMethods) AS ?methods) (count(?interface) AS ?inters) WHERE{ { ?package sec:hasPackageMember ?class ?metric sec:isMetricOf ?class ?metric sec:numMethods ?numMethods ?metric sec:hasDirectType 'ClassMetric' ?class sec:hasDirectType 'Class' filter (str(?package) = 'ontology.owl') } UNION { ?package sec:hasPackageMember ?interface ?interface sec:hasDirectType 'Interface' Sinh viên thực hiện: Nguyễn Đức Đạt Lớp KSTN-CNTT-K49 94 } filter (str(?package) = ' + packURI ') } group by ?package SELECT ?class (sum(?numInterfaces) AS ?inters) (sum(?numMethods) methods) (sum(?numAttributes) AS ?attrs) WHERE{ ?package sec:hasPackageMember ?class ?metric sec:isMetricOf ?class ?metric sec:numInterfaces ?numInterfaces ?metric sec:numAttributes ?numAttributes ?metric sec:numMethods ?numMethods ?metric sec:hasDirectType 'ClassMetric' ?class sec:hasDirectType 'Class' filter (str(?package) = ‘http://www.itee.uq.edu.au /~dwood/ontologies/sec0.2.owl#ontology.owl.OWLLoader') } group by ?class AS ?  Layer Metric Metric cho layer ‘apiLayer’ SELECT ?layer (count(?class) AS ?cls) (sum(?numInterfaces) AS ?inters) (sum(?numAttributes) AS ?atrs) (sum(?numMethods) AS ?methods) WHERE{ ?layer sec:hasDirectType 'Layer' ?layer sec:containsClass ?class ?metric sec:isMetricOf ?class ?metric sec:numInterfaces ?numInterfaces ?metric sec:numAttributes ?numAttributes ?metric sec:numMethods ?numMethods ?metric sec:hasDirectType 'ClassMetric' filter(str(?layer) = 'apiLayer') } group by ?layer Chức tạo Test Trong trình tạo Test, người dùng trước hết select đoạn code, đoạn code chứa method class cài đặt Test sặp tạo Như ta phải thực tìm kiếm method class có đoạn code select Để thực điều ta sử dụng viếng thăm node MethodDeclaration TypeDeclaration đây: public CreateTest extends ASTVisitor { public boolean visit(MethodDeclaration node) { int start = node.getStartPosition(); int nodeLength = node.getLength(); if((start >= offset) && (start + nodeLength

Ngày đăng: 16/10/2016, 02:35

Từ khóa liên quan

Mục lục

  • 1. Tổng quan về bảo trì phần mềm

  • 2. Phân tích hiện trạng của hệ thống bảo trì phần mềm

  • 1. Web ngữ nghĩa

  • 2. Ontology

  • 3. Ontology trong bảo trì phần mềm

  • 1. OWL – Web Ontology Language

  • 2. Pellet OWL Reasoner

  • 3. Eclipse Plugin Framework

  • 1. Hướng tiếp cận của hệ thống

  • 2. Thiết kế Ontology

  • 3. Tạo annotation

  • 4. Mục đích và phạm vi của hệ thống

  • 1. Những người sử dụng hệ thống

  • 2. Các chức năng chính của hệ thống

  • 3. Kiến trúc chung của hệ thống

  • 4. Đặc tả các chức năng của hệ thống

  • 5. Thiết kế lớp của hệ thống

  • 6. Thiết kế màn hình

  • 1. Chức năng tìm kiếm

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

Tài liệu liên quan