1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kiểm chứng đặt tả uml cho tác tử phần mềm

93 546 1
Tài liệu đã được kiểm tra trùng lặ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

Thông tin cơ bản

Định dạng
Số trang 93
Dung lượng 1,16 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin Kiểm chứng đặt tả uml cho tác tử phần mềm

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 3

Lời cám ơn

Trước tiên tôi xin gửi lời cảm ơn sâu sắc tới TS Trương Anh Hoàng, Bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin, Trường Đại học Công Nghệ, Đại Học Quốc Gia Hà Nội – người đã định hướng đề tài và tận tình hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp này

Tôi cũng xin trân trọng cảm ơn quý th ầy cô trong Khoa Công nghệ thông tin trường Đại học Công Nghệ, Đại Học Quốc Gia Hà Nội đã tận tình giảng dạy, truyền đạt những kiến thức quý báu trong suốt bốn năm học làm nền tảng cho tôi thực hiện khóa luận tốt nghiệp này

Con xin cảm ơn cha mẹ và gia đình đã sinh ra và nuôi d ạy con khôn lớn, luôn bên cạnh động viên và ủng hộ con trên con đường mà con đã yêu thích và lựa chọn

Cảm ơn các bạn sinh viên Khoa Công nghệ thông tin khóa 2005 – 2009 Các bạn đã giúp đỡ và ủng hộ tôi rất nhiều cũng như đóng góp nhiều ý kiến quý báu, qua đó, giúp tôi hoàn thiện khóa luận tốt hơn

Mặc dù đã r ất nỗ lực, cố gắng nhưng chắc hẳn khóa luận của tôi vẫn còn nhiều thiếu sót Tôi rất mong nhận được nhiều những ý kiến đánh giá, phê bình của quý thầy cô, của các anh chị và các bạn

Một lần nữa, tôi xin chân thành cảm ơn

Hà Nội, tháng 5 năm 2009 Vũ Sỹ Vương

Trang 4

Tóm tắt nội dung

Trong quy trình phát triển phần mềm, kiểm chứng phần mềm đóng vai trò quan trọng trong việc đảm bảo tính đúng đắn của hệ thống trong suốt quá trình thực thi Nó có nhiệm vụ phát hiện và dò tìm lỗi cho giai đoạn kiểm thử phần mềm Phương pháp lập trình hướng khía cạnh (AOP) cùng với công nghệ AspectJ ra đời đã tạo ra hướng phát triển mới cho kiểm chứng phần mềm, giúp nâng cao chức năng dò tìm, s ửa lỗi phần mềm mà không ảnh hưởng tới mã nguồn hệ thống Từ yêu cầu thực tế, khi mà mô hình UML đang là sự lựa chọn phổ biến cho việc mô hình hóa hệ thống phần mềm ở giai đoạn thiết kế, việc kiểm chứng các giao thức ràng buộc đối tượng, giao thức ràng buộc giữa các tác tử trong hệ đa tác tử được mô tả trong biểu đồ trạng thái và biểu đồ trình tự UML, AUML là rất cần thiết trong thời gian chạy Dựa vào yêu cầu thực tế đặt ra cùng với việc lựa chọn AOP làm giải pháp giải quyết vấn đề, trong phạm vi khóa luận, tôi xin trình bày phương pháp sinh mã aspect phục vụ cho mục đích kiểm chứng phần mềm và xây dựng công cụ Protocol Verification Generator (PVG) tự động

sinh mã aspect dựa trên phương pháp này Nội dung chính của phương pháp là dựa

vào các kiến thức về AOP và UML, XML, AUML, JADE framework để chuyển đổi các giao thức ràng buộc đối tượng được đặc tả bởi biểu đồ UML, giao thức tương tác giữa các tác tử trong hệ đa tác tử được đặc tả bởi biểu đổ AUML sang các mô-đun

aspect phục vụ quá trình kiểm chứng Ý nghĩa thực tiễn của bài toán là việc sử dụng

mã aspect vừa được tạo ra đan vào chương trình chính thông qua b ộ đan (aspect

weaver) của AspectJ để thực hiện nhiệm vụ kiểm chứng các giao thức ràng buộc giữa các đối tượng, các tác tử trong thời gian chạy

Trang 5

Mục lục

Chương 1 Mở đầu 1

1.1 Đặt vấn đề 1

1.2 Nội dung bài toán 2

1.3 Tổng quan phương pháp “Kiểm chứng đặc tả UML cho tác tử phần mềm” 3

1.4 Cấu trúc khóa luận 4

Chương 2 Giới thiệu lập trình hướng khía cạnh (Aspect-Oriented Programming) và AspectJ 6

2.1 Phương pháp lập trình hướng khía cạnh 6

2.1.1 Sự hạn chế của lập trình hướng đối tượng (OOP) 6

2.1.2 Lập trình hướng khía cạnh (AOP) 9

2.2.5 Cơ chế họa động của AspectJ 15

2.3 Sử dụng AOP Phát triển ứng dụng và phương pháp kiểm chứng dựa trên AOP 15

2.4 Kết luận 17

Chương 3 Agent UML và JADE framework 18

3.1 Ngôn ngữ mô hình hóa UML 18

3.1.1 Khái niệm 18

3.1.2 Biểu đồ trạng thái (State Diagram) 18

3.1.3 Biểu đồ trình tự (Sequence Diagram) 19

3.2 XML (eXtensible Markup Language) 20

3.2.1 Cơ bản về XML 20

Trang 6

3.2.2 XML DOM 22

3.3 XMI (XML Metadata Interchange) 24

3.4 AUML (Agent UML) 25

3.4.1 Tác tử phần mềm là gì? 25

3.4.2 Phần mềm hướng Agent 26

3.4.3 AUML (Agent Unified Modeling Language) 28

3.5 Java Agent DEvelopment Framework (JADE) 31

3.5.1 Khái niệm về JADE 31

3.5.2 Cấu trúc của JADE platform 32

3.5.3 Một số lớp quan trọng trong thư viện JADE 33

3.6 Kết luận 34

Chương 4 Xây dựng máy trạng thái từ biểu đồ UML 35

4.1 Biểu đồ trạng thái 35

4.1.1 Quy tắc biểu diễn giao thức bằng biểu đồ trạng thái 35

4.1.2 Xây dựng cấu trúc dữ liệu mô tả biểu đồ trạng thái UML 36

4.1.3 Xây dựng FSM mô tả biểu đồ trạng thái UML 40

4.2 Biểu đồ trình tự UML 42

4.2.1 Cách biểu diễn giao thức giữa nhiều đối tượng bằng biểu đồ trình tự UML 42

4.2.2 Xây dựng cấu trúc dữ liệu mô tả biểu đồ trình tự UML 43

4.2.3 Xây dựng FSM mô tả biểu đồ trình tự UML 46

4.3 Kết luận 47

Chương 5 Xây dựng công cụ tự động sinh aspect từ máy trạng thái 48

5.1 Đặt vấn đề 48

5.2 Sinh aspect từ FSM mô tả biểu đồ trạng thái UML 49

5.3 Sinh aspect từ FSM mô tả biểu đồ trình tự UML 50

5.4 Mở rộng 51

5.5 Sinh mã aspect kiểm chứng giao thức (AB)n 52

Trang 7

6.2.1 Giao thức của các ứng dụng Applet 56

6.2.2 Kiểm chứng giao thức biểu diễn giao thức ghi nợ ở một máy ATM 606.2.3 Kiểm chứng giao thức [A*B] n 64

6.2.4 Kiểm chứng giao thức tương tác tác tử 66

6.3 Kết luận 70

Chương 7 Kết luận 71

7.1 Kết luận về khóa luận 71

7.2 Hướng phát triển trong tương lai 72

Phụ lục 73

Phụ lục A: Tài liệu XMI mô tả biểu đồ trạng thái UML 73

Phụ lục B: Tài liệu XMI mô tả biểu đồ trình tự UML 75

Phụ lục C: Agent Customer (Customer.java) 78

Phụ lục D: Agent ShoppingCart (ShoppingCart.java) 81

Phụ lục E: Aspect Template 83

Trang 8

Danh mục ký hiệu, từ viết tắt AOP Aspect-Oriented Programming

FSM Finite State Machine

JADE Java Agent DEvelopment Framework

OOP Object Oriented Programming

PVG Protocol Verification Generator

XMI XML Metadata Interchange

XML eXtensible Markup Language

UML Unified Modeling Language

Trang 9

Chương 1 Mở đầu 1.1 Đặt vấn đề

Ngày nay công nghệ thông tin đã được ứng dụng vào tất cả các lĩnh vực của đời sống xã hội Nó đã tạo ra một diện mạo mới cho xã hội và nhờ đó nền văn minh nhân loại đã được nâng lên một tầm cao mới Nói đến công nghệ thông tin là nói đến công nghệ phần mềm – một phần không thể tách rời của công nghệ thông tin Hiện nay ngành công nghệ phần mềm trên thế giới đã và đang phát triển như vũ bão Những tiến bộ vượt bậc của khoa học kỹ thuật phần cứng đã tạo điều kiện thuận lợi cho công nghệ phần mềm ngày càng phát triển không ngừng

Phần mềm được coi là sản phẩm chính của công nghệ phần mềm, được phát triển theo các mô hình, quy trình phát triển đặc biệt Quá trình phát triển phần mềm bao gồm rất nhiều giai đoạn: Thu thập yêu cầu, phân tích, thiết kế, xây dựng, kiểm tra, triển khai và bảo trì phần mềm Trong các giai đoạn đó giai đoạn kiểm tra, phát hiện, xác định và sửa các lỗi phần mềm là rất quan trọng để đảm bảo chất lượng của một phần mềm Các lỗi phần mềm có thể gây thiệt hại to lớn về tiền bạc, thời gian và công sức của con người Lỗi phần mềm được phát hiện càng muộn thì càng gây hậu quả nghiêm trọng, tốn rất nhiều thời gian và công sức để sửa chữa lỗi, thậm chí có thể phải xây dựng lại toàn bộ hệ thống từ đầu Chính ví vậy cần có các phương pháp phát hiện lỗi sớm nhằm giảm thiểu công sức để sửa chúng Để phát hiện ra những lỗi phần mềm, phần mềm cần phải được kiểm chứng (Verification) và thẩm định (Valication) [13] Kiểm chứng phần mềm là kiểm tra xem phần mềm có được thiết kế đúng và thực thi đúng như đặc tả yêu cầu hay không Thẩm định phần mềm là giai đoạn có sự hỗ trợ của khách hàng nhằm kiểm tra xem phần mềm có đáp ứng được các yêu cầu của họ hay không

Mục đích chính của kiểm chứng phần mềm là làm giảm thiểu lỗi phần mềm tới mức có thể chấp nhận được Chính vì vậy, nó có vai trò vô cùng quan trọng trong toàn bộ quy trình phát triển phần mềm và trong ngành công nghệ phần mềm hiện nay Nó đã và đang thu hút được mối quan tâm của rất nhiều nhà nghiên cứu

Giai đoạn kiểm thử trong quy trình phát triển phần mềm có mục đích kiểm tra tính đúng đắn của sản phầm phần mềm Trên thực tế, các thao tác kiểm thử đơn vị chỉ đánh giá được tính đúng sai của đầu vào và đầu ra của chương trình, không ki ểm tra được quá trình hoạt động logic của chương trình có theo đúng đ ặc tả ban đầu hay

Trang 10

không Những đơn vị chương trình nhỏ này nếu không được kiểm tra kỹ sẽ có thể gây ra thiệt hại nặng nề khi tích hợp chúng để tạo thành chương trình hoàn ch ỉnh Vấn đề đặt ra là cần có phương pháp kiểm chứng các đặc tả giao thức giữa các đối tượng, các tác tử ngay trong thời gian chạy, đánh giá xem trong thời gian chạy đối tượng hay tác tử phần mềm có vi phạm các giao thức ràng buộc đã được đặc tả hay không, và từ đó đảm bảo chắc chắn hơn tính đúng đắn của sản phầm phần mềm Trong khóa luận này, tôi xin giới thiệu phương pháp tự động sinh mã aspect kiểm chứng đặc tả giao thức trong thời gian chạy, dựa trên phương pháp lập trình hư ớng khía cạnh (Aspect – Oriented Programming)

1.2 Nội dung bài toán

Hiện nay có rất nhiều phương pháp kiểm chứng phần mềm như giả lập hay kiểm chứng mô hình Trong phạm vi bài toán được đặt ra ở đây, tôi muốn đề cập tới phương pháp kiểm chứng phần mềm dựa trên phương pháp lập trình hư ớng khía cạnh (AOP) [7, 12] Lĩnh vực kiểm chứng cụ thể trong phạm vi bài toán là kiểm chứng giao thức đặc tả hoạt động của các đối tượng Java và kiểm chứng giao thức giữa các tác tử trong hệ đa tác tử (giao thức được mô tả bằng biểu đồ trạng thái và biểu đồ trình tự UML, AUML) trong thời gian chạy

Trong cách tiếp cận này, một ứng dụng hướng đối tượng được đặc tả bằng mô hình UML và được cài đặt bằng ngôn ngữ Java; một hệ đa tác tử được đặc tả bằng các biểu đồ AUML và được cài đặt dựa trên JADE framework Các aspect sau đó sẽ được

đan vào khung mã Java đ ể kiểm tra tại bất kỳ thời điểm nào trong thời gian chạy, các

đối tượng Java, các tác tử phần mềm hoạt động vi phạm giao thức đã đặc tả (aspect là

mô-đun cắt ngang hệ thống) Bài toán có nhiệm vụ là tạo ra được các aspect từ biểu đồ

trạng thái và biểu đồ trình tự UML; dùng công cụ AspectJ để đan các aspect này vào khung chương trình Java chính Khi đó, trong quá trình ch ạy của chương trình, các

đoạn mã aspect sẽ tự động kiểm tra các đặc tả giao thức và đưa ra thông báo lỗi khi có

bất kỳ vi phạm nào xảy ra Trong khi phương pháp kiểm thử đơn vị chỉ xác định được tính đúng đắn của đầu vào và đầu ra của chương trình, không kiểm tra được những lỗi logic thì phương pháp kiểm tra tính đúng đắn ngay tại thời gian chạy của chương trình sẽ đem lại hiệu quả rất lớn

Nhiệm vụ chính của bài toán là xây dựng phương pháp tạo ra các đoạn mã aspect

để kiểm chứng, xây dựng công cụ Protocol Verification Generator(PVG) tự động sinh mã aspect kiểm chứng từ đặc tả giao thức bằng biểu đồ trạng thái và biểu đồ trình tự UML, AUML Tôi xin đề cập hướng nghiên cứu kiểm chứng đặc tả UML cho tác tử

Trang 11

phần mềm để kiểm chứng giao thức giữa các đối tượng Java trong thời gian chạy và kiểm chứng giao thức giữa các tác tử trong hệ đa tác tử được xây dựng trên JADE framework Từ một biểu đồ trạng thái hay biểu đồ trình tự UML, AUML xuất ra tài liệu XMI đặc tả các biểu đồ này Các tài liệu XMI chính là đầu vào cho công cụ cần xây dựng Dựa vào các kiến thức về UML, XML tôi sẽ phân tích tài liệu XMI, xây dựng máy trạng thái (FSM) mô tả các biểu đồ UML, AUML Sử dụng máy trạng thái vừa tạo để sinh ra mã aspect phục vụ cho việc kiểm chứng sau này Mã aspect chính là đầu ra cuối cùng của công cụ

1.3 Tổng quan phương pháp “Kiểm chứng đặc tả UML cho tác tử phần mềm”

Bài toán bắt đầu với đầu vào là một biểu đồ trạng thái hay biểu đồ trình tự UML, các biểu đồ này sẽ được xuất ra dạng XMI Sau đó, lấy ra các thông tin cần thiết mô tả các đối tượng của biểu đồ và chuyển thành một máy trạng thái (FSM) Lập trình viên sẽ phát triển các mô-đun nghiệp vụ chính từ hai biểu đồ này và các biểu đồ UML khác còn lại Song song với nó là quá trình xây dựng các mô-đun cắt ngang hệ thống thành

các aspect từ máy trạng thái Bài báo “Checking Interface Interaction Protocols Using

Aspect-oriented Programming” [5] đã xây dựng phương pháp kiểm chứng giao thức xử dụng AOP Dựa vào nội dung phương pháp này tôi đã xây d ựng công cụ tự động hóa việc sinh các mô-đun aspect với đầu vào là tài liệu XMI mô tả biểu đồ trạng thái

hay biểu đồ trình tự UML Phương pháp xây dựng công cụ Protocol Verification

Generator của tôi gồm hai bước:

- Bước1: Phân tích tài liệu XMI, lấy các thông tin cần thiết mô tả biểu đồ

UML để xây dựng máy trạng thái Đầu tiên, tôi sẽ phân tích tài liệu XMI, xây dựng các cấu trúc dữ liệu mô tả các thành phần của biểu đồ UML bằng ngôn ngữ Java, sau đó sử dụng thư viện XML DOM đọc tài liệu XMI này, lấy dữ liệu theo cấu trúc đã định nghĩa trước, tạo ra FSM

- Bước 2: Xây dựng bộ sinh tự động aspect từ FSM: Sử dụng FSM vừa

được sinh ra, duyệt từng trạng thái trong FSM, áp dụng phương pháp cài

đặt aspect trong bài báo nói trên, tôi sẽ tạo ra các join point, pointcut và

advice từ các trạng thái đó để hình thành mô-đun aspect

Trong hình minh họa dưới đây, tôi sẽ xây dựng công cụ Protocol Verification

Generator Kết quả thu được là các đoạn mã aspect sẽ được đan vào chương trình Java

thông qua trình biên dịch AspectJ Kết quả cuối cùng của quá trình này chính là hệ

Trang 12

thống có chứa những đoạn mã kiểm chứng Trong quá trình thực thi, kể cả trong thời gian chạy, bất cứ khi nào xảy ra vi phạm ràng buộc đã định nghĩa trong biểu đồ UML thì chương trình đều báo thông báo lỗi cho lập trình viên, chỉ ra vị trí dòng mã nguồn sai đặc tả trong mã nguồn của chương trình Nh ờ đó, lập trình viên có thể kiểm soát được hệ thống và làm cho hệ thống chạy ổn định và đúng đắn hơn

Use Case DiagramClass Diagram

Sequence DiagramState Diagram

XMI File (*.xmi, *.xml)

AspectJ Generator

Bytecode withProtocol checking

Hình 1.1: Quy trình kiểm chứng phần mềm dựa vào AOP

1.4 Cấu trúc khóa luận

Các phần còn lại của khóa luận được phân bố như sau:

Chương 2: Giới thiệu về phương pháp lập trình hướng khía cạnh Trong chương

này tôi sẽ đưa ra những so sánh giữa hai phương pháp OOP và AOP, từ đó nêu bật những ưu điểm của AOP; vai trò và ý nghĩa c ủa AOP đối với công nghệ phần mềm hiện nay Đồng thời, tôi cũng gi ới thiệu công cụ AspectJ – một cài đặt của AOP cho ngôn ngữ lập trình Java

Chương 3: Trình bày sơ qua v ề các kiến thức về: UML, XML, XMI; trình bày

một số khái niệm về tác tử phần mềm, phần mềm hướng agent và AUML – mở rộng từ

UML để mô tả các hệ thống dựa tác tử Giới thiệu JADE – một framework hỗ trợ xây dựng hệ đa tác tử trên ngôn ngữ Java Đây là nền tảng kiến thức căn bản để xây dựng công cụ tự sinh mã aspect trong khóa luận của tôi

Chương 4: Trình bày phương pháp xây dựng máy trạng thái mô tả biểu đồ trạng

thái và biểu đồ trình tự UML Trong chương này, tôi sẽ trình bày cách phân tích tài

Trang 13

liệu XMI mô tả các biểu đồ UML, từ đó xây dựng các cấu trúc dữ liệu cần thiết để lấy dữ liệu từ tài liệu XMI hình thành nên máy trạng thái

Chương 5: Xây dựng công cụ tự sinh mã aspect từ máy trạng thái Trong

chương này, tôi sẽ trình bày chi tiết thuật toán sinh mã aspect từ máy trạng thái mô tả

biểu đồ UML Đồng thời tôi trình bày phương pháp sinh mã aspect kiểm chứng giao

thức (AB)n – một mở rộng cho công cụ Protocol Verification Generator

Chương 6: Cài đặt công cụ Protocol Verification Generator tự sinh aspect Sau

đó, tiến hành kiểm chứng một số giao thức thực tế

Chương 7: Đưa ra các kết luận của khóa luận và hướng nghiên cứu tiếp theo

trong tương lai

Trang 14

Chương 2 Giới thiệu lập trình hư ớng khía cạnh (Aspect-Oriented Programming) và AspectJ

2.1 Phương pháp lập trình hướng khía cạnh

Có lẽ các khái niệm về lập trình hướng khía cạnh (AOP) hiện nay đã được nhiều người biết đến, vì vậy ở đây tôi sẽ chỉ trình bày lại ngắn gọn các khái niệm cơ bản và đặc điểm chính của AOP Để trả lời được câu hỏi AOP là gì? Tại sao phải có AOP? chúng ta sẽ bắt đầu tìm hiểu sự hạn chế của các phương pháp lập trình hiện tại trong việc đáp ứng các yêu cầu ngày càng phức tạp của các hệ thống phần mềm

Như chúng ta đã bi ết trong OOP người ta cố gắng mô tả thế giới thực thành các đối tượng với các thuộc tính và phương thức; cùng với các tính chất của lập trình hướng đối tượng như: tính trừu tượng, tính đóng gói, tính kế thừa và đa hình đã làm thay đổi hoàn toàn ngành công nghiệp phần mềm

Hình 2.1: OOP

Ta xét một bài toán cụ thể: Cần xây dựng một chương trình vẽ hình đơn giản như hình vẽ mô tả dưới đây:

Trang 15

Hình 2.2: Mô tả chương trình vẽ hình đơn giản Một phân tích đơn giản cho yêu cầu của bài toán:

- Các hình học cơ bản: điểm, đoạn thẳng, hình chữ nhật, hình tròn… - Hiển thị các hình ở các vị trí khác nhau trong khung vẽ

- Phải cập nhật lại hình tại vị trí mới mỗi khi di chuyển, co giãn hình Sử dụng OOP ta sẽ mô hình hóa yêu cầu thành các đối tượng như sau:

- Lớp Shape: là một lớp Abstract chứa phương thức moveBy(int, int) – di chuyển hình

Trang 16

Hình 2.3: Sơ đồ lớp cho bài toán vẽ hình

Mô hình hóa thành các lớp như vậy ta thấy bài toán đã tương đối ổn Bây giờ vấn đề đặt ra là mỗi khi ta thay đổi tọa độ của một điểm hay co giãn hình, di chuyển hình ta lại phải vẽ lại hình ở vị trí mới – tức là phải update lại Display

Xét lớp đơn giản nhất là lớp Point, Khi đặt lại tọa độ x, tọa độ y, hay di chuyển

Point từ vị trí này sang vị trí khác, ta đều phải update lại Display thông qua phương

thức display.update(this) Như vậy, cùng một phương thức display.update(this), ta

phải gõ lại ở ba vị trí khác nhau ứng với ba sự thay đổi Hãy thử tưởng tượng xem nếu chương trình của chúng ta đủ lớn và có khoảng vài ngàn sự thay đổi kiểu như thế thì dòng mã nguồn display.update(this) sẽ phải xuất hiện ở hàng ngàn chỗ khác nhau

Đối với lớp Line hay các lớp khác cũng vậy Mỗi khi có sự thay đổi hình thì ngay

sau sự thay đổi đó sẽ có dòng mã nguồn display.update(this) đi kèm theo nó

Hình 2.4: Cập nhật hình khi có sự thay đổi

Trang 17

Giả sử chương trình vẽ hình của chúng ta đã hoàn thành mỹ mãn với đầy đủ các chức năng cơ bản Đột nhiên, khách hàng yêu cầu cần phải ghi lại những sự thay đổi khi vẽ hình ra một file log.txt Ôi! Điều này thực sự là rất khổ sở cho lập trình viên khi phải dò lại toàn bộ mã nguồn, xem đoạn nào có sự thay đổi hình, chèn thêm vào đó một dòng mã nguồn có chức năng lưu vết ra file log.txt

Ta có thể chia các chức năng của một phần mềm ra làm hai loại chính:

- Thứ nhất là các chức năng thực hiện các nghiệp vụ chính, nghiệp vụ cơ bản của hệ thống (ví dụ như chức năng vẽ điểm, vẽ đoạn thẳng, vẽ hình khối trong bài toán vẽ hình ở trên)

- Thứ hai, những chức năng dàn trải trên rất nhiều các mô-đun nghiệp vụ chính – được gọi là các chức năng cắt ngang hệ thống (ví dụ: cập nhật hình, lưu vết, bảo mật) hay được gọi là crosscutting concern

OOP có thể giải quết rất tốt những chức năng chính của hệ thống, nhưng lại gặp rất nhiều khó khăn trong việc giải quyết các chức năng cắt ngang hệ thống Khi sử dụng OOP để thực hiện các chức năng cắt ngang hệ thống, hệ thống sẽ gặp phải hai vấn đề chính, đó là: chồng chéo mã nguồn (Code tangling) và dàn trải mã nguồn (Code scattering) [12]

- Chồng chéo mã nguồn: Mô-đun chính của hệ thống ngoài việc thực hiện

các yêu cầu chính, nó còn phải thực hiện các yêu cầu khác như: tính đồng bộ, bảo mật, lưu vết, lưu trữ Như vậy, trong một mô-đun có rất nhiều loại mã khác nhau, hiện tượng này gọi là chồng chéo mã nguồn Điều này làm cho tính mô-đun hóa của hệ thống giảm đi, khả năng sử dụng lại mã nguồn thấp, khó bảo trì hệ thống

- Dàn trải mã nguồn: Cùng một mã nguồn của các chức năng cắt ngang hệ

thống được cài đặt lặp đi lặp lại rất nhiều lần ở nhiều mô-đun chính của hệ thống Ví dụ như trong chương trình vẽ hình ở trên, mã nguồn của chức năng cập nhật hình, lưu v ết xuất hiện ở tất cả các mô-đun của hệ thống Hiện tượng này gọi là dàn trải mã nguồn

2.1.2 Lập trình hướng khía cạnh (AOP)

Lập trình hướng khía cạnh được xây dựng trên các phương pháp lập trình hiện tại như lập trình hư ớng đối tượng, lập trình có cấu trúc, bổ sung thêm các khái niệm và cấu trúc để mô-đun hóa các chức năng cắt ngang hệ thống (crosscutting concern) Với

AOP, các quan hệ cơ bản sử dụng các phương pháp cơ bản Nếu sử dụng OOP, sẽ thực

Trang 18

thi các quan hệ cơ bản dưới hình thức lớp (class) Các aspect trong hệ thống đóng gói

các chức năng cắt ngang hệ thống lại với nhau Chúng sẽ quy định cách các mô-đun khác nhau gắn kết với nhau để hình thành lên hệ thống cuối cùng

Nền tảng cơ bản của AOP khác với OOP là cách quản lý các chức năng cắt ngang hệ thống Việc thực thi của từng chức năng cắt ngang AOP bỏ qua các hành vi được tích hợp vào nó Ví dụ một mô-đun nghiệp vụ sẽ không quan tâm nó cần được

lưu vết hoặc được xác thực như thế nào, kết quả là việc thực thi của từng concern tiến

triển một cách độc lập

Quay trở lại với ví dụ về chương trình vẽ hình đơn giản ở phần trên Nếu sử dụng AOP, các chức năng cắt ngang hệ thống: cập nhật hình, lưu vết sẽ được giải quyết theo cách sau:

Thay vì tích hợp chức năng các mô-đun cắt ngang hệ thống (cập nhật hình, lưu vết) ngay trong mô-đun nghiệp vụ chính; lập trình viên sẽ tách chúng ra thành các mô-

đun mới, gọi là aspect Hình 2.5 minh họa cho việc thực thi chức năng cập nhật hình

bằng AOP và dưới đây là mã nguồn của aspect đó

publicaspect UpdateSignaling {

pointcut updateDisplay(): execution(void *.setX(int)) || execution(void *.setY(int))

|| execution(void *.moveBy(int,int));

after(): updateDisplay() {

display.update(this); }

}

Hình 2.5: Dùng AOP giải quyết bài toán vẽ hình

Trang 19

Sau khi định nghĩa một aspect như vậy thì bất cứ khi nào có sự thay đổi về hình

(setX, setY, moveBy) chương trình s ẽ tự động gọi chức năng cập nhật hình, cụ thể ở

đây là phương thức display.update(this) mà ta không cần phải lục lọi lại các đoạn mã

nguồn để thêm nó dòng mã nguồn này vào (các khái niệm cơ bản của aspect như:

advice, join point, pointcut, aspect tôi sẽ trình bày cụ thể trong phần 2.2 nói về AspectJ)

2.1.2.1 Phương pháp luận của AOP

Vấn đề cốt lõi của AOP là cho phép chúng ta thực hiện các vấn đề riêng biệt một cách linh hoạt và kết nối chúng lại để tạo nên hệ thống cuối cùng AOP bổ xung cho OOP bằng việc hỗ trợ một dạng mô-đun khác, cho phép kéo theo thể hiện chung của các vấn đề đan nhau vào một khối Khối này gọi là ‘aspect’ (tạm dịch là ‘lát’ – hàm ý cắt ngang qua nhiều lớp đối tượng) Từ chữ ‘aspect’ này chúng ta có mội phương pháp lập trình mới: Aspect-Oriented Programming Nhờ mã được tách riêng biệt, các vấn đề

đan xen nhau trở nên dễ kiểm soát hơn Các aspect của hệ thống có thể thay đổi, thêm

hoặc xóa lúc biên dịch và có thể tái sử dụng Một dạng biên dịch đặc biệt có tên là

Aspect Weaver thực hiện việc kết hợp các thành phần riêng lẻ thành một hệ thống thống nhất

2.1.2.2 Ưu điểm của AOP

AOP là một kỹ thuật mới đầy triển vọng, hứa hẹn đem lại nhiều lợi ích cho việc phát triển phần mềm, dưới đây là một số lợi ích cụ thể của AOP [12]:

- Mô-đun hóa những vấn đề đan xen nhau: AOP xác định vấn đề một

cách riêng biệt, cho phép mô-đun hóa những vấn đề liên quan đến nhiều lớp đối tượng

- Tái sử dụng mã nguồn tốt hơn: Các aspect là những mô-đun riêng biệt,

được kết hợp linh động – đây chính là yếu tố quan trọng để tái sử dụng mã nguồn

- Cho phép mở rộng hệ thống dễ dàng hơn: Một thiết kế tốt phải tính đến

cả những yêu cầu hiện tại và tương lai, việc xác định các yêu cầu trong tương lai là một công việc khó khăn Nhưng nếu bỏ qua các yêu cầu trong tương lai, có thể bạn sẽ phải thay đổi hay thực hiện lại nhiều phần của hệ thống Với AOP, người thiết kế hệ thống có thể để lại quyết định thiết kế cho những yêu cầu trong tương lai nhờ thực hiện các aspect riêng biệt

Trang 20

2.2 AspectJ

AspectJ là sự mở rộng theo mô hình AOP của ngôn ngữ Java, với sự mở rộng này mã chương trình viết bằng Java sẽ tương thích với chương trình viết bằng AspectJ

AspectJ gồm hai phần cơ bản là:

- Đặc tả ngôn ngữ: Chỉ ra cách viết mã, với AspectJ các chức năng cơ bản

của hệ thống sẽ được viết bằng Java còn các chức năng cắt ngang hệ thống sẽ được thực hiện bởi AspectJ

- Phần thực thi: Cung cấp các công cụ biên dịch, gỡ lỗi AspectJ đã đư ợc

plugin vào công cụ phát triển Eclipse (http://www.eclipse.org/) và được đánh giá là sản phẩm tốt nhất hiện nay về AOP

Một số khái niệm cơ bản trong AspectJ:

2.2.1 Join point

Join point là bất kỳ điểm nào có thể xác định được khi thực hiện chương trình [7, 12] Ví dụ: lời gọi hàm, khởi tạo đối tượng Join point chính là vị trí mà các hành động thực thi cắt ngang được đan vào Trong AspectJ mọi thứ đều xoay quanh join point

Một số loại join point chính trong AspectJ: - Join point tại hàm khởi tạo (constructor)

- Join point tại các phương thức

- Join point tại các điểm truy cập thuộc tính

- Join point tại các điểm điều khiển ngoại lệ: Được điều khiển trong khối

điều khiển ngoại lệ

Cú pháp của pointcut được khai báo như sau:

[access specifier] pointcut name([args]) :

pointcut-definition;

Ví dụ:

public pointcut test(): call(void Line.setP1(Point));

Trang 21

Bảng 2.1: Ánh xạ giữa các loại join point và pointcut tương ứng:

Loại join point Cú pháp pointcut

Thực hiện phương thức execution(MethodSignature)

Gọi phương thức call(MethodSignature)

Thực hiện hàm dựng execution(ConstructorSignature)

Gọi hàm dựng call(ConstructorSignature)

Khởi tạo lớp staticinitialization(TypeSignature)

Đọc thuộc tính get(FieldSignature)

Ghi thuộc tính set(FieldSignature)

Thực hiện điều khiển ngoại lệ

execution handler(TypeSignature)

Khởi tạo đối tượng initialization(ConstructorSignature)

Tiền khởi tạo đối tượng preinitialization(ConstructorSignature)

Thực hiện advice adviceexecution()

2.2.3 Advice

Advice là mã thực hiện tại một join point mà được chọn bởi pointcut [7, 12] Hay

nói cách khác, nếu ta coi pointcut là khai báo tên phương thức, thì advice là phần thân

của phương thức đó Pointcut và advice sẽ hình thành nên các luật đan kết các quan hệ

đan xen

Advice được chia ra làm ba loại sau:

- Before: Được thực hiện trước join point - After: Được thực hiện sau join point - Around: Thực thi xung quanh join point

Giả sử ta có pointcut được khai báo như sau:

pointcut updateDisplay(): execution(void *.moveBy(int,int))

Ta có thể xây dựng các advice như sau: - Before advice thự hiện lưu vết

before() : updateDisplay() {

Trang 22

// logging }

- After advice thực hiện cập nhật hình

after() : updateDisplay() { display.update(this); }

Ví dụ về around advice dùng để kiểm tra thuộc tính age của lớp Person trong phương thức setAge() có vi phạm điều khiện không (điều kiện: age > 0)

voidaround(Person person, int age):setAge(person, age) {

if(age > 0)

Process(person,age); else

System.out.println("Invalid Age!"); }

2.2.4 Aspect

Aspect là phần tử trung tâm của AspectJ, giống như class trong Java Aspect chứa

mã thể hiện các luật đan kết cho các concern Join point, pointcut, advice được kết hợp trong aspect [7, 12]

Aspect được khai báo theo mẫu sau:

[access specification] aspect <AspectName> [extends class-or-aspect-name]

[implements interface-list]

[<association-specifier>(Pointcut)] { aspect body

Ví dụ:

public abstractaspect AbstractLogging { public abstract pointcut logPoints(); public abstract Loger getLogger(); before():logPoints()

{

getLogger().log(Level.INFO, “Before” + thisJoinPoint); }

}

Tuy có gần giống các đặc điểm của class trong Java như: chứa thuộc tính,

phương thức, có thể khai báo trừu tượng, có thể kế thừa… Tuy nhiên, Aspect có một

số khác biệt cơ bản sau:

Trang 23

- Aspect không thể khởi tạo trực tiếp

- Aspect không thể kế thừa từ một aspect cụ thể (không phải trừu tượng)

Aspect có thể được đánh dấu là có quyền bằng định danh privileged Nhờ đó nó

có thể truy cập đến các thành viên của lớp mà chúng cắt ngang

Aspect compiler là thành phần trung tâm của AspectJ, nó có nhiệm vụ kết hợp các file mã nguồn Java với các aspect lại với nhau để tạo ra chương trình cu ối cùng Quá trình dệt có thể xảy ra ở các thời điểm khác nhau: compile – time, link – time và load – time [7]:

- Compile – time: Dệt trong thời gian biên dịch là cách đơn giản nhất Mã nguồn Java và các aspect sẽ được kết hợp với nhau trước khi trình biên

dịch dịch mã nguồn ra dạng byte code Hay nói cách khác, trước khi biên

dịch, các mã aspect sẽ được phân tích, chuyển đổi sang dạng mã Java và

được chèn chính xác vào các vị trí đã định nghĩa sẵn trong mã nguồn Java chính của chương trình Sau đó trình biên dịch sẽ dịch mã đã được dệt này ra dạng byte code AspectJ 1.0.x sử dụng cách này để dệt chương trình

- Link – time: Quá trình dệt được thực hiện sau khi mã nguồn Java và các

aspect được biên dịch ra dạng byte code Một bộ xử lý tĩnh được sử dụng

để đánh dấu các điểm gọi hàm trong mã được viết bằng java Khi một hàm được thực thi Runtime system sẽ phát hiện ra điểm nào cần gọi đến mã

aspect để thực thi và khi đó mã aspect sẽ được gọi để đan vào chương trình

chính AspectJ 1.1.x sử dụng cách này để dệt chương trình

- Load – time: Quá trình dệt được thực hiện khi máy ảo Java tải một class

vào để chạy Theo cách này, mã nguồn Java và các aspect được biên dịch

ra dạng byte code Quá trình dệt diễn ra khi classloader nạp một class

AspectJ 1.5.x sử dụng cách này để dệt chương trình

kiểm chứng dựa trên AOP

Ngày nay, AOP được ứng dụng rộng rãi trong việc phát triển phần mềm Phát triển hệ thống sử dụng AOP tương tự như phát triển hệ thống sử dụng các phương pháp khác, cũng g ồm các bước như: xác định concern, cài đặt concern và kết hợp

Trang 24

chúng lại tạo thành hệ thống cuối cùng Cộng đồng nghiên cứu AOP đề xuất ba bước [12] thực hiện như sau:

- Phân tích bài toán theo khía cạnh (Aspectual decomposition): Trong

bước này chúng ta phân tích các yêu cầu nhằm xác định các chức năng chính của hệ thống và các chức năng cắt ngang hệ thống Các phương thức cắt ngang hệ thống được tách ra khỏi các chức năng chính

- Xây dựng các chức năng (Concern Implementation): Cài đặt các chức

năng một cách độc lập

- Kết hợp các khía cạnh lại để tạo nên hệ thống hoàn chỉnh (Aspectual Recompositon): Trong bước này chúng ta chỉ ra các quy luật kết hợp bằng cách tạo ra các aspect Quá trình này gọi là quá trình dệt mã, sử dụng các thông tin trong aspect để cấu thành hệ thống cuối cùng

Hình 2.6: Các giai đoạn phát triển ứng dụng sử dụng AOP

AOP đã được nghiên cứu và áp dụng vào rất nhiều ngôn ngữ lập trình như: Java, C, C#, PHP Một số dự án được liệt kê trong bảng dưới đây:

Bảng 2.2: Các dự án nghiên cứu AOP

1 AspectJ http://www.eclipse.org/aspectj/

1 AspectWerkz http://aspectwerkz.codehaus.org/

2 Jboss AOP http://jboss.org/

3 Sping AOP http://www.springsource.org/

4 Aspect# http://sourceforge.net/projects/aspectsharp/

5 AspectC++ http://aspectc.org/

6 JAC http://jac.ow2.org/

Trang 25

Từ khả năng mô-đun hóa các quan hệ đan xen, các chức năng cắt ngang hệ thống; tách rời sự hoạt động của các mô-đun cũng như nhiều ưu điểm khác của AOP so với OOP mà hiện nay AOP đã trở thành sự lựa chọn phù hợp cho rất nhiều hệ thống phần mềm; đặc biệt là trong các chức năng lưu vết, bảo mật, xác thực của hệ thống phần mềm Ngoài ra, do các mã aspect độc lập với mã nguồn chính của chương trình, có thể sửa đổi tùy theo ý muốn của lập trình viên, chính vì vậy AOP còn đư ợc ứng dụng rất lớn vào các loại kiểm chứng trong quá trình thiết kế phần mềm Ví dụ như: kiểm chứng giao thức [5], kiểm tra việc gọi tuần tự các hàm trong chương trình [15]…

Nội dung chính của các phương pháp kiểm chứng dựa trên AOP là dựa vào những kiến khái niệm cơ bản của AOP như: join point, pointcut, advice, aspect để xây

dựng nên các mô-đun kiểm chứng (các aspect) từ các chức năng cắt ngang hệ thống Các aspect này sẽ được đan vào khung mã ngu ồn chương trình thông qua trình biên

dịch AspectJ để thực hiện chức năng kiểm chứng

2.4 Kết luận

Trong chương 2 này, tôi trình bày tất cả những khái niệm cơ bản về phương pháp lập trình hướng khía cạnh AOP và AspectJ – sự mở rộng của AOP cho Java Ứng dụng của AOP vào phát triển và kiểm chứng phần mềm AOP vẫn là một ý tưởng mới, vẫn cần có thời gian để đánh giá, tìm hiểu các kỹ thuật hiện có và để phát triển, ứng dụng rộng rãi

Trang 26

Chương 3 Agent UML và JADE framework

3.1.1 Khái niệm

UML (Unified Modeling Language) là ngôn ngữ mô hình hóa đư ợc sử dụng để biểu diễn, đặc tả và xây dựng các thành phần của hệ thống phần mềm Nó là một chuẩn của tổ chức OMG (Object management Group) [11] UML giúp người sử dụng mô tả được các tài liệu đặc tả yêu cầu, tài liệu phân tích và tài liệu thiết kế ứng dụng Hiện nay, nó được dùng để mô tả hình hóa gần như toàn bộ các hệ thống phần mềm từ nhỏ tới lớn, từ đơn giản tới phức tạp trên thế giới

UML sử dụng một hệ thống ký hiệu thống nhất để biểu diễn các phần tử mô hình Tập các phần tử mô hình tạo nên các biểu đồ UML Có nhiều loại biểu đồ UML như: biểu đồ ca sử dụng, biểu đồ lớp, biểu đồ tuần tự, biểu đồ trạng thái, biểu đồ hoạt động… Ở đây tôi chỉ trình bày hai loại biểu đồ được sử dụng làm đầu vào cho nghiên cứu của tôi; đó là: biểu đồ trạng thái (State Diagram) và biểu đồ trình tự (Sequence

Diagram)

Biểu đồ trạng thái là một sự bổ sung cho lời miêu tả biểu đồ lớp Nó mô tả chu kỳ tồn tại của đối tương từ khi sinh ra đến khi bị phá hủy Nó chỉ ra tất cả các trạng thái mà đối tượng của lớp này có thể có, các hành vi của đối tượng và những sự kiện tác động làm thay đổi trạng thái

Trang 27

- State variables (các biến trạng thái – không bắt buộc): đây là những thuộc tính của lớp được thể hiện qua biểu đồ trạng thái

- Activities (sự kiện – không bắt buộc): Đây là phần dành cho hoạt động nơi mà các sự kiện và hành động và liệt kê Có ba loại sự kiện chuẩn hóa có

- Change events: Xuất hiện khi điều kiện thỏa mãn

- Signal events: Chỉ ra việc nhận một tín hiệu ngoài từ một đối tượng sang

đối tượng khác

- Call events: Chỉ ra việc nhận một lời gọi hàm bởi một đối tượng hoặc tác

nhân

- Time events: Đánh dấu việc chuyển trạng thái sau một khoảng thời gian

3.1.3 Biểu đồ trình tự (Sequence Diagram)

Biểu đồ trình tự minh họa các đối tượng tương tác với nhau ra sao Chúng tập trung vào các chuỗi thông điệp, có nghĩa là các thông điệp gửi và nhận giữa một loạt các đối tượng như thế nào Biểu đồ tuần tự có hai trục: trục dọc chỉ thời gian, trục nằm ngang chỉ ra một tập các đối tượng Ví dụ:

Hình 3.2: Biểu đồ tuần tự rút tiền từ máy ATM

Một biểu đồ tuần tự cũng nêu bật sự tương tác giữa các đối tượng trong một kịch bản – một tương tác sẽ xảy ra tại một thời điểm nào đó trong quá trình thực thi hệ thống

Trang 28

Biểu đồ tuần tự gồm hai thành phần chính: - Các đối tượng

- Các thông điệp trao đổi giữa các đối tượng

3.2 XML (eXtensible Markup Language)

XML kết hợp những ưu điểm của các ngôn ngữ trước đó (sự đơn giản của HTML và cấu trúc mô tả tài liệu của SGML), có khả năng mô tả nhiều loại dữ liệu khác nhau với mục đích là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet XML là ngôn ngữ đánh dấu với mục đích chung cho W3C đề nghị [6]

XML là một ngôn ngữ đánh dấu, nó gần giống với HTML (Hypertext markup Language) Nó cung cấp một phương tiện dùng văn bản để mô tả thông tin và áp dụng một cấu trúc kiểu cây cho thông tin đó Mọi thông tin đều hiển thị dưới dạng văn bản (text), chen giữa các thẻ đánh dấu (markup) với nhiệm vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu ký tự [6]

Nội dung của một tài liệu XML gồm hai phần chính:

- Nội dung chính: Hệ thống các thẻ đánh dấu tương ứng với các thông tin cần biểu diễn và có một node gốc

- Nội dung phụ: Bổ sung thông tin cho tài liệu XML, một số thẻ phụ: o Thẻ khai báo tham số: <?xml Ten1=“Giatri1”… ? >

Một số tham số thường dùng như: tham số version (phiên bản chỉ

định của XML), tham số encoding (cách mã hóa các ký tự), tham số

standalone (liên kết với tài liệu xml khác)

o Thẻ chỉ thị xử lý: Mô tả một số thông tin cho tài liệu XML nhưng có ý nghĩa riêng đối với một vài công cụ xử lý nào đó C ấu trúc: <?

Bo_Xu_Ly_Du_Lieu >

Ví dụ: <?xml-stylesheet type=“text/css” href=“a.css” ?>

Định dạng thể hiện tài liệu XML với “chương trình đ ịnh dạng” theo ngôn ngữ CSS được lưu trữ bên trong tệp tin a.css Thẻ này

có ý nghĩa với một số trình duyệt như IE5, Netscape o Thẻ ghi chú: Không ảnh hưởng đến tài liệu XML

Trang 29

Cấu trúc: < Nội dung ghi chú >

o Thẻ CDATA: Yêu cầu các bộ phân tích tài liệu XML bỏ qua không phân tích vào nội dung bên trong của thẻ này Mục đích chính của thẻ này là cho phép sử dụng trực tiếp bên trong thẻ một số ký hiệu không được phép sử dụng bên ngoài Ví dụ các ký tự ‘<’, ‘>’

Cấu trúc: <![CDATA [Nội dung]]>

o Thẻ khai báo thực thể: cho phép tài liệu XML tham chiếu đến một tập hợp các giá trị đã chuẩn bị trước dưới dạng một tên gợi nhớ (tên thực thể)

Khai báo: <!DOCTYPE Ten_goc[ Khai báo thực thể tên X Khai báo thực thể tên Y] o Thẻ khai báo cấu trúc

Các thẻ XML không được định nghĩa trước trong cú pháp XML, người sử dụng có thể tự định nghĩa theo các thẻ theo ý thích khi sử dụng XML XML sử dụng DTD hoặc XML schema để mô tả dữ liệu XML biểu diễn dữ liệu bằng cách sử dụng các thành phần XML, trong đó chứa một trong các thành phần sau đây:

- Thẻ bắt đầu: Chứa tên của thành phần

- XML attributes: Các thuộc tính, mỗi thuộc tính có tên và giá trị

- Nội dung: Có thể chứa một đoạn văn bản hoặc thuộc tính, cũng có th ể chứa cả hai

- Thẻ kết thúc, giống với tên của thẻ bắt đầu Ví dụ về một tài liệu XML:

XML đã trở thành một công cụ rất mạnh và đơn giản để lưu trữ dữ liệu trên các file Nó cho phép bạn lưu trữ dữ liệu theo mẫu và có thể truy xuất được bằng các ứng

version="1.0" encoding="UTF-8"?> <edge type="directed ">

<from id="n1"/> <to id="n2"/> </edge>

<comment> An edge of one graph</comment>

Có 6 thành phần XML trong tài liệu này Đầu tiên là chỉ thị xử lý, Phần tử edge

chứa thuộc tính có tên là type và giá trị là directed Phần tử edge chứa hai phần tử con

là from và to chúng có hai thuộc tính là id Phần tử comment chứa nội dung là một

đoạn văn bản (text)

Trang 30

dụng khác nhau, nhưng nó không thể tạo ra dữ liệu Bằng cách sử dụng các API như DOM, SAX, bạn có thể truy xuất dữ liệu từ một tài liệu XML rất dễ dàng

3.2.2 XML DOM

3.2.2.1 DOM

“The W3C Document Object Model (DOM) is a platform and language-neutral

interfacethat allows programs and scripts to dynamically access and update the

content, structure, and style of a document” [http://www.w3.org/] DOM gồm ba phần riêng biệt:

- Core DOM: Định nghĩa các đối tượng chuẩn cho các tài liệu có cấu trúc

- XML DOM: Định nghĩa tập hợp các đối tượng chuẩn cho tài liệu XML

- HTML DOM: Định nghĩa tập các đối tượng chuẩn cho tài liệu HTML

3.2.2.2 XML DOM

XML DOM định nghĩa các đối tượng và thuộc tính của tất cả các thẻ của tài liệu XML và các phương thức (giao diện) để truy xuất chúng Nó là một chuẩn để truy xuất, thêm, xóa, sửa các thẻ XML

Trong DOM, mọi thứ trong tài liệu đều là nút (node):

- Toàn bộ tài liệu là một nút tài liệu (document node) – cây node

o Một cây gồm nhiều node

o Node cao nhất gọi là root

o Mỗi node, trừ root ra có chính xác một node cha

o Một node có nhiều node con

o Node lá là node không có node con

- Mọi thẻ XML là một nút thẻ (element node)

- Text trong các thẻ XML là nút text (text node) - Mọi thuộc tính là nút thuộc tính (attribute node)

- Ghi chú là nút ghi chú (comment node)

3.2.2.3 XML DOM Parser

Để đọc, cập nhật và thao tác trên một tài liệu XML ta cần một XML Parser Có

nhiều XML Parser được hỗ trợ trong hầu hết các ngôn ngữ (Java, Net…) Parser nạp tài liệu XML vào trong bộ nhớ của máy tính và được xem dưới dạng cây node Sau đó dữ liệu sẽ được thao tác và xử lý thông qua tập hàm XML DOM API

Trang 31

Hình 3.3: XML DOM Parser

3.2.2.4 XML DOM API

Cung cấp các phương thức xử lý tài liệu XML Trong XML DOM API có rất nhiều phương thức để có thể thao tác với tài liệu XML, ở đây tôi xin chỉ ra một số phương thức thường sử dụng nhất để thao tác với tài liệu XML:

- Duyệt node:

o ParentNode: Lấy node cha của node hiện tại

o ChildNodes: Lấy các node con của node hiện tại

o firstChild: Lấy node con đầu tiên của node hiện tại

o lastChild: Lấy node con cuối cùng của node hiện tại

o nextSibling: Lấy node kết tiếp node hiện tại

o previousSibling: Lấy node trước node hiện tại - Thao tác trên các node:

o getElementsByTagName(String tagname): Trả về một tập các node có thuộc tính tên là: tagname

o getElementById(String id): Trả về một node có thuộc tính id là: id

o setAttribute(String name, String value): Đặt thuộc tính cho node với tên thuộc tính là name, giá trị là value

o getAttribute(String name): lấy giá trị của thuộc tính có tên là name

o removeChild: Xóa node con của node hiện tại

o removeAttribute: Xóa bỏ thuộc tính của node hiện tại

Trang 32

o replaceChild: Thay thế node con của node hiện tại bằng một node

mới

o createNode: Dùng để tạo ra tất cả các loại node

o createElement: = createNode với loại element node

o createTextNode: = createNode với loại text node

o createAttribute: = createNode với loại attribute node

o nodeCha.appendChild: thêm vào phần tử cuối cùng của danh sách

các node con của nodeCha

o nodeCha.insertBefore: thêm node mới vào trước node nào đó trong danh sách node con của nodeCha

3.3 XMI (XML Metadata Interchange)

XMI là một chuẩn OMG cho việc trao đổi siêu dữ liệu (metadata) giữa các công cụ, các kho dữ liệu và các ứng dụng Nó là một chuẩn cho phép người dùng mô tả đối tượng bằng cách sử dụng XML Nó làm việc dựa trên các chuẩn như W3C XML, OMG UML và MOF [14]

Mặc dù XML có rất nhiều ưu điểm, nhưng vẫn có một khoảng cách nhất định giữa XML với các đối tượng (objects) XML định nghĩa các phần tử XML, các thuộc tính, không phải là đối tượng Nó không cung cấp các đặc điểm của hướng đối tượng như đa thừa kế và nó không chứa mô hình đối tượng Tồn tại nhiều cách khác nhau để lưu trữ dữ liệu XML và nếu sử dụng các công cụ khác nhau để lưu trữ XML thì sẽ gây ra khó khăn trong việc trao đổi dữ liệu Khi ta lưu trữ đối tượng bằng XML cũng vậy, nếu đối tượng được lưu trữ khác nhau trong XML thì rất khó khăn để trao đổi giữa các công cụ Tuy nhiên, XMI ra chính là cầu nối liền khoảng cách giữa đối tượng và XML Nó cung cấp một chuẩn để tạo ra một ánh xạ từ một đối tượng được định nghĩa bằng UML đến XML

Trang 33

Hình 3.4: Sử dụng XMI trao đổi thông tin giữa các công cụ khác nhau XMI được xây dựng dựa trên XML, vì vậy chúng ta hoàn toàn có thể sử dụng các API chuẩn thao tác với XML như DOM, SAX để thao tác với tài liệu XMI Trong nghiên cứu của tôi, tôi sử dụng DOM XML cho ngôn ngữ Java để thao tác với tài liệu XMI

3.4 AUML (Agent UML)

Trước khi đi vào tìm hi ểu về AUML, tôi xin giới thiệu qua một số khái niệm cơ bản về tác tử phần mềm (agent) và phần mềm hướng tác tử để ta có một cái nhìn tổng

quan nhất về một phần mềm hướng tác tử

Theo từ điển Heritage của Mỹ: “Agent là một đối tượng mà có ảnh hưởng hay có khả năng và có quyền tác động hay đại diện cho một đối tượng khác”

Theo Ressel và Norvig: “Một agent có thể được xét tới bởi khả năng nhận thức

về môi trườn nó đang tồn tại qua bộ cảm biến (sensor) và khả năng tác động lên môi trường đó qua cơ quan phản ứng (effector)”

Theo Pattie Maes: “Agent tự chủ là các hệ tính toán tồn tại trong môi trường động phức tạp, tri giác và hành động tự chủ trong môi trường này, qua đó hình dung được nhiệm vụ hoặc mục đích của mình”

Theo như các định nghĩa trên thì agent có thể là hệ thống phần cứng (điều nhiệt,

tàu vũ trụ, xe tự hành…) hoặc phần mềm (kiểm tra thư, Antivirus, …) Ở đây ta đi vào một vấn đề nhỏ hơn, đó là tác tử phần mềm Vậy tác tử phần mềm là gì?

Trang 34

Tác tử phần mềm là một chương trình máy tính t ồn tại trong môi trường nhất định, tự động hành động phản ứng lại sự thay đổi của môi trường nhằm đáp ứng mục tiêu đã được thiết kế trước [http://www.wikipedia.org/] Và có các tính chất như:

- Antonomy (Tính tự chủ): Một agent có khả năng kiểm soát hành vi của

mình độc lập với các thực thể khác

- Reactivity (Tính phản xạ): Agent có khả năng phản ứng lại các tác động

từ môi trường theo một cơ chế nào đó

- Pro-activeness (Tính chủ động): Agent không chỉ phản ứng lại môi

trường, chúng có thể hành động có mục đích và chủ động để tranh thủ thời

cơ đạt được mục đích đó Từ một mục tiêu, agent có khả năng xác định các

hành động cần thiết và nó thực hiện một cách linh hoạt các hành vi đó để đạt được mục tiêu đề ra

- Social Ability (Tính cộng đồng): Agent có thể tương tác với những agent

khác hay con người để hoàn thành công việc riêng của mình hay trợ giúp

các agent khác trong những hoạt động nào đó

Dựa vào mức độ thông minh, tính di động hay số lượng agent, người ta phân

agent ra một số loại như: agent cộng tác, agent giao diện, agent di dộng, agent thông tin, agent phản xạ, agent thông minh

Công nghệ phần mềm hướng Agent phân rã bài toán thành nhiều thành phần

tương tác và tự trị (agents) mà có các mục tiêu cụ thể để đạt tới Phần mềm hướng

agent là một phương pháp luận mới hỗ trợ cách tiếp cận được công nghệ hóa: phân tích và thiết kế hệ thống

- Phân tích hướng agent: Cũng giống như các phương pháp phân tích hệ

thống khác, phân tích hướng agent cũng bắt đầu từ việc định nghĩa các yêu

cầu và mục đích của hệ thống Các mục đích toàn thể của ứng dụng được phân rã thành những mục tiêu con, nhỏ hơn; cho tới khi nào có thể quản lý

được chúng Việc phân tích hướng agent phải nhận ra được nhiệm vụ của

một agent

- Thiết kế phần mềm hướng agent: Mỗi agent trong hệ thống được giao

cho một hoặc một số nhiệm vụ riêng biệt Các agent phải nắm được đầy đủ

trách nhiệm đối với việc hoàn thành các nhiệm vụ được giao Các nhiệm vụ cộng đồng biểu diễn các chức năng toàn cục của hệ thống agent

Trang 35

Phát triển phần mềm hướng agent dựa vào các hệ đa agent – là một cộng đồng các agent, nơi mà tương tác qua lại giữa các agent và với môi trường của chúng tạo ra

một hành vi toàn thể, hữu ích Một hệ đa agent bao gồm các thành phần: - Các agent được xem như là các cá thể

- Tương tác giữa các agent

- Sự phụ thuộc qua lại giữa agent và các quan hệ cộng đồng

Để hiểu rõ hơn phương pháp phân tích thi ết kế phần mềm hướng agent, tôi xin

trình bày qua một số khái niệm cơ bản trong lý thuyết Gaia [10] – một lý thuyết dùng trong phân tích và thiết kế phần mềm hướng agent

Hình 3.5: Các khái niệm cơ bản của lý thuyết Gaia Trong pha phân tích:

- Xác định các vai trò trong hệ thống và định nghĩa m ột dãy các vai trò chính bằng ngôn ngữ miêu tả phi hình thức Với mỗi vai trò cần xác định các giao thức liên kết

- Đầu ra của pha phân tích là mô hình hoàn thiện của các vai trò – mô tả về trách nhiệm, quyền hạn, các giao thức tương tác, hoạt động và mô hình tương tác Mỗi giao thức mô tả về sự chuyển đổi dữ liệu và các thành phần có liên quan

Pha thiết kế: Tập trung vào việc định nghĩa hệ thống agent để nó có thể hoạt động Nó bao gồm một số giai đoạn như sau:

- Thứ nhất: Xác định mô hình agent, kết hợp vai trò vào các loại agent từ

đó xây dựng hệ thống phân cấp các loại agent và ước lượng số lượng các

thể hiện (instance) được yêu cầu đối với mỗi lớp

Trang 36

- Thứ hai: Xác định các dịch vụ mà agent phải cung cấp để hoàn thành các

nhiệm vụ mà chúng được giao bằng cách phân tích các nhiệm vụ và hoạt động Đó chính là các giao thức được định nghĩa cho mỗi vai trò

- Thứ ba: Xác định các mô hình tích hợp để xác định các khả năng thiếu sót

trong thiết kế

Kết quả đầu ra của pha thiết kế chính là kiến trúc thực tế của hệ thống agent

Nói đến agent cũng như phần mềm hướng agent còn rất nhiều vấn đề cần bàn như: kiến trúc agent, hệ đa agent, liên lạc/truyền thông trong hệ agent… trong phạm vi

khóa luận của tôi, tôi không đề cập tới tất cả các kiến thức về agent, cách thức phân

tích thiết kế, xây dựng phần mềm hướng agent; mà ở đây tôi chỉ trình bày một số khái niêm cơ bản nhất, đưa ra một cái nhìn tổng quan nhất về agent và phần mềm hướng

agent Các vấn đề này được trình bày kỹ trong [1, 3, 10]

3.4.3 AUML (Agent Unified Modeling Language)

Như ta đã biết UML là ngôn ngữ rất mạnh để mô hình hóa các đối tượng và thao tác của các đối tượng Nó cung cấp các mô hình tĩnh (các bi ểu đồ lớp và gói) và các mô hình đ ộng (biểu đồ tương tác, biểu đồ trạng thái, biểu đồ hoạt động) để mô tả hệ thống phần mềm Quá trình xây dựng các hệ thống dựa tác tử cũng đòi hỏi tất cả các quá trình của công nghệ phần mềm như: phân tích, thiết kế, đanh giá, bảo trì… Tuy

nhiên, agent có nhiều điểm khác biệt so với các đối tượng nên có nhiều lúc UML không thể hỗ trợ toàn bộ để mô hình hóa hệ thống dựa agent Vì vậy, để đặc tả cho hệ

thống dựa tác tử, FIFA (Foundation for Intelligent Physical Agents) sử dụng UML mở rộng, gọi là AUML (Agent Unified Modeling Language) để mô hình hóa các hệ dựa tác tử, đặc tả giao thức tương tác tác tử (AIP – Agent Interaction Protocols)

AUML là một hướng tiếp cận giao thức phân mức Một giao thức tương tác tác tử (AIP) mô tả các mẫu truyền thông như một dãy các thông đi ệp giữa các agent và

ràng buộc nội dung của các thông điệp này AIP được mô tả gồm ba mức [8, 9]:

- Mức 1: Mô tả giao thức liên lạc (UML Package and Template)

- Mức 2: Mô tả tương tác giữa các agent (các biểu đồ tuần tự, cộng tác, hoạt

động biểu đồ trạng thái)

- Mức 3: Mô tả quá trình xử lý bên trong agent (activity diagram và

statechart)

Trang 37

3.4.3.1 Mức 1 – biểu diễn giao thức liên lạc ở mức tổng quan

UML cung cấp hai kỹ thuật nhằm biểu diễn các giải pháp cho giao thức, đó là

package và template

- Package: Là tập các nhân tố mô hình hóa ở mức khái niệm

Ví dụ sau được lấy trong [8]

Hình 3.6: Ví dụ package

Các gói cung cấp một kỹ thuật chung cho việc phân chia các mô hình và nhóm các thành phần mô hình Mỗi gói được biểu diễn như sau:

o Mỗi gói đóng là nhóm thành phần có quan hệ logic với nhau

o Kiến trúc của hệ thống được biểu diễn nhờ mô hình liên kết giữa các gói đóng

o Một gói đóng có thể chứa các gói đóng khác o Dùng một gói mô tả giao thức lồng nhau

- Template: là một thành phần mô hình được tham số hóa có các tham số bị ràng buộc Ví dụ sau được lấy trong [8]

Trang 38

Hình 3.7: Một kịch bản giữa người mua hàn và ngời bán hàng

3.4.3.2 Mức 2 – biểu diễn tương tác giữa các agent

Ở mức này, ta sử dụng các biểu đồ trong UML để biểu diễn các giao thức: - Biểu đồ tuần tự

- Biểu đồ cộng tác - Biểu đồ hoạt động - Biểu đồ trạng thái

Trong đó, biểu đồ tuần tự và biểu đồ cộng tác mô tả tương tác giữa các agent;

còn biểu đồ hoạt động và biểu đồ trạng thái biểu diễn các luông xử lý Các biểu đồ này biểu diễn các agent gần giống với UML biểu diễn các đối tượng, và mở rộng ra một

chút cho phù hợp với agent Như: AUML thêm các phần biểu diễn tương tác đa luồng

ví dụ [8]:

Hình 3.8 Tương tác đa luồng trong AUML

Hình (a) biểu diễn các luồng được gửi đi song song (phép AND) Hình (b) bao gồm một hộp quyết định xác định xem luồng nào sẽ được gửi đi tiếp (phép OR) Hình (c) xác định trong một thời điểm chỉ có một luồng được phép gửi đi (phép XOR)

Trang 39

3.4.3.3 Mức 3 – biểu diễn xử lý bên trong Agent

Tại mức thấp nhất, đặc tả về một giao thức Agent yêu cầu giải thích rõ ràng những xử lý chi tiết bên trong agent để tiến hành giao thức Các mô hình mức cao hơn (gọi là holon) bao gồm tập các agent ở mức thấp hơn Các hành vi bên trong có thể được biểu diễn bằng việc sử dụng đệ quy các cách biểu diễn ở mức 2

Ví dụ:

Hình 3.9: Các hành vi bên trong của agent Initiator (a) và Participant(b)

3.5 Java Agent DEvelopment Framework (JADE)

“JADE (Java Agent DEvelopment Framework) is a software Framework fully

implemented in Java language It simplifies the implementation of multi-agent systems through a middle-ware that complies with the FIPA specifications and through a set of

Ta có thể tóm tắt lại định nghĩ trên như sau:

- JADE là phần mềm dạng middle-ware phục vụ cho việc phát triển hệ đa tác tử Nó hỗ trợ việc xây dựng từng agent trong hệ đa agent Cung cấp các dịch vụ cho từng hoạt động của agent, các công cụ phục vụ cho việc debug và agent xây dựng dựa trên chuẩn FIFA

- JADE là một hệ thống mã nguồn mở, được xây dựng trên ngôn ngữ Java

Trang 40

3.5.2 Cấu trúc của JADE platform

Platform JADE là môi trường hỗ trợ agent hoạt động, trao đổi thông tin Platform

JADE chứa nhiều container, các container có thể hoạt động độc lập trên các host khác nhau Có hai loại container chính:

- JADE main-container: Mỗi platform chỉ có một main-container Container này được khở tạo và hủy cùng với platform Nó chứa một số

agent quan trọng của JADE platform như:

o RMA (Remote Management Agent): Hoạt động như màn hình đi ều khiển, phục vụ việc quản lý platform

o DF (Directory Facilitator): Là một agent cung cấp dịch vụ trang vàng (yellow-page) trong platform

 Trang vàng (Yellow-page): Là một dịch vụ cung cấp chức

năng quản lý việc giao tiếp giữa các agent, đối chiếu thông tin

trao đổi

o AMS (Agent Management System): Là agent theo dõi quản lý sự truy cập và sử dụng agent platform Cung cấp dịch vụ trang trắng (white-

page)

 Trang trắng (White-page) cung cấp chức năng quản lý việc

đăng ký của agent, quản lý ID của các agent đã đăng ký và

quản lý vòng đời của agent

- JADE agent-container: Chứa các agent của người sử dụng, nó có thể nằm

trên các host khác nhau

Hình 3.10: Cấu trúc phân tán của JADE

Ngày đăng: 23/11/2012, 15:03

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Quy trình kiểm chứng phần mềm dựa vào AOP - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 1.1 Quy trình kiểm chứng phần mềm dựa vào AOP (Trang 12)
Hình 1.1: Quy trình ki ể m ch ứ ng ph ầ n m ề m d ự a vào AOP - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 1.1 Quy trình ki ể m ch ứ ng ph ầ n m ề m d ự a vào AOP (Trang 12)
hướng đối tượng như: tính trừu tượng, tính đóng gói, tính kế thừa và đa hình đã làm - Kiểm chứng đặt tả uml cho tác tử phần mềm
h ướng đối tượng như: tính trừu tượng, tính đóng gói, tính kế thừa và đa hình đã làm (Trang 14)
Hình 2.1: OOP - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.1 OOP (Trang 14)
Hình 2.2: Mô tả chương trình vẽ hình đơn giản M ột phân tích đơn giản cho yêu cầu củ a bài toán:  - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.2 Mô tả chương trình vẽ hình đơn giản M ột phân tích đơn giản cho yêu cầu củ a bài toán: (Trang 15)
Hình 2.2: Mô tả chương trình vẽ hình đơn giản  M ột phân tích đơn giả n cho yêu c ầ u c ủ a bài toán: - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.2 Mô tả chương trình vẽ hình đơn giản M ột phân tích đơn giả n cho yêu c ầ u c ủ a bài toán: (Trang 15)
Mô hình hóa thành các lớp như vậy ta thấy bài toán đã tương đối ổn. Bây giờ vấn - Kiểm chứng đặt tả uml cho tác tử phần mềm
h ình hóa thành các lớp như vậy ta thấy bài toán đã tương đối ổn. Bây giờ vấn (Trang 16)
Hình 2.4: C ậ p nh ậ t hình khi có s ự thay đổ i - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.4 C ậ p nh ậ t hình khi có s ự thay đổ i (Trang 16)
Hình 2.3: Sơ đồ lớp cho bài toán vẽ hình - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.3 Sơ đồ lớp cho bài toán vẽ hình (Trang 16)
Hình 2.5: Dùng AOP giải quyết bài toán vẽ hình - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.5 Dùng AOP giải quyết bài toán vẽ hình (Trang 18)
Bảng 2.1: Ánh xạ giữa các loại join point và pointcut tương ứng: - Kiểm chứng đặt tả uml cho tác tử phần mềm
Bảng 2.1 Ánh xạ giữa các loại join point và pointcut tương ứng: (Trang 21)
C, C#, PHP. Một số dự án được liệt kê trong bảng dưới đây: - Kiểm chứng đặt tả uml cho tác tử phần mềm
t số dự án được liệt kê trong bảng dưới đây: (Trang 24)
Hình 2.6: Các giai  đoạ n phát tri ể n  ứ ng d ụ ng s ử  d ụ ng AOP - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 2.6 Các giai đoạ n phát tri ể n ứ ng d ụ ng s ử d ụ ng AOP (Trang 24)
3.1 Ngôn ngữ mô hình hóa UML 3.1.1Khái ni ệm  - Kiểm chứng đặt tả uml cho tác tử phần mềm
3.1 Ngôn ngữ mô hình hóa UML 3.1.1Khái ni ệm (Trang 26)
Hình 3.1: Bi ểu đồ  tr ạ ng thái th ự c hi ện hóa đơn Một trạng thái có thể có ba phần sau: - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.1 Bi ểu đồ tr ạ ng thái th ự c hi ện hóa đơn Một trạng thái có thể có ba phần sau: (Trang 26)
Hình 3.2: Biểu đồ tuần tự rút tiền từ máy ATM - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.2 Biểu đồ tuần tự rút tiền từ máy ATM (Trang 27)
Hình 3.2: Bi ểu đồ  tu ầ n t ự  rút ti ề n t ừ  máy ATM - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.2 Bi ểu đồ tu ầ n t ự rút ti ề n t ừ máy ATM (Trang 27)
Hình 3.3: XML DOM Parser - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.3 XML DOM Parser (Trang 31)
Hình 3.3: XML DOM Parser - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.3 XML DOM Parser (Trang 31)
Hình 3.4: Sử dụng XMI trao đổi thông tin giữa các công cụ khác nhau. - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.4 Sử dụng XMI trao đổi thông tin giữa các công cụ khác nhau (Trang 33)
Hình 3.4: S ử  d ụ ng XMI  trao đổ i thông tin gi ữ a các công c ụ  khác nhau. - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.4 S ử d ụ ng XMI trao đổ i thông tin gi ữ a các công c ụ khác nhau (Trang 33)
Hình 3.5: Các khái niệm cơ bản của lý thuyết Gaia Trong pha phân tích:  - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.5 Các khái niệm cơ bản của lý thuyết Gaia Trong pha phân tích: (Trang 35)
Hình 3.5: Các khái ni ệm cơ bả n c ủ a lý thuy ế t Gaia   Trong pha phân tích: - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.5 Các khái ni ệm cơ bả n c ủ a lý thuy ế t Gaia Trong pha phân tích: (Trang 35)
- Package: Là tập các nhân tố mô hình hóa ở mức khái niệm Ví d ụsau được lấy trong [8]  - Kiểm chứng đặt tả uml cho tác tử phần mềm
ackage Là tập các nhân tố mô hình hóa ở mức khái niệm Ví d ụsau được lấy trong [8] (Trang 37)
Hình 3.6: Ví d ụ  package - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.6 Ví d ụ package (Trang 37)
Hình 3.8 Tương tác đa luồng trong AUML - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.8 Tương tác đa luồng trong AUML (Trang 38)
Hình 3.7: Một kịch bản giữa người mua hàn vàng ời bán hàng - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.7 Một kịch bản giữa người mua hàn vàng ời bán hàng (Trang 38)
Hình 3.7: Một kịch bản giữa người mua hàn và ngời bán hàng - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.7 Một kịch bản giữa người mua hàn và ngời bán hàng (Trang 38)
Hình 3.8 T ương tác đa luồ ng trong AUML - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.8 T ương tác đa luồ ng trong AUML (Trang 38)
Hình 3.9: Các hành vi bên trong của agent Initiator (a) và Participant(b) - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.9 Các hành vi bên trong của agent Initiator (a) và Participant(b) (Trang 39)
Hình 3.9: Các hành vi bên trong của agent Initiator (a) và Participant(b) - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.9 Các hành vi bên trong của agent Initiator (a) và Participant(b) (Trang 39)
oRMA (Remote Management Agent): Hoạt động như màn hình điều khi ển, phục vụ việc quản lý platform - Kiểm chứng đặt tả uml cho tác tử phần mềm
o RMA (Remote Management Agent): Hoạt động như màn hình điều khi ển, phục vụ việc quản lý platform (Trang 40)
Hình 3.10: C ấ u trúc phân tán c ủ a JADE - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.10 C ấ u trúc phân tán c ủ a JADE (Trang 40)
Hình 3.11: Hoạt động của agent - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.11 Hoạt động của agent (Trang 42)
Hình 3.11: Hoạt động của agent - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 3.11 Hoạt động của agent (Trang 42)
Hình 4.1: UMLTransition - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.1 UMLTransition (Trang 44)
Hình 4.1: UMLTransition  o  Tên c ủ a c ạ nh (Name): void init(). - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.1 UMLTransition o Tên c ủ a c ạ nh (Name): void init() (Trang 44)
Hình 4.2: Sơ đồ lớp biểu diễn biểu đồ trạng thái bằng các đối tượng trong Java Trong hai l ớp ListStates và ListTransitions, tôi xây dựng thêm mộ t s ố phương thức khác để lấy các thành phần dữ liệu của một State và  Transition  m ộ t  cách d ễdàng như: l - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.2 Sơ đồ lớp biểu diễn biểu đồ trạng thái bằng các đối tượng trong Java Trong hai l ớp ListStates và ListTransitions, tôi xây dựng thêm mộ t s ố phương thức khác để lấy các thành phần dữ liệu của một State và Transition m ộ t cách d ễdàng như: l (Trang 47)
Hình  4.2: Sơ đồ  l ớ p bi ể u di ễ n bi ểu đồ  tr ạ ng thái b ằng các đối tượ ng trong Java  Trong hai l ớ p  ListStates  và  ListTransitions , tôi xây d ự ng thêm m ộ t s ố phương thức khác để  l ấ y các thành ph ầ n d ữ  li ệ u c ủ a m ộ t  State  và   - Kiểm chứng đặt tả uml cho tác tử phần mềm
nh 4.2: Sơ đồ l ớ p bi ể u di ễ n bi ểu đồ tr ạ ng thái b ằng các đối tượ ng trong Java Trong hai l ớ p ListStates và ListTransitions , tôi xây d ự ng thêm m ộ t s ố phương thức khác để l ấ y các thành ph ầ n d ữ li ệ u c ủ a m ộ t State và (Trang 47)
Hình 4.3: StarUML mô tả các thành phần trong biểu đồ trình tự - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.3 StarUML mô tả các thành phần trong biểu đồ trình tự (Trang 51)
Hình 4.3: StarUML mô t ả  các thành ph ầ n trong bi ểu đồ  trình t ự - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.3 StarUML mô t ả các thành ph ầ n trong bi ểu đồ trình t ự (Trang 51)
Hình 4.4: Sơ đồ lớp biểu diễn các thành phần của biểu đồ trình tự UML - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.4 Sơ đồ lớp biểu diễn các thành phần của biểu đồ trình tự UML (Trang 52)
Hình 4.4: Sơ đồ lớp biểu diễn các thành phần của biểu đồ trình tự UML - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 4.4 Sơ đồ lớp biểu diễn các thành phần của biểu đồ trình tự UML (Trang 52)
Hình 6.1: Cài đặt PVG bằng công cụ Netbeans 6.5 - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.1 Cài đặt PVG bằng công cụ Netbeans 6.5 (Trang 63)
Hình 6.1: Cài đặt PVG bằng công cụ Netbeans 6.5 - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.1 Cài đặt PVG bằng công cụ Netbeans 6.5 (Trang 63)
các trình duyệt web. Hình vẽ dưới đây mô tả giao thức của các ứng dụng applet: - Kiểm chứng đặt tả uml cho tác tử phần mềm
c ác trình duyệt web. Hình vẽ dưới đây mô tả giao thức của các ứng dụng applet: (Trang 64)
Hình 6.2: Bi ểu đồ  tr ạ ng thái mô t ả  giao th ứ c applet - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.2 Bi ểu đồ tr ạ ng thái mô t ả giao th ứ c applet (Trang 64)
applet dưới dạng biểu đồ trạng thái UML (Hình 6.2) sau đó xuất rad ạng tài liệu XMI - Kiểm chứng đặt tả uml cho tác tử phần mềm
applet dưới dạng biểu đồ trạng thái UML (Hình 6.2) sau đó xuất rad ạng tài liệu XMI (Trang 65)
Hình 6.3: Applet – CorrectTest1 - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.3 Applet – CorrectTest1 (Trang 66)
Hình 6.7: Giao thức ghi nợ đơn giản - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.7 Giao thức ghi nợ đơn giản (Trang 68)
Hình 6.7: Giao th ứ c ghi n ợ đơn giả n - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.7 Giao th ứ c ghi n ợ đơn giả n (Trang 68)
Hình 6.9: Tương tác giữa hai tác tử Khach hang và Giohang - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.9 Tương tác giữa hai tác tử Khach hang và Giohang (Trang 74)
Hình 6.9: T ương tác giữ a hai tác t ử  Khach hang và Gio hang - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.9 T ương tác giữ a hai tác t ử Khach hang và Gio hang (Trang 74)
6.2.4.2 Kiểm chứng - Kiểm chứng đặt tả uml cho tác tử phần mềm
6.2.4.2 Kiểm chứng (Trang 75)
Hình 6.9: Biểu đồ trạng thái biểu diễn giao thức tương tác tác tử - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.9 Biểu đồ trạng thái biểu diễn giao thức tương tác tác tử (Trang 75)
Hình 6.9: Biểu đồ trạng thái biểu diễn giao thức tương tác tác tử - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.9 Biểu đồ trạng thái biểu diễn giao thức tương tác tác tử (Trang 75)
Hình 6.10: Agent – wrongTest1 - Kiểm chứng đặt tả uml cho tác tử phần mềm
Hình 6.10 Agent – wrongTest1 (Trang 77)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w