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
Sinh viên thực hiện
Lớp
: TS. Cao Tuấn Dũng
: Nguyễn Đức Đạt
: CNTT – KSTN - K49
Nội dung
1.
2.
3.
4.
Bài toán bảo trì phần mềm
Tiếp cận web ngữ nghĩa cho bài toán BTPM
Xây dựng công cụ hỗ trợ BTPM
Kết luận và hướng phát triển
2/31
Khá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].
3%
3%
5%
7%
15%
67%
50% thời gian bảo trì là đọc hiểu hệ thống cũ
3/31
Mộ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
Source
code - tài liệu
Source code – Test
4/31
Ngữ cảnh và mục tiêu của đề tài
Nằm trong đề tài nghiên cứu Mitani2009
Mục tiêu
Ứng dụng web ngữ nghĩa để khắc phục những tồn tại trên
Hỗ trợ những người bảo trì phần mềm
Gắn vào một môi trường phát triển phần mềm thông dụng
5/31
Nội dung
1.
2.
3.
4.
Bài toán bảo trì phần mềm
Tiếp cận web ngữ nghĩa cho bài toán BTPM
Xây dựng công cụ hỗ trợ BTPM
Kết luận và hướng phát triển
6/31
Web 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
4 thành phần cơ bản
Ontology
??
Annotation
Search
engine
Agent
7/31
Các thành phần của Web ngữ nghĩa
Ontology (OWL)
Các
khái niệm, thuộc tính
Annotation (chú thích ngữ nghĩa)
Là
các meta-data sử dụng ontology để mô tả tài nguyên
hệ thống
hasMethod
#cloneCells()
#GraphModel
hasVariable
#listCells
usesMethod
#createVertex()
8/31
Ý 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
9/31
Nội dung
1.
2.
3.
4.
Bài toán bảo trì phần mềm
Tiếp cận web ngữ nghĩa cho bài toán BTPM
Xây dựng công cụ hỗ trợ BTPM
Kết luận và hướng phát triển
10/31
Công cụ hỗ trợ BTPM
Mục đích:
Xây
dựng một công cụ thông minh hỗ trợ BTPM
Các công việc chính
Xây
dựng ontology cho bài toán BTPM
Công cụ tạo annotation bằng giao diện
Một số thuật toán sinh tự động
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
Sử
dụng annotation?
11/31
Tạo ontology source code
Ngôn ngữ: OWL DL
Bao gồm:
41 khái niệm
74 quan hệ
Concepts và cây
phân cấp
Khái niệm CNPM
Kế thừa có
chọn lọc
Ontology
Source Code
Ontology SEC
BNF
(Backus–Naur Form)
Thuộc tính
Các văn phạm biểu diễn
cấu trúc các ngôn ngữ lập
trình hướng đối tượng
12/31
Tạo ontology document
Ngôn ngữ: OWL DL
Bao gồm:
40 khái niệm
56 quan hệ
Concepts và cây
phân cấp
Ontology cấu
trúc tài liệu
Thuộc tính
Tài liệu hệ thống
Ontology
Document
Các tài liệu liên quan tới một
phần mềm
+ tài liệu thiết kế
+ tài liệu sử dụng
+ tài liệu hướng dẫn cài đặt
…
13/31
Sinh 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
Ontology
Đối sánh
Chú thích ngữ nghĩa
14/31
Tạo annotation từ code (tiếp)
Sinh chú thích về thực thể
Lời định
nghĩa hàm
rdf:id="#org.jgraph.graph.GraphConstants">
Annotation về
Method
Lờirdf:resource="#org.jgraph.graph.GraphConstants/getLabelPosition()"/>
gọi hàm
Ánh xạ
</sec0.2:Class>
Sinh chú thích về quan hệ
rdf:id="#org.jgraph.example.IconExample/createCellAttributes(java.awt.geom.Point2D)“>
rdf:resource=“#/Graph/src/org/jgraph/example/IconExample.java"/>
Lời định nghĩa
lớp
Class
<rdfs:label xml:lang="en">createCellAttributes</rdfs:label>
</sec0.2:Method>
hasChild
Lời định nghĩa hàm
hasMethod
Ánh xạ
Method
15/31
Kết quả
16/31
Sinh tự động annotation về mối liên kết giữa mã
nguồn và tài liệu
Tài liệu
Trích chọn dữ liệu từ tài liệu
File định dạng XML
Bộ xử lý DOM
Đối sánh
Thực thể và các quan hệ
Section (3.2.2 The EDGE AND…)
Bộ sinh file OWL
File OWL
hasParagraph – Paragraph (The Edge interface…)
relatedToMethod getSource()
relatedToClass Edge
17/31
Tạo annotation từ document (tiếp)
Đối sánh
Bold
• 3.2.2
•
relatedToClass
#Edge
hasMethodSignature
relatedToMethod
#getSource()
18/31
Chứ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
19/31
Sử dụng annotation trong một số ngữ cảnh bảo trì
Matching tài liệu – source code
#Sec_1_page_68
inSection
#GraphConstants
hasDescriptionInElement
#Para_2_page_68
inSection
hasMethod
hasVariable
#PERMILLE
#setBackground
relatedToMethod
relatedToVariable
#Para_5_page_70
#Para_3_page_73
20/31
Áp dụng matching code-tài liệu trong chức năng
cảnh báo thay đổi
21/31
Matching giữa các thành phần code – tìm kiếm
ngữ nghĩa
Tìm kiếm Test
Kết
quả test không thành công, test thuộc loại UnitTest
Trong 10 ngày gần nhất
Liên quan tới Requirement về ‘Lập báo cáo’
#Requirement
hasPurpose
requirementEncodedBy
# Test_DrawTable
testedAt
hasEntryPoint
#connectData()
hasTest
#DrawTable
6/6/2009
isTestOf
Create
Report
#Test_getData
testedAt
1/6/2009
22/31
Chức năng tìm kiếm Test
23/31
Mở rộng ngữ nghĩa thông qua các luật suy diễn
Chú thích ngữ nghĩa
về sự phụ thuộc
Chú thích ngữ nghĩa
về bản thân thực thể
Luật
Chú thích
ngữ nghĩa
mới
Ví dụ 1:
usesMethod
#scanTree()
#scanTree()
scanTree là một hàm đệ quy
24/31
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
(count(*) AS ?numberCalls)
SELECT ?layer1 ?layer2
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
Layer - containsMethod - method
25/31