XÂY DỰNG HỆ THỐNG BẢO TRÌ PHẦN MỀM TÍCH HỢP VỚI ECLIPSE SỬ DỤNG CÔNG NGHỆ WEB NGỮ NGHĨA Giáo viên hướng dẫn : TS... Khái niệm BTPM Bảo trì là công việc tu sửa, thay đổi phần mềm đã được
Trang 1XÂY DỰNG HỆ THỐNG BẢO TRÌ
PHẦN MỀM TÍCH HỢP VỚI ECLIPSE SỬ DỤNG CÔNG NGHỆ
WEB NGỮ NGHĨA
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 : CNTT – KSTN - K49
Trang 2Nội dung
1 Bài toán bảo trì phần mềm
2 Tiếp cận web ngữ nghĩa cho bài toán BTPM
3 Xây dựng công cụ hỗ trợ BTPM
4 Kết luận và hướng phát triển
Trang 3Khái niệm BTPM
Bảo trì là công việc tu sửa, thay đổi phần mềm đã được phát triển (chương trình, dữ liệu, các loại tài liệu đặc
tả, …) theo những lý do nào đó
Chi phí cho việc bảo trì [6]
50% thời gian bảo trì là đọc hiểu hệ thống cũ
67%
15%
3%
3% 5% 7%
Trang 4Một số tồn tại với cách bảo trì hiện thời
Các hệ thống quản lý artifact (source code, tài liệu…) độc lập với nhau
Chưa quan tâm nhiều đến sự liên kết giữa các thành phần phần mềm
Trang 5Ngữ cảnh và mục tiêu của đề tài
Nằm trong đề tài nghiên cứu Mitani2009
Trang 6Nội dung
1 Bài toán bảo trì phần mềm
2 Tiếp cận web ngữ nghĩa cho bài toán BTPM
3 Xây dựng công cụ hỗ trợ BTPM
4 Kết luận và hướng phát triển
Trang 7Web ngữ nghĩa?
Là sự mở rộng của web hiện tại
Các thông tin được gắn thêm ngữ nghĩa cho phép máy tính có thể hiểu được
Trang 9Ý tưởng ứng dụng web ngữ nghĩa trong BTPM
Sử dụng ontology để xây dựng các annotation mô tả
source code, tài liệu và các mối quan hệ giữa chúng
Truy vấn ngữ nghĩa dữ liệu
Sử dụng luật suy diễn
Chia sẻ thông tin
Trang 10Nội dung
1 Bài toán bảo trì phần mềm
2 Tiếp cận web ngữ nghĩa cho bài toán BTPM
3 Xây dựng công cụ hỗ trợ BTPM
4 Kết luận và hướng phát triển
Trang 11Công cụ hỗ trợ BTPM
Mục đích:
Các công việc chính
Sự phụ thuộc giữa các thành phần code
Mối liên kết ngữ nghĩa giữa mã nguồn và tài liệu
Trang 12Tạo ontology source code
Ontology Source Code
Ngôn ngữ: OWL DL Bao gồm:
BNF (Backus–Naur Form)
Concepts và cây phân cấp
Kế thừa có chọn lọc
Thuộc tính
Trang 13Tạo ontology document
Ontology Document
Ngôn ngữ: OWL DL Bao gồm:
…
Tài liệu hệ thống
Concepts và cây phân cấp
Thuộc tính
Trang 14Sinh tự động annotation về sự phụ thuộc các thành phần source code
Project & các file nguồn
Bộ Phân Tích (Parser)
Cây cú pháp trừu tượng
Đối sánh
Ontology
Chú thích ngữ nghĩa
Trang 15Tạo annotation từ code (tiếp)
Class
Method Lời định nghĩa hàm
Lời định nghĩa lớp
Ánh xạ
<sec0.2:Method
rdf:id="#org.jgraph.example.IconExample/createCellAttributes(java.awt.geom.Point2D)“> <sec0.2:hasSource rdf:resource=“#/Graph/src/org/jgraph/example/IconExample.java"/> <rdfs:label xml:lang="en">createCellAttributes</rdfs:label>
Trang 16Kết quả
Trang 17Sinh tự động annotation về mối liên kết giữa mã nguồn và tài liệu
Section (3.2.2 The EDGE AND…)
hasParagraph – Paragraph (The Edge interface…)
Trang 19Chức năng tạo chú thích ngữ nghĩa thủ công
Những thông tin không thể thực hiện được tự động
Class – encodesRequirement – Requirement
Method – entryPointFor – Requiremnt
SoftwareComponent – hasTest – Test
SoftwareComponent – hasDescriptionIn - DocumentElement
Tạo Test
…
Giao diện đồ họa, thao tác
thuận tiện và tối ưu
Trang 21Áp dụng matching code-tài liệu trong chức năng cảnh báo thay đổi
Trang 22testedAt 6/6/2009
testedAt
Trang 23Chức năng tìm kiếm Test
Trang 24Ví dụ 1:
#scanTree() usesMethod #scanTree()
scanTree là một hàm đệ quy
Trang 25SELECT ?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
Chức năng xem quan hệ giữa các layer (dùng rule)
Layer : một tầng trong kiến trúc phân tầng của một phần
mềm
Layer - containsMethod - method
Trang 26Tạo luật
Sử dụng luật (SWRL) để tạo ra quan hệ
layer – containsMethod – method
Trang 27Giao diện quan hệ các layer
Số lần gọi giữa các layer với nhau
Class được sử dụng
bởi class Jgraph
trong modelLayer
Trang 28Một số chức năng khác
MetricChartView Hiển thị biểu đồ các độ đo của package, class
RequirementView
Hiển thị thông tin về các Requirement, cho phép nhảy tới các class cài đặt requirement này, hay method mà người dùng nên đọc để hiểu về requirement đó.
MethodCall Quan hệ gọi lẫn nhau giữa các method
CodeDependence Xem sự phụ thuộc lẫn nhau giữa các class
CreateTest Tạo Test và các thông tin ngữ nghĩa liên quan tới Test
CreateManualAnn
otation
Tạo thủ công các chú thích ngữ nghĩa
Class – encodesRequirement – Requirement Method – entryPointFor – Requirement SoftwareComponent – hasTest – Test SoftwareComponent – hasDescriptionIn – DocumentElement ….
AnnotationManag
er Quản lý chú thích ngữ nghĩa, duyệt các khái niệm, quan hệ trong ontology
Trang 29Nội dung
1 Bài toán bảo trì phần mềm
2 Tiếp cận web ngữ nghĩa cho bài toán BTPM
3 Xây dựng công cụ hỗ trợ BTPM
4 Kết luận và hướng phát triển
Trang 30Kết luận
Chương trình
Cài đặt plugin với 98 class, 14434 dòng code
Tự động hóa một phần trong quá trình tạo annotation
Cung cấp khá nhiều chức năng
Dễ sử dụng lại khi hỗ trợ các ngôn ngữ khác trên Eclipse
Hạn chế
Tài liệu ở định dạng pdf
Mới chỉ áp dụng cho ngôn ngữ lập trình JAVA
Mới quản lý thay đổi theo chiều code document
Trang 31So sánh với các hệ thống khác
Hệ thống không dựa trên web ngữ nghĩa
mới
Hệ thống dựa trên web ngữ nghĩa
Tạo annotation từ code và tài liệu được thực hiện bằng tay
Sử dụng ngôn ngữ KANDOR để mô tả tri thức
Trang 32Hướng phát triển
Quản lý thay đổi theo chiều document – code
Phát triển tiếp các thuật toán sinh tự động
Thông kê các thay đổi, ý nghĩa thay đổi
Làm việc với server
Trang 33Tài liệu tham khảo
[1] René Witte , Yonggang Zhang , Juergen Rilling, Empowering Software Maintainers
with Semantic Web Technologies
[2] David Hyland-Wood, David Carrington, Simon Kaplan, Enhancing Software
Maintenance by using Semantic Web Techniques
[3] Yonggang Zhang, René Witte, Juergen Rilling, Volker Haarslev, An Ontological
Approach for the Semantic Recovery of Traceability Links between Software Artifacts,
IET Software journal
[4] Hans-Jörg Happel, Stefan Seedorf, Applications of Ontologies in Software Engineering [5] Suzanne Kabel, Bob Wielinga, Integrating Manuals and Training – First didactic
ontology
[6] Trung Hung Vo, Software Maintenance
[6] Natalya F Noy and Deborah L McGuinness, A Guide to Creating Your First Ontology
Trang 34Em xin chân thành cảm ơn !
Trang 35Khái niệm Semantic Web (Gruber)
commonly accepted understanding
conceptual model
of a domain (ontological theory)
unambiguous terminology definitions
machine-readability with computational semantics formal, explicit specification of a shared conzeptualization
Trang 36Khái niệm Semantic Web
Nhận được sự thống nhất về cách hiểu trong một cộng đồng
Mô hình khái niệm
về một miền ứng dụng cụ thể
Loại bỏ sự nhập nhằng
về thuật ngữ
Mang ngữ nghĩa mà máy tính có thể hiểu
Đặc tả hình thức, tường minh về một quá trình khái
niệm hóa được chia sẻ
Trang 37Thị phần IDE Java – Thống kê do QA Systems
thực hiện
Trang 38Các search engine
Trang 39Tạo tự động annotation từ code
Trang 40Khái niệm artifact
Một artifact là một sản phẩm phụ hữu hình được sinh
ra trong quá trình phát triển phần mềm
“An artifact is one of many kinds of tangible byproduct
produced during the development of software”
Ví dụ: biểu đồ use cases, class digrams, mô hình UML, tài liệu yêu cầu, tài liệu thiết kế
Trang 41Metric view