Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
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
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Vũ Sỹ Vương KIỂM CHỨNGĐẶTTẢ UML CHOTÁCTỬPHẦNMỀM KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ phầnmềm HÀ NỘI - 2009 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Vũ Sỹ Vương KIỂM CHỨNGĐẶTTẢ UML CHOTÁCTỬPHẦNMỀM KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành : Công nghệ phầnmềm Cán bộ hướng dẫn: Tiến sỹ Trương Anh Hoàng HÀ NỘI - 2009 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 Tóm tắt nội dung Trong quy trình phát triển phần mềm, kiểm chứngphầnmề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ứngphần mềm, giúp nâng cao chức năng dò tìm, s ửa lỗi phầnmề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ầnmề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áctử trong hệ đa táctử đượ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áctử trong hệ đa táctử đượ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áctử trong thời gian chạy. 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ảUMLchotáctử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 AspectJ 12 2.2.1 Join point 12 2.2.2 Pointcut 12 2.2.3 Advice 13 2.2.4 Aspect 14 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 3.2.2 XML DOM 22 3.3 XMI (XML Metadata Interchange) 24 3.4 AUML (Agent UML) 25 3.4.1 Táctửphầnmềm là gì? 25 3.4.2 Phầnmề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 5.5.1 Giao thức (AB) n là gì? 52 5.5.2 Thuật toán kiểm chứng giao thức (AB) n 53 5.5.3 Sinh mã aspect kiểm chứng giao thức (AB) n 54 5.6 Kết luận 54 Chương 6. Thực nghiệm 55 6.1 Xây dựng công cụ PVG 55 6.2 Kiểm chứng một số giao thức thực tế 56 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 60 6.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áctáctử 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 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 1 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ầnmề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ầnmề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ầnmềm ngày càng phát triển không ngừng. Phầnmề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ầnmề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ầnmề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ầnmề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ầnmề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ầnmềm cần phải được kiểm chứng (Verification) và thẩm định (Valication) [13]. Kiểm chứngphầnmềm là kiểm tra xem phầnmề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ầnmềm là giai đoạn có sự hỗ trợ của khách hàng nhằm kiểm tra xem phầnmề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ứngphầnmềm là làm giảm thiểu lỗi phầnmề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ầnmềm và trong ngành công nghệ phầnmề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ầnmề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 2 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áctử ngay trong thời gian chạy, đánh giá xem trong thời gian chạy đối tượng hay táctửphầnmề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ứngphầnmề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ứngphầnmề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áctử trong hệ đa táctử (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áctử đượ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áctửphầnmề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ứngtừ đặ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ảUMLchotáctử [...]... 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áctửphần mềm, phầnmềm hướng agent và AUML – mở rộng từUML để mô tả các hệ thống dựa táctử Giới thiệu JADE – một framework hỗ trợ xây dựng hệ đa táctử 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. .. 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áctửphầnmềm (agent) và phầnmềm hướng táctử để ta có một cái nhìn tổng quan nhất về một phầnmềm hướng táctử 3.4.1 Táctửphầnmềm là gì? 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... 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ả UMLchotáctửphầnmề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ả. .. 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áctáctử (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áctáctử (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... tương tác, biểu đồ trạng thái, biểu đồ hoạt động) để mô tả hệ thống phầnmềm Quá trình xây dựng các hệ thống dựa táctử cũng đòi hỏi tất cả các quá trình của công nghệ phầnmề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ử, .. .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áctử trong hệ đa táctử đượ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... 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ầnmềm (kiểm tra thư, Antivirus, …) Ở đây ta đi vào một vấn đề nhỏ hơn, đó là táctửphầnmềm Vậy táctửphầnmềm là gì? 25 Táctửphầnmề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... các hệ thống phầnmềmtừ 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ầntử mô hình Tập các phầntử 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... one graph Có 6 thành phần XML trong tài liệu này Đầu tiên là chỉ thị xử lý, Phầntử edge chứa thuộc tính có tên là type và giá trị là directed Phầntử edge chứa hai phầntử con là from và to chúng có hai thuộc tính là id Phầntử comment chứa nội dung là một đoạn văn bản (text) 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... Ngôn ngữ mô hình hóa UML 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ầnmề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ư . nghiên cứu kiểm chứng đặc tả UML cho tác tử 3 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. 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ữ. HỌC CÔNG NGHỆ Vũ Sỹ Vương KIỂM CHỨNG ĐẶT TẢ UML CHO TÁC TỬ PHẦN MỀM KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ phần mềm HÀ NỘI - 2009 ĐẠI