Tải bản đầy đủ (.ppt) (41 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (813.58 KB, 41 trang )

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


×