Tải bản đầy đủ (.pdf) (97 trang)

Nghiên cứu xây dựng hệ thống ngữ nghĩa hỗ trợ tái sử dụng bảo trì phần mềm

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 (1.35 MB, 97 trang )

TRỊNH TUẤN ĐẠT

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------

Trịnh Tuấn Đạt

CÔNG NGHỆ THÔNG TIN

NGHIÊN CỨU & XÂY DỰNG HỆ THỐNG NGỮ NGHĨA HỖ
TRỢ TÁI SỬ DỤNG, BẢO TRÌ PHẦN MỀM

LUẬN VĂN THẠC SĨ KHOA HỌC
CƠNG NGHỆ THƠNG TIN

KHỐ 2009-2010

Hà Nội – Năm 2010


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------Trịnh Tuấn Đạt

NGHIÊN CỨU & XÂY DỰNG HỆ THỐNG NGỮ NGHĨA HỖ TRỢ TÁI SỬ
DỤNG, BẢO TRÌ PHẦN MỀM

Chuyên ngành: Cơng Nghệ Thơng Tin

LUẬN VĂN THẠC SĨ KHOA HỌC


CƠNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC :
TS. Cao Tuấn Dũng

Hà Nội – Năm 2010


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Mục lục
Mục lục ............................................................................................................................ 1
Lời cam đoan .................................................................................................................. 5
Danh mục các ký hiệu, các chữ viết tắt ........................................................................ 6
Danh mục các bảng ........................................................................................................ 8
Danh mục các hình vẽ, đồ thị ........................................................................................ 9
CHƯƠNG 1: MỞ ĐẦU................................................................................................ 11
1.1 Lý do chọn đề tài ......................................................................................................... 11
1.2 Lịch sử nghiên cứu ...................................................................................................... 12
1.3 Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu. .................... 13
1.4 Tóm tắt cơ đọng các luận điểm cơ bản và đóng góp mới của tác giả ..................... 14
1.5 Phương pháp nghiên cứu ........................................................................................... 15
1.6 Bố cục luận văn ........................................................................................................... 15

CHƯƠNG 2: BÀI TOÁN BẢO TRÌ, TÁI SỬ DỤNG PHẦN MỀM VÀ HƯỚNG
TIẾP CẬN CỦA WEB NGỮ NGHĨA ........................................................................ 16
2.1 Bảo trì phần mềm ....................................................................................................... 16
2.1.1 Khái niệm ......................................................................................................................... 16
2.1.2 Vai trò của bảo trì phần mềm: .......................................................................................... 17
2.1.3 Hiện trạng các hệ thống bảo trì phần mềm đã có ............................................................. 17


2.2 Tái sử dụng phần mềm ............................................................................................... 18
2.2.1 Khái niệm ......................................................................................................................... 18
2.2.2 Vai trò của tái sử dụng phần mềm ................................................................................... 18
2.2.3 Hiện trạng tái sử dụng phần mềm .................................................................................... 19

Trang 1


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

2.3 Xác định hướng tiếp cận cho bài tốn tái sử dụng, bảo trì phần mềm .................. 20

CHƯƠNG 3: TỔNG QUAN VỀ CÁC CÔNG NGHỆ, KỸ THUẬT ĐƯỢC SỬ
DỤNG ............................................................................................................................ 22
3.1 Công nghệ Web service .............................................................................................. 23
3.1.1 JAX-WS ........................................................................................................................... 23

3.2 Kỹ thuật xây dựng Plug-in cho Eclipse..................................................................... 24
3.3 Kỹ thuật phân tích Java source code ........................................................................ 26
3.3.1 Giới thiệu ......................................................................................................................... 26
3.3.2 Java model ....................................................................................................................... 27
3.3.3 Phân tích Java source code với AST framework ............................................................. 29

3.4 Kỹ thuật phân tích, xử lý thơ tài liệu PDF................................................................ 30
3.4.1 Giới thiệu ......................................................................................................................... 30
3.4.2 Khả năng phân tích hạn chế của Jpedal ........................................................................... 30

3.5 Công nghệ xử lý ngôn ngữ tự nhiên (tiếng Anh) với Gate và Jape ........................ 33
3.6 Các khái niệm quan trọng trong GATE được sử dụng trong nghiên cứu này ..... 33


CHƯƠNG 4: TỔNG QUAN VỀ CÔNG NGHỆ WEB NGỮ NGHĨA .................... 35
4.1 Tổng quan về công nghệ Web ngữ nghĩa.................................................................. 35
4.1.1 Khái niệm ......................................................................................................................... 35
4.1.2 Nền tảng của Web ngữ nghĩa ........................................................................................... 35
4.1.3 Lợi ích của công nghệ Web ngữ nghĩa ............................................................................ 36

4.2 Ontology....................................................................................................................... 36
4.2.1 Khái niệm. ........................................................................................................................ 36
4.2.2 Phương pháp xây dựng .................................................................................................... 38
4.2.3 Ngôn ngữ biểu diễn ontology........................................................................................... 41

4.3 Bộ suy diễn ngữ nghĩa Pellet ...................................................................................... 44

CHƯƠNG 5: XÂY DỰNG ONTOLOGY .................................................................. 45
Trang 2


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

5.1 Giới thiệu ..................................................................................................................... 45
5.2 Phương pháp thiết kế ontology .................................................................................. 46
5.3 Software Engineering Ontology-SEO ....................................................................... 47
5.3.1 Cây phân cấp Concepts .................................................................................................... 47
5.3.2 Các quan hệ trong SEO .................................................................................................... 48

5.4 Software Maintenance & Software Reuse Ontology- SMRO ................................. 51
5.4.1 Cây phân cấp Concepts .................................................................................................... 51
5.4.2 Các quan hệ trong SMRO ................................................................................................ 52


5.5 Thiết kế hệ thống luật ................................................................................................. 55
5.5.1 Ví dụ với luật liên quan tới tài liệu phần mềm................................................................. 56
5.5.2 Tổng hợp một số luật quan trọng ..................................................................................... 58

CHƯƠNG 6: TẠO MỚI, QUẢN LÝ CÁC CHÚ THÍCH NGỮ NGHĨA ............... 60
6.1 Cơ chế quản lý thơng qua các dịch vụ Web ............................................................. 60
6.2 Tạo mới các chú thích ngữ nghĩa .............................................................................. 60
6.2.1 Tạo mới chú thích ngữ nghĩa cho source code................................................................. 61
6.2.2 Sinh tự động chú thích ngữ nghĩa mơ tả cấu trúc tài liệu................................................. 66
6.2.3 Tạo các chú thích ngữ nghĩa từ thơng tin trong tài liệu phần mềm.................................. 67

6.3 Quản lý các chú thích ngữ nghĩa ............................................................................... 70
6.3.1 Mơ hình quản lý ............................................................................................................... 70
6.3.2 Mơ hình quản lý chung cho tất cả các chú thích ngữ nghĩa ............................................. 71
6.3.3 Quản lý chú thích ngữ nghĩa riêng cho các artifact phần mềm ........................................ 72
6.3.4 Quản lý các kết nối giữa các tài nguyên phần mềm ......................................................... 72

6.4 Tìm kiếm ngữ nghĩa.................................................................................................... 73
6.4.1 Mơ hình xử lý................................................................................................................... 73
6.4.2 Mơ hình thiết kế “Query Input” ....................................................................................... 74
6.4.3 Thuật toán sinh truy vấn SPARQL .................................................................................. 75

Trang 3


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

CHƯƠNG 7: GIỚI THIỆU VỀ HỆ THỐNG ĐÃ ĐƯỢC XÂY DỰNG ................. 77
7.1 Kiến trúc hệ thống ...................................................................................................... 77
7.2 Server ........................................................................................................................... 80

7.3 Giới thiệu Plug-in STORES ....................................................................................... 80
7.3.1 Quản lý tài khoản người dùng .......................................................................................... 81
7.3.2 Quản lý chú thích ngữ nghĩa ............................................................................................ 82
7.3.3 Quản lý tài nguyên phần mềm ......................................................................................... 84
7.3.4 Hỗ trợ đặc biệt để thêm mới/phân tích lại source code, document. ................................. 85
7.3.5 Tìm kiếm ngữ nghĩa ......................................................................................................... 86
7.3.6 Báo cáo tình hình dự án. .................................................................................................. 88

CHƯƠNG 8: SO SÁNH VỚI CÁC KẾT QUẢ NGHIÊN CỨU KHÁC TRÊN
THẾ GIỚI ..................................................................................................................... 89
CHƯƠNG 9: KẾT LUẬN VÀ KIẾN NGHỊ.............................................................. 92
TÀI LIỆU THAM KHẢO ........................................................................................... 94

Trang 4


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Lời cam đoan
Tôi-Trịnh Tuấn Đạt –cam kết luận văn tốt nghiệp là cơng trình nghiên cứu của bản
thân tôi dưới sự hướng dẫn của TS. Cao Tuấn Dũng. Các kết quả nêu trong luận văn
là trung thực, khơng phải là sao chép tồn văn của bất kỳ cơng trình nào khác.

Trang 5


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Danh mục các ký hiệu, các chữ viết tắt
1


Client

Máy khách

2

Server

Máy chủ

3

Semantic Web

Web ngữ nghĩa

4

Software Engineering

Công nghệ phần mềm

5

Software Reuse

Tái sử dụng phần mềm

6


Software Maintenance

Bảo trì phần mềm

7

Software Artefact

Các tài nguyên phần mềm: Test, Code, …

8

Metadata

Siêu dữ liệu

9

Annotation

Chú thích ngữ nghĩa

10 Concept/Class

Khái niệm/Lớp trong Ontology

11 Relation/Property/Slot

Quan hệ trong Ontology


12 Individual/Instance

Một thực thể/thể hiện trong Ontology

13 Query

Truy vấn

14 Document, Document Element

Tài liệu, một thành phần trong tài liệu

15 Requirement

Yêu cầu phần mềm

Eclipse

Môi trường phát triển phần mềm cho ngôn

16

ngữ lập trình Java

17 Eclipse Plug-in

Thành phần tích hợp thêm vào IDE Eclipse

18 JAX WS-Java API for XML Web


Framework Web service cho ngôn ngữ lập
Trang 6


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Services

trình Java

OWL - Web Ontology Language

Ngơn ngữ cho phép xuất bản và chia sẻ dữ

19

liệu sử dụng các ontology
SWRL-Semantic Web Rule

20 Language
SPARQL - SPARQL Protocol and

Ngôn ngữ mô tả các luật suy diễn. Là kết
hợp của OWL và RuleML
Ngôn ngữ truy vấn ngữ nghĩa

21 RDF Query Language
IDE - Integrated Development
22 Environment


Mơi trường phát triển tích hợp, phần mềm
giúp lập trình viên trong việc phát triển
phần mềm

SEO-Software Engineering
23 Ontology
SMRO-Software Maintenance &
24 Reuse Ontology
STORES- Semantic Tool for

Domain ontology cho một phần của cơng
nghệ phần mềm
Application ontology cho bài tốn tái sử
dụng phần mềm, bảo trì phần mềm
Tên của hệ thống được xây dựng

25 collaborative Java softwaRe
maintEnance and reuSe

Trang 7


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Danh mục các bảng
Bảng 1: Ý nghĩa các concept chính trong SMRO .......................................................... 52
Bảng 2: Tổng hợp 1 số luật suy diễn quan trọng ........................................................... 59
Bảng 3: Các yêu cầu khi quản lý các artifact phần mềm ............................................... 72


Trang 8


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Danh mục các hình vẽ, đồ thị
Hình 1: Mơ hình gửi nhận thơng điệp trong JAX-WS ................................................... 23
Hình 2: Các thành phần chính trong Eclipse.................................................................. 24
Hình 3: Kiến trúc của một plugin trong Eclipse ............................................................ 25
Hình 4: Tổng quan về Java Model ................................................................................. 27
Hình 5: Cây cú pháp thu được cho lớp HelloWorld trong Java ..................................... 29
Hình 6: Một trang tài liệu PDF gốc................................................................................ 31
Hình 7: Sơ đồ phân cấp của SEC ontology .................................................................... 46
Hình 8: Cây phân cấp Concept trong SEO .................................................................... 48
Hình 9: Một số quan hệ giữa các thành phần phần mềm ............................................... 49
Hình 10: Mối quan hệ giữa thành phần phần mềm với Test, Requirement, Metric ...... 50
Hình 11: Cây phân cấp Concept trong SMRO ............................................................... 51
Hình 12: Mối quan hệ giữa các lớp con của Agent........................................................ 53
Hình 13: Mối quan hệ giữa các Document và các DocumentElement .......................... 53
Hình 14: Mối quan hệ giữa các artifact phần mềm ........................................................ 55
Hình 15: Mơ hình phân tích tự động tạo annotation cho source code ........................... 61
Hình 16: Ví dụ về cách tạo quan hệ .............................................................................. 62
Hình 17: Ví dụ về phần tích một class tạo annotation ................................................... 64
Hình 18: Ví dụ về các quan hệ thu được khi phân tích source code .............................. 65
Hình 19: Sinh tự động chú thích ngữ nghĩa mơ tả cấu trúc tài liệu ............................... 66
Trang 9


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt


Hình 20: Khác biệt giữa tài liệu SRS thực tế (trái) và SRS theo mẫu chuẩn (phải) ...... 68
Hình 21: Mơ hình xử lý trích rút thơng tin từ tài liệu phần mềm .................................. 69
Hình 22: Mơ hình quản lý các chú thích ngữ nghĩa ....................................................... 71
Hình 23: Mơ hình quản lý chú thích ngữ nghĩa nói chung ............................................ 71
Hình 24: Mơ hình xử lý tìm kiếm ngữ nghĩa ................................................................. 74
Hình 25: Mơ hình “Query Input” ................................................................................... 75
Hình 26: Kiến trúc hệ thống ........................................................................................... 77
Hình 27: Tổng quan Plug-in STORES ........................................................................... 81
Hình 28: Quản lý tài khoản người dùng......................................................................... 82
Hình 29: Quản lý chú thích ngữ nghĩa ........................................................................... 83
Hình 30: Thêm 1 giá trị cho 1 thuộc tính object ............................................................ 84
Hình 31: Quản lý tài ngun phần mềm ........................................................................ 84
Hình 32: Quản lý thơng tin về các tài liệu phần mềm ................................................... 85
Hình 33: Tìm kiếm ngữ nghĩa ........................................................................................ 86
Hình 34: Báo cáo tình hình dự án .................................................................................. 88

Trang 10


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

CHƯƠNG 1: MỞ ĐẦU
1.1 Lý do chọn đề tài
Web ngữ nghĩa với những khả năng đặc biệt trong lưu trữ, quản lý, tìm kiếm thơng tin
đã và đang được áp dụng ở rất nhiều lĩnh vực. Trước hết, web ngữ nghĩa được áp dụng
ngay trong domain web ngữ nghĩa, với các trình duyệt web ngữ nghĩa, hay các cơng cụ
phát triển mơ tơ tìm kiếm ngữ nghĩa. Đem lại những biểu diễn ngữ nghĩa cho thông tin,
web ngữ nghĩa được áp dụng rất nhiều trong các bài tốn quản lý tri thức, trong các bài
tốn tìm kiếm ngữ nghĩa trên các tài liệu đa phương tiện, hay trong bài toán kết nối ngữ
nghĩa (semantic communication), với khả năng ghép cặp các đối tượng dựa trên chú

thích ngữ nghĩa về các đối tượng này theo các tiêu chí đối sánh, …
Trong những năm gần đây, cộng đồng phát triển phần mềm thế giới đã phát triển rất
nhiều công cụ hỗ trợ cho quy trình phát triển phần mềm, như đặc tả, phát triển và bảo
trì phần mềm, … Hầu hết các công cụ này sử dụng khuôn dạng dữ liệu riêng để lưu trữ
các tài nguyên phần mềm, do đó, khơng thể có sự cộng tác với nhau. Trong khi đó,
cơng nghệ web ngữ nghĩa đưa ra 1 framework cho phép chia sẻ và tái sử dụng dữ liệu
giữa các ứng dụng, các doanh nghiệp khác nhau. Ontology được sử dụng để định nghĩa
các concept và các quan hệ chung, cho phép trao đổi dữ liệu một cách dễ dàng. Như
vậy, các nghiên cứu gần đây đã bắt đầu chú trọng đến các phương pháp sử dụng công
nghệ web ngữ nghĩa giải quyết các bài tốn trong cơng nghệ phần mềm.
Cơng nghệ phần mềm là một bài tốn lớn, không thể giải quyết được tất cả các vấn đề
trong đó. Vì vậy, khơng những khơng có nhiều các nghiên cứu kết hợp web ngữ nghĩa
với công nghệ phần mềm, mà các nghiên cứu về hỗ trợ tái sử dụng phần mềm, bảo trì
phần mềm cịn ít hơn, với các khả năng hỗ trợ còn hạn chế. Nhận thấy đây là một bài
toán mới mẻ, với khả năng ứng dụng to lớn, tơi đã tiến hành nghiên cứu, tìm hiểu, và
từng bước xây dựng các giải pháp, mơ hình cho phép lưu trữ, mơ tả, quản lý, tìm kiếm
Trang 11


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

các tài nguyên phần mềm, từ đó hỗ trợ người kỹ sư thực hiện quy trình tái sử dụng, bảo
trì phần mềm một cách có hiệu quả.

1.2 Lịch sử nghiên cứu
Vào năm 2005, tổ chức Semantic Web Best Practice and Deployment Working Group
(SWBPD) trong W3C: đã đề xuất
hướng nghiên cứu ứng dụng công nghệ Web ngữ nghĩa vào Cơng nghệ phần mềm. Từ
đó, cộng đồng nghiên cứu đã chú ý tới hướng nghiên cứu mới này, và tổ chức một loạt
các workshop, điển hình là Semantic Web Enabled Software Engineering (SWESE),

bắt đầu được tổ chức trong Hội nghị “International and European Semantic Web
Conference” (ISWC/ESWC) lần thứ 3.
Đã có những tranh cãi về những lợi ích mà Web ngữ nghĩa mang lại trong Công nghệ
phần mềm, bao gồm khả năng tái sử dụng và mở rộng các mơ hình dữ liệu, cải tiến
trong chất lượng dữ liệu, … Theo như ghi chú của SETF-Software Engineering Task
Force: "A Semantic Web Primer for Object-Oriented Software Developers", công
nghệ Web ngữ nghĩa có thể xem như nền tảng để tạo, chia sẻ và tái sử dụng các
domain models. Từ đó, cũng bắt đầu đặt ra các câu hỏi, liệu các lợi ích tiềm tàng của
Web ngữ nghĩa có áp dụng được vào lĩnh vực Công nghệ phần mềm? Liệu ngôn ngữ
ngữ nghĩa hình thức, dựa trên nền Web OWL có thể kết hợp được với các công cụ phát
triển hướng mô hình như Eclipse Modelling Framework để cung cấp các cải thiện đáng
kể trong xử lý và sản xuất các hoạt động phát triển phần mềm? Liệu sự kết hợp giữa
OWL, UML, và MDA (Model-Driven Architecture) có tạo nên sự khác biệt?
Bắt đầu từ năm 2006-2007, có những cơng trình nghiên cứu đầu tiên về khả năng ứng
dụng của Web ngữ nghĩa trong tái sử dụng/bảo trì phần mềm, và hiện tại đang được
mở rộng, hoàn thiện hơn. Từ cuối năm 2008, tơi chính thức nghiên cứu theo hướng
này, và đến nay đã thu được một số kết quả, sẽ được trình bày trong luận án này.
Trang 12


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

1.3 Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu.
Mục đích:
• Lý thuyết: nghiên cứu
o Cơng nghệ Web ngữ nghĩa nói chung: ontology, các thư viện thao tác với
chú thích ngữ nghĩa, bộ suy diễn ngữ nghĩa, truy vấn ngữ nghĩa, …
o Công nghệ, kỹ thuật: phân tích mã nguồn Java, phân tích, xử lý tài liệu
PDF, phát triển plug-in cho IDE Eclipse (mơi trường phát triển phần
mềm cho ngơn ngữ lập trình Java)

o Cách thức triển khai các dịch vụ Web ngữ nghĩa.
o Các hoạt động cần thiết trong quá trình phát triển phần mềm
o Khả năng ứng dụng của Web ngữ nghĩa trong Công nghệ phần mềm:
ontology để chia sẻ thông tin và quản lý hiệu quả các tài nguyên phần
mềm, từ đó hỗ trợ tính năng tái sử dụng, bảo trì phần mềm. Gắn các hoạt
động tái sử dụng, bảo trì phần mềm vào ngay bước đầu tiên của quá trình
phát triển phần mềm
• Triển khai, cài đặt ứng dụng
o Xây dựng ontology, hệ thống luật suy diễn
o Triển khai các dịch vụ Web ngữ nghĩa, cho phép chia sẻ thông tin giữa
các ứng dụng, nền tảng khác nhau
o Cài đặt bộ công cụ hỗ trợ thành 1 plug-in của Elcipse, sẵn sàng đưa vào
sử dụng trong thực tế

Trang 13


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Đối tượng, phạm vi nghiên cứu: Đối tượng nghiên cứu trọng tâm là Web ngữ nghĩa,
với khả năng ứng dụng vào Công nghệ phần mềm. Phạm vi nghiên cứu là tái sử dụng,
bảo trì phần mềm, trên ngơn ngữ lập trình hướng đối tượng Java.

1.4 Tóm tắt cơ đọng các luận điểm cơ bản và đóng góp mới của tác giả
Luận văn, cùng với các nghiên cứu gần đây đã minh chứng rõ nét cho khả năng ứng
dụng của Web ngữ nghĩa vào công nghệ phần mềm, xét trên cả khía cạnh lý thuyết và
ứng dụng. Các đóng góp mới:
• Lý thuyết
o Đưa ra thiết kế Ontology giải quyết bài toán đặt ra, cùng với các hệ
thống luật suy diễn ngữ nghĩa.

o Có cơ chế quản lý hiệu quả các chú thích ngữ nghĩa phần mềm thơng qua
các dịch vụ Web, có phân loại và hỗ trợ cho từng loại artifact phần mềm.
o Đưa ra mơ hình thiết kế, mơ hình xử lý mới cho các cơng cụ tạo chú
thích ngữ nghĩa, tìm kiếm ngữ nghĩa. Đặc biệt, đã xây dựng cơng cụ tìm
kiếm ngữ nghĩa đầu tiên trên source code.
o Đề xuất các thuật toán tạo chú thích ngữ nghĩa tự động cho mã nguồn,
cho các tài liệu phần mềm, cơ chế hiệu quả kết nối các thành phần tài liệu
với các thành phần code.
• Ứng dụng:
o Cài đặt thành công các nghiên cứu lý thuyết, tổ chức thành các dịch vụ
Web ngữ nghĩa phía server, cùng với công cụ plug-in hỗ trợ tái sử dụng,
bảo trì phần mềm tích hợp vào IDE Eclipse phía Client. Là một ứng
dụng mới mẻ xét trên nhiều khía cạnh, có tiềm năng to lớn.
Trang 14


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

1.5 Phương pháp nghiên cứu
Trước tiên tìm hiểu các vấn đề liên quan, các nghiên cứu cùng chủ đề hiện nay, xác
định thực trạng của các hệ thống tương đương đã được xây dựng. Sau đó, tìm ra cách
tiếp cận phù hợp, đề xuất giải pháp, xây dựng các thuật tốn, các mơ hình và triển khai
trên thực tế

1.6 Bố cục luận văn
Bố cục của luận văn như sau:
Chương 1: Mở đầu.
Chương 2: Giới thiệu bài toán bảo trì, tái sử dụng phần mềm. Từ đó xác định các yêu
cầu đặt ra, và để thỏa mãn các yêu cầu đó, cách tiếp cận Web ngữ nghĩa là một giải
pháp tiềm năng.

Chương 3: Trình bày tổng quan về các công nghệ, các kỹ thuật được sử dụng. Đặc biệt
là các kỹ thuật phân tích mã nguồn Java, phân tích tài liệu PDF.
Chương 4: Trình bày tổng quan về cơng nghệ Web ngữ nghĩa.
Chương 5: Trình bày về thiết kế Ontology của nghiên cứu, giải quyết bài toán đặt ra.
Chương 6: Trình bày cơ chế tạo mới, quản lý các chú thích ngữ nghĩa, mơ tả các
artifact phần mềm liên quan.
Chương 7: Giới thiệu về hệ thống đã được xây dựng thành công.
Chương 8: So sánh, đánh giá với các kết quả nghiên cứu cùng lĩnh vực.
Chương 9: Kết luận và kiến nghị.

Trang 15


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

CHƯƠNG 2: BÀI TỐN BẢO TRÌ, TÁI SỬ DỤNG PHẦN MỀM
VÀ HƯỚNG TIẾP CẬN CỦA WEB NGỮ NGHĨA
2.1 Bảo trì phần mềm
2.1.1 Khái niệm
Theo định nghĩa của IEEE [1]: “Bảo trì phần mềm là quá trình sửa đổi một hệ thống
phần mềm hoặc các thành phần sau khi chuyển giao cho người sử dụng, sửa đổi các
lỗi phát sinh, cải thiện khả năng thực thi hoặc các thuộc tính khác như thêm bớt quyền
hạn, ... , cũng như khả năng thích ứng với một mơi trường thay đổi”
Định nghĩa phản ánh quan điểm chung cho rằng bảo trì phần mềm là một hoạt động
sau khi chuyển giao: bắt đầu khi hệ thống được đưa vào hoạt động cho khách hàng hay
người sử dụng và gồm các hoạt động đảm bảo hệ thống vận hành và thỏa mãn các yêu
cầu người dùng. Quan điểm này phù hợp với mơ hình phát triển kinh điển của phần
mềm - mơ hình thác nước.
Tuy nhiên lại có quan điểm cho rằng bảo trì phần mềm nên bắt đầu trước khi hệ thống
đưa vào hoạt động. Schneidewind [2] cho rằng chính quan điểm bảo trì chỉ thực hiện

sau khi đưa vào hoạt động làm cho q trình bảo trì trở nên khó khăn hơn. Theo
Pigoski [3] cho rằng bảo trì phần mềm nên bắt đầu ngay từ khi bắt đầu phát triển phần
mềm: “Bảo trì phần mềm là tồn bộ các hoạt động cần thiết để cung cấp chi phí hiệu
quả để hỗ trợ cho một hệ thống phần mềm. Các hoạt động này được thực hiện ở cả
giai đoạn trước khi chuyển giao và sau khi chuyển giao. Hoạt động trước khi chuyển
giao bao gồm việc lập kế hoạch sau khi chuyển giao, hỗ trợ. Các hoạt động sau khi
chuyển sao bao gồm sửa đổi phần mềm, đào tạo và trợ giúp”.

Trang 16


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

2.1.2 Vai trị của bảo trì phần mềm:
Trong quá trình phát triển một phần mềm, yêu cầu của người dùng đưa ra phải được
thỏa mãn. Để đảm bảo khơng bỏ sót các u cầu, phần mềm chạy ổn định trong mơi
trường khác nhau, bảo trì cần phải thực hiện để:
• Chỉnh sửa các lỗi.
• Nâng cao thiết kế.
• Các cài đặt nâng cao.
• Giao tiếp với các hệ thống khác.
• Thích ứng chương trình với các phần cứng, phần mềm, các phương tiện truyền
thơng khác nhau.
• Giúp hệ thống dễ sử dụng lại hơn trong những lần bảo trì tiếp theo.
Bảo trì chiếm một phần lớn trong chi phí phát triển phần mềm. Một số khảo sát [4, 5,
6] đã cho thấy bảo trì phần mềm chiếm tới 60% đến 80% chi phí cho vịng đời phát
triển phần mềm.
2.1.3 Hiện trạng các hệ thống bảo trì phần mềm đã có
Có rất nhiều phần mềm trên thị trường hỗ trợ bảo trì phần mềm. Đáng chú ý là các
cơng cụ theo dõi lỗi, có vai trị quan trọng trong bảo trì. Ví dụ như Bugzilla của Mozilla

Foundation, Test Director của Mercury Interactive, Silk Radar của Segue Software,
SQA Manager của phần mềm Rational, … Trong khi đó, ProTeus III Expert CMMS
của tổ chức Eagle Technology là một gói phần mềm bảo trì phần mềm cho phép tạo
các yêu cầu việc làm tự động, lịch sử bảo trì các thiết bị tài liệu, truy vết tài sản và
công việc tồn đọng, tạo các đơn đặt hàng, các bản báo cáo.

Trang 17


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Một số sản phẩm được sử dụng chun nghiệp cho một ngơn ngữ lập trình cụ thể như
CCFinder, JAAT là các sản phẩm được thiết kế dành riêng cho ngơn ngữ JAVA.
CCFinder giúp tìm ra các đoạn mã giống nhau, JAAT cho phép trích rút các biểu thức
mà có thể cùng tham chiếu tới cùng một vị trí bộ nhớ trong q trình thực thi chương
trình.
Các nghiên cứu trước đó về áp dụng cơng nghệ Web ngữ nghĩa trong bảo trì phần mềm
chủ yếu tập chung vào việc hỗ trợ cho một thành phần phần mềm cụ thể hoặc hỗ trợ
cho một tác vụ bảo trì cụ thể. Ví dụ như ứng dụng Web ngữ nghĩa Dhruv với mục đích
hỗ trợ q trình giải quyết lỗi trong cộng đồng web. Ngữ cảnh của ứng dụng là làm sao
để cộng đồng mã nguồn mở tìm được cách fix các lỗi trong phần mềm của họ.
Ontology được sử dụng để trợ giúp kết nối giữa người phát triển với các bug-report và
các vùng code bị ảnh hưởng thông qua liên lạc điện tử (các forum, các mailing list) [7]

2.2 Tái sử dụng phần mềm
2.2.1 Khái niệm
Tái sử dụng, trong ngữ cảnh cơng nghệ phần mềm, có thể được định nghĩa là “Quá
trình xây dựng hệ thống phần mềm từ các hệ thống phần mềm đã có, hơn là xây dựng
lại hệ thống phần mềm từ đầu.” [8] Tái sử dụng cũng có thể được định nghĩa một cách
đầy đủ hơn như sau: “Một quá trình phát triển phần mềm có hệ thống sẽ được xây

dựng nên từ một kho các ‘viên gạch xây dựng’, khi đó có thể khai thác sự tương đồng
giữa kiến trúc, yêu cầu của các hệ thống, nhằm thu được những lợi ích thật sự ở sản
lượng, chất lượng, và hiệu quả kinh doanh ” [9]
2.2.2 Vai trò của tái sử dụng phần mềm
Tái sử dụng phần mềm nếu được thực hiện tốt sẽ đem lại các lợi ích sau:

Trang 18


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

Nâng cao năng suất lao động: nếu sử dụng các component đã được xây dựng từ trước
thời gian phát triển sẽ được giảm bớt. Tuy phải đầu tư thêm về chi phí, ví dụ phải mơ
hình, khái quát hóa 1 component để có thể được tái sử dụng về sau, nhưng xét về theo
sự phát triển lâu dài của công ty, thực sự lại là tiết kiệm chi phí.
Nâng cao chất lượng sản phẩm: các component nếu đã được tái sử dụng trong nhiều
project khác nhau, chắc chắn đã qua nhiều lần kiểm thử, trong rất nhiều tình huống
khác nhau, nhờ đó có thể tăng cường độ tin cậy cho phần mềm. Các component cũng
có thể được sử dụng để tạo các prototype, giúp khách hàng xác định rõ ràng u cầu
của mình, tránh được chi phí cho các thay đổi trong quá trình phát triển phần mềm.
Lợi ích thương mại: Khi năng suất lao động được cải thiện, sản phẩm phần mềm sẽ
được tạo ra nhanh hơn, với giá thành thấp hơn. Khi đó, các cơng ty thực hiện tái sử
dụng phần mềm có thể cạnh tranh dễ dàng hơn với các công ty khác. Hơn thế, do tái sử
dụng giúp nâng cao chất lượng sản phẩm, nên khách hàng cũng hài lịng hơn, từ đó dẫn
đến rất nhiều thuận lợi khác trong kinh doanh.
2.2.3 Hiện trạng tái sử dụng phần mềm
Hiện tại, trong hầu hết các cơng ty, khơng có cơ chế quản lý, lưu trữ các nguồn tài
nguyên sinh ra trong quá trình phát triển phần mềm. Các hình thức tái sử dụng chủ yếu
tập trung ở mức độ cá nhân, khơng mang tính hệ thống, chủ yếu tái sử dụng các đoạn
code. Các nhân viên trong công ty khi tham gia dự án mới, sẽ tự nhớ lại các dự án cũ

đã thực hiện, và cố gắng tìm ra các phần có thể tái sử dụng. Do vậy, tái sử dụng tài
nguyên của chính họ đã là một khó khăn khơng nhỏ.
Trong một số cơng ty lớn, có thể có cơ chế mơ tả các tài nguyên phần mềm thông qua
các tài liệu mơ tả; từ đó, giúp cho các thành viên ở các dự án khác nhau có thể tham
khảo, trao đổi các tài nguyên phần mềm. Mặc dù vậy, hiệu quả đạt được là khơng thực
sự cao. Các hình thức tái sử dụng chủ yếu được thực hiện trên quan hệ giữa người với
Trang 19


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

người, có nghĩa là một người khi tham gia vào một dự án mới, thường hỏi những người
có kinh nghiệm, hoặc những người đã từng giải quyết các vấn đề tương tự, và chủ yếu
là tái sử dụng các đoạn code, các tài liệu tham khảo, ...
Tóm lại, hiện nay, gần như khơng có cơng cụ nào thực sự hỗ trợ hiệu quả quy trình tái
sử dụng phần mềm. Thường thì các cơng cụ hoặc khơng được tích hợp vào IDE hỗ trợ
cho ngơn ngữ sử dụng cho dự án, hoặc không hỗ trợ tái sử dụng nhiều loại tài ngun,
hoặc khơng có cơng cụ tìm kiếm tài nguyên hiệu quả, do không tiếp cận theo hướng
Web ngữ nghĩa

2.3 Xác định hướng tiếp cận cho bài toán tái sử dụng, bảo trì phần mềm
Theo thời gian phát triển, hệ thống phần mềm và các thông tin đi kèm ln có biến
động rất lớn, gây khó khăn trong việc đọc hiểu, bảo trì, tái sử dụng, do khơng có sự kết
nối chặt chẽ giữa các thành phần phần mềm và metadata của hệ thống. Chìa khóa của
việc bảo trì, tái sử dụng một hệ thống phức tạp là phải hiểu chúng, phải hiểu sâu về các
thành phần chức năng, phi chức năng (document), và các tương tác giữa chúng. Vì vậy,
cần đặc biệt quan tâm tới những vấn đề sau:
1. Khả năng đọc hiểu mã nguồn: nhiều nghiên cứu đã chỉ ra chi phí cho việc đọc
hiểu code chiếm một phần rất lớn trong tồn bộ chi phí bảo trì/tái sử dụng phần
mềm. Theo quy mơ hệ thống, lượng mã nguồn và các mối quan hệ giữa các

thành phần mã nguồn ngày một tăng nhanh, cả về số lượng và độ phức tạp. Vì
vậy, cần có cơng cụ hỗ trợ mô tả các thành phần code, và phải được tích hợp
trong 1 IDE ngay ở giai đoạn coding.
2. Các liên kết truy vết giúp cho các kĩ sư phần mềm hiểu được mối quan hệ và
sự phụ thuộc giữa các thành phần phần mềm từ đó giúp đỡ cho quá trình đọc
hiểu code. Tuy nhiên, ngay trong các tổ chức và dự án với quy trình phát triển
phần mềm thuần thục, các thành phần phần mềm được tạo ra trong các bước của
Trang 20


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

quy trình này cuối cùng cũng bị mất liên kết với các thành phần khác. Với các
liên kết truy vết giữa các artifact phần mềm, đặc biệt là giữa mã nguồn và tài
liệu, đa phần trong quá trình phát triển các phần mềm mới chỉ ở mức độ mộtmột, do đó, đã bỏ qua rất nhiều thơng tin ngữ nghĩa và cấu trúc trong source
code và document. Do vậy, cần phân tích một cách chi tiết các thành phần tài
liệu và mã nguồn, tạo mối liên hệ đa chiều giữa source code với tài liệu và
ngược lại.
3. Quản lý các tài nguyên phần mềm: Cần phân loại các tài nguyên phần mềm
và có cơ chế hỗ trợ riêng.
4. Việc tìm kiếm các tài nguyên phần mềm, đặc biệt là thành phần source code
có vai trị rất quan trọng. Tuy nhiên, ngay trong những IDE phát triển phần mềm
phổ biến như Eclipse, chỉ đơn thuần tìm kiếm text riêng lẻ, thông thường theo
tên các method, class, … mà khơng hỗ trợ tìm kiếm kết hợp giữa các thành phần
này. Người lập trình rất hay gặp phải những tình huống tìm kiếm như: tìm kiếm
các phương thức nhận một kiểu nào đó làm đối số đầu vào hay tìm kiếm các
phương thức trả về một kiểu dữ liệu nào đó. Hiện nay chưa có IDE nào thỏa
mãn các yêu cầu tìm kiếm này do khơng thể khai thác tính ngữ nghĩa giữa các
thành phần của source code để thực hiện tìm kiếm
Từ các phân tích trên, hướng tiếp cận Web ngữ nghĩa và dịch vụ Web đã được lựa

chọn để giải quyết bài tốn tái sử dụng, bảo trì phần mềm, với mục tiêu cao nhất là hỗ
trợ tìm kiếm, chia sẻ thông tin một cách hiệu quả, đặc biệt hiệu quả nhờ khả năng giúp
máy tính hiểu được tính ngữ nghĩa của thơng tin dựa trên cơng nghệ Semantic Web, sẽ
trình bày trong chương 4.

Trang 21


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

CHƯƠNG 3: TỔNG QUAN VỀ CÁC CÔNG NGHỆ, KỸ THUẬT
ĐƯỢC SỬ DỤNG
Bài toán được xác định ngay từ đầu là ứng dụng công nghệ Web ngữ nghĩa, để xây
dựng được một hệ thống hỗ trợ hiệu quả một đội ngũ phát triển phần mềm, từ người
phát triển, người thiết kế, người test, đến quản lý dự án, … cộng tác với nhau trong một
dự án phát triển phần mềm. Trong đó đặc biệt hỗ trợ quản lý các tài nguyên phần mềm
(các thành viên dự án, source code, document, test, …), bảo trì phần mềm và tái sử
dụng phần mềm. Trước tiên, các mơ hình được thử nghiệm với ngơn ngữ lập trình
Java, IDE Eclipse và kiến trúc hướng dịch vụ nhằm đảm bảo tính dễ tích hợp, mở rộng.
Do vậy, luận văn đã sử dụng các cơng nghệ, kỹ thuật đáng chú ý như sau:
• Cơng nghệ Web ngữ nghĩa
• Cơng nghệ Web service
• Kỹ thuật xây dựng Plug-in cho Eclipse
• Kỹ thuật phân tích Java source code
• Kỹ thuật phân tích tài liệu PDF
• Cơng nghệ xử lý ngôn ngữ tự nhiên (tiếng Anh) với Gate và Jape
Trong đó, cơng nghệ Web ngữ nghĩa đóng vai trò trọng tâm, là nền tảng của đồ án nên
sẽ được trình bày riêng ở chương sau. Các cơng nghệ, kỹ thuật cịn lại sẽ được trình
bày khái qt trong chương này.


Trang 22


Luận văn thạc sĩ khoa học – Chuyên ngành CNTT – Trịnh Tuấn Đạt

3.1 Công nghệ Web service
3.1.1 JAX-WS
JAX-WS (Java API for XML Web Services) là một Framework của ngôn ngữ Java hỗ
trợ tạo web service. Là một phần của nền tảng Java EE, JAX-WS sử dụng annotations,
để đơn giản hóa việc phát triển và phát hành các Web service.
Trong JAX-WS, quá trình gọi web service được thực hiện bởi một giao thức nền XML
như SOAP. Định nghĩa SOAP chỉ ra kiến trúc bao, các luật mã hóa, và các quy ước
miêu tả quá trình gọi và nhận trả lời từ Web service. Các lời gọi và trả lời này được
chuyển dưới dạng các tài liệu SOAP (file XML) qua HTTP.

Hình 1: Mơ hình gửi nhận thơng điệp trong JAX-WS

Mặc dù các thông điệp SOAP là khá phức tạp, JAX-WS API che dấu, làm trong suốt
với người phát triển. Bên phía Server, người phát triển chỉ ra các quy trình của web
service bằng cách định nghĩa các phương thức theo một giao diện viết bằng ngôn ngữ
Java, và xây dựng một hay nhiều lớp thực thi các phương thức này. Việc xây dựng các
chương trình Client cũng trở nên dễ dàng. Client tạo ra một Proxy (đối tượng cục bộ
biểu diễn các dịch vụ) và gọi các phương thức từ Proxy. Với JAX-WS, người phát triển
Trang 23


×