Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
894,62 KB
Nội dung
1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Duy Hải KIỂMCHỨNGMÔHÌNHASPECT-UMLBẰNGALLOY KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Duy Hải KIỂMCHỨNGMÔHÌNHASPECT-UMLBẰNGALLOY KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: Phạm Thị Kim Dung HÀ NỘI - 2010 LỜI CÁM ƠN Đầu tiên tôi xin gửi lời cảm ơn sâu sắc tới cô giáo Ths.Phạm Thị Kim Dung, 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ệ, Đai 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 2006-2010. 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á quý, phê bình của quý thầy cô, của 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 2010 Bùi Duy Hải Mục Lục 1 Chương 1 : MỞ ĐẦU 6 1.1 Đặt vấn đề 6 1.2 Cấu trúc khóa luận 6 2 Chương 2: Giới thiệu về môhình UML và lập trình hướng Aspect 7 2.1 Môhình UML (Unifined Model Language) 7 2.1.1 Lịch sử phát triển của UML 7 2.1.2 Ứng dụng của môhình UML 9 2.1.3 Các loại biểu đồ UML 12 2.2 Ngôn ngữ ràng buộc đối tượng (OCL) 13 2.3 Lập trình hướng khía cạnh (Aspect Oriented Programming) 15 2.3.1 Phương pháp lập trình hướng khía cạnh 15 2.3.2 Các khái niệm trong Aspect 21 3 Chương 3: KiểmchứngmôhìnhAspect-UML 23 3.1 Giới thiệu về Alloy 23 3.1.1 Alloy là gì? 23 3.1.2 Tính chất của ngôn ngữ alloy 23 3.1.3 Cấu trúc một chương trình Alloy 24 3.1.4 Khai báo trong alloy 24 3.2 Đặc tả môhìnhAspect-UML trong Alloy 28 3.2.1 Môhình Aspect UML 28 3.2.2 Môhình viễn thông 30 3.2.3 Đặc tả môhình Aspect UML bằngAlloy 32 3.2.4 Kiểmchứngmôhình Aspect UML sử dụng Alloy 37 4 Chương 4 : Kết luận 40 DANH MỤC HÌNH VẼ Hình 1: Hợp nhất các phương pháp thiết kế bằng UML Error! Bookmark not defined. Hình 2: Môhình UML không biểu diễn hết đặc tả Error! Bookmark not defined. Hình 3:OPP Error! Bookmark not defined. Hình 4: Sơ đồ lớp của bài toán vẽ hình 16 Hình 5: Dùng AOP giải quyết bài toán vẽ hình Error! Bookmark not defined. Hình 6: Môhình class cho hệ thống viễn thông Error! Bookmark not defined. DANH MỤC BẢNG BIỂU Bảng 1: Ánh xạ giữa các loại join point và pointcut tương ứng Error! Bookmark not defined. Bảng 2: Chuyển đổi thành phần cấu trúc môhình Aspect UML sang Alloy Error! Bookmark not defined. DANH MỤC NHỨNG TỪ VIẾT TẮT OOP Object Oriented Programming UML Unifined Model Language OCL Object Contraint Language AOP Aspect Oriented Programming 1 Chương 1 : MỞ ĐẦU 1.1 Đặt vấn đề Ngày nay, công nghệ thông tin ngày càng phát triển và được ứng dụng vào tất cả các lĩnh vực của cuộc 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. Công nghệ phần mềm là một phần không thể tách rời trong 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ộ 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.Quá trình phát triển phần mềm gồm nhiều giai đoạn: thu thập yêu cầu, phân tích, thiết kế,xây dựng, kiểmchứng , triển khai và bảo trì. Trong đó việc kiểmchứng phần mềm là hết sức quan trọng để đảm bảo chất lượng của một phần mềm. Kiểmchứngmôhình UML cũng đóng góp vào việc kiểmchứng phần mềm.Việc kiểmchứngmôhình UML + OCL đã được giải quyết [2]. Vấn đề đặt ra bây giờ là kiểmchứngmôhình Aspect-UML(là một môhình UML đơn giản được mở rộng với việc sử dụng Aspect). Nhờ Aspect và các ràng buộc của nó mà môhình Aspect UML được cung cấp thêm thông tin. Môhình Aspect UML có thể được kiểmchứng từ các xung đột tương tác Aspect, để làm tự động công việc kiểmchứngmôhình Aspect UML là chuyển đổi môhình Aspect UML sang ngôn ngữ đặc tả Alloy. Alloy cung cấp một ngôn ngữ đặc tả môhình đơn giản dựa trên logic cũng như công cụ mô phỏng[]. Trong phạm vi khóa luận này tôi sẽ chỉ ra quy tắc chuyển đổi một môhình Aspect UML sang ngôn ngữ Alloy. 1.2 Cấu trúc khóa luận Chương 1: Phần mở đầu. Chương 2: Giới thiệu về môhình UML và lập trình hướng Aspect. Chương 3: Kiểmchứngmôhình Aspect- UML bằngAlloy Chương 4: Kết luận và hướng nghiên cứu trong tương lai. 2 Chương 2: Giới thiệu về môhình UML và lập trình hướng Aspect 2.1 Môhình UML (Unifined Model Language) 2.1.1 Lịch sử phát triển của UML Theo [1] những năm đầu của thập kỷ 90 có rất nhiều phương pháp phân tích, thiết kế hệ thống hướng đối tượng và cùng với chúng là các ký hiệu riêng cho từng phương pháp. Số lượng các phương pháp trong khoảng từ 10 đã lên đến gần 50 trong những năm từ 1989 đến 1994. Ba phương pháp phổ biến nhất là OMT (Object Modeling Technique) [James Rumbaugh], Booch91 [Grady Booch] và OOSE (Object-Oriented Software Enginering) [Ivar Jacobson]. Mỗi phương pháp đều có những điểm mạnh và yếu. Như OMT mạnh trong phân tích và yếu ở khâu thiết kế, Booch91 thì mạnh ở thiết kế và yếu ở phân tích. OOSE mạnh ở phân tích các ứng xử, đáp ứng của hệ thống mà yếu trong các khâu khác. Do các phương pháp chưa hoàn thiện nên người dùng rất phân vân trong việc chọn ra một phương pháp phù hợp nhất để giải quyết bài toán của họ. Hơn nữa, việc các ký hiệu khác nhau của các phương pháp đã gây ra những sự mập mờ, nhầm lẫn khi mà một ký hiệu có thể mang những ý nghĩa khác nhau trong mỗi phương pháp. Ví dụ như một hình tròn được tô đen biểu hiện một multiplicity trong OMT lại là một aggregation trong Booch). Thời kỳ này còn được biết đến với tên gọi là cuộc chiến giữa các phương pháp. Khoảng đầu năm 94, Booch đã cải tiến phương pháp của mình trong đó có ứng dụng những ưu điểm của các phương pháp của Rumbaugh và Jacobson. Tương tự Rumbaugh cũng cho đăng một loạt các bài báo được biết đến với tên gọi phương pháp OMT-2 cũng sử dụng nhiều ưu điểm của phương pháp của Booch. Các phương pháp đã bắt đầu hợp nhất, nhưng các kí hiệu sử dụng ở các phương pháp vẫn còn nhiều điểm khác biệt. Cuộc chiến này chỉ kết thúc khi có sự ra đời của UML – một ngôn ngữ môhình hóa hợp nhất. Tại sao lại là hợp nhất? Đó là do có sự hợp nhất các cách kí hiệu của Booch, OMT và Objectory cũng như các ý tưởng tốt nhất của một số phương pháp khác như hình vẽ sau: Hình 1:Hợp nhất các phương pháp thiết kế bằng UML Bằng cách hợp nhất các kí hiệu sử dụng trong khi phân tích, thiết kế của các phương pháp đó, UML cung cấp một nền tảng chuẩn trong việc phân tích thiết kế. Có nghĩa là các nhà phát triển vẫn có thể tiến hành theo phương pháp mà họ đang sử dụng hoặc là có thể tiến hành theo một phương pháp tổng hợp hơn( do thêm vào những bước ưu điểm của từng phương pháp). Nhưng điều quan trọng là các ký hiệu giờ đây đã thống nhất và mỗi ký hiệu chuẩn của tổ chức OMG (Object Management Group) vào tháng 7-1997. 2.1.2 Ứng dụng của môhình UML UML là một ngôn ngữ dùng để: Trực quan hóa Cụ thể hóa Sinh mã ở dạng nguyên mẫu Lập và cung cấp tài liệu UML là một ngôn ngữ bao gồm một bảng từ vựng và các quy tắc để kết hợp các từ vựng đó phục vụ cho mục đích giao tiếp. Một ngôn ngữ dùng cho việc lập môhình là ngôn ngữ mà bảng từ vựng( các ký hiệu) và các quy tắc của nó tập trung vào việc thể hiện về mặt khái niệm cũng như vật lý của một hệ thống. Môhình hóa mang lại sự hiểu biết về một hệ thống. Một môhình không thể giúp chúng ta hiểu rõ một hệ thống, thường là phải xây dựng một số môhình xét từ những góc độ khác nhau. Các môhình này có quan hệ với nhau. UML sẽ cho ta biết cách tạo ra và đọc hiểu được một môhình đươc cấu trúc tốt, nhưng nó không cho ta biết những môhình nào nên tạo ra và khi nào tạo ra chúng. Đó là nhiệm vụ của quy trình phát triển phần mềm. 2.1.2.1 UML là ngôn ngữ dùng để trực quan hóa Đối với nhiều lập trình viên, không có khoảng cách nào giữa ý tưởng để giải quyết một vấn đề và việc thể hiện điều đó thông qua các đoạn mã. Họ nghĩ ra và họ viết mã. Trên thực tế, điều này gặp một số vấn đề. Thứ nhất, việc trao đổi về các ý tưởng giữa những người lập trình sẽ gặp khó khăn, trừ khi tất cả đều nói cùng một ngôn ngữ. Thậm chí ngay cả khi không gặp trở ngại về ngôn ngữ thì đối với từng công ty, từng nhóm cũng có những “ngôn ngữ” riêng của họ. Điều này gây trở ngại cho một người mới vào để có thể hiểu được những việc đang được tiến hành. Hơn nữa, trong lĩnh vực phần mềm, nhiều khi khó có thể hiểu được nếu chỉ xem xét các đoạn mã lệnh. Ví dụ như sự phân cấp của các lớp, ta có thể phải duyệt rất nhiều đoạn lệnh để hiểu được sự phân cấp của các lớp. Và nếu như người lập trình không mô tả các ý tưởng mà anh ta đã xây dựng thành mã lệnh thì nhiều khi cách tốt nhất là xây dựng lại trong trường hợp một người khác đảm nhận tiếp nhiệm vụ khi anh ta rời khỏi nhóm Đối với nhiều lập trình viên, không có khoảng cách nào giữa ý tưởng để giải quyết một vấn đề và việc thể hiện điều đó thông qua các đoạn mã. Họ nghĩ ra và họ viết mã. Trên thực tế, điều này gặp một số vấn đề. Thứ nhất, việc trao đổi về các ý tưởng giữa những người lập trình sẽ gặp khó khăn, trừ khi tất cả đều nói cùng một ngôn ngữ. Thậm chí ngay cả khi không gặp trở ngại về ngôn ngữ thì đối với từng công ty, từng nhóm cũng có những “ngôn ngữ” riêng của họ. Điều này gây trở ngại cho một người mới vào để có thể hiểu được những việc đang được tiến hành. Hơn nữa, trong lĩnh vực phần mềm, nhiều khi khó có thể hiểu được nếu chỉ xem xét các đoạn mã lệnh. Ví dụ như sự phân cấp của các lớp, ta có thể phải duyệt rất nhiều đoạn lệnh để hiểu được sự phân cấp của các lớp. Và nếu như người lập trình không mô tả các ý tưởng mà anh ta đã xây dựng thành mã lệnh thì nhiều khi cách tốt nhất là xây dựng lại trong trường hợp một người khác đảm nhận tiếp nhiệm vụ khi anh ta rời khỏi nhóm. Xây dựng môhình sử dụng ngôn ngữ UML đã giải quyết được các khó khăn trên.Khi trở thành một chuẩn trong việc lập mô hình, mỗi kí hiệu mang một ý nghĩa rõ rang và duy nhất, một nhà phát triển có thể đọc được môhình xây dựng bằng UML do một người khác viết.Những cấu trúc mà việc nắm bắt thông qua đọc mã lệnh là khó khăn nay đã được thực hiện trực quan.Một môhình rõ ràng, sáng sủa làm tăng khả năng giao tiếp, trao đổi giữa các nhà phát triển. 2.1.2.2 UML là ngôn ngữ để chi tiết hóa Có nghĩa là xây dựng các môhình một các tỉ mỉ, rõ ràng, đầy đủ ở các mức độ chi tiết khác nhau. Đặc biệt là UML thực hiện việc chi tiết hoá tất cả các quyết định quan trọng trong phân tích, thiết kế và thực thi một hệ thống phần mềm. [...]... về đối tượng ngôn ngữ Alloy xác định mục tiêu tạo nên những môhình vi mô để sau này nó tự động kiểm tra cho sự đứng đắn của các môhình ấy Mặc dù Alloy được thiết kế với phân tích tự động trong suy nghĩ, khác với nhiều ngôn ngữ đặc tả thiết kế cho mô hìnhkiểm tra ở chỗ nó cho phép định nghĩa các môhình vô hạn Các đặc tả Alloy có thể bị kiểm tra bằng cách sử dụng Alloy Analyzer Alloy Analyzer được... thực hiện kiểm tra phạm vi hữu hạn, ngay cả trên các môhình vô hạn 3.1.2 Tính chất của ngôn ngữ alloy Đối các môhình hữu hạn alloy có thể hữu hạn phạm vi kiểm tra: phân tích được đầy đủ các đối tượng đặc tả Alloy cho phép kiểm tra vô hạn các môhình vì kiểm tra hữu hạn không nhận được phản ánh đúng từ môhình cần đặc tả Alloy có khả năng đặt quan hệ logic giữa các đối tượng trong môhình Tự... quyết ngữ nghĩa gây ra xung đột giữa các aspect Môhình Aspect-UML có thể được kiểm tra từ các xung đột tương tác aspect Một cách để tự động quá trình kiểmchứng là chuyển đổi môhình Aspect- UML sang ngôn ngữ đặc tả AlloyAlloy cung cấp một ngôn ngữ đặc tả môhình đơn giản dựa trên logic đầu tiên như phân tích môhình và công cụ mô phỏng[] Một môhìnhAlloy được soạn thảo từ một tập hợp các signature... quan hệ giữa chúngMôhình này có thể được thêm các rang buộc bởi predicates và assertions Một môhình là trừu tượng cái mà thực sự xác định một tập hợp có thể vô hạn của một môhình hữu hạn Alloy thực thi đặc tả môhìnhbằng cách tìm kiếmmôhình cá biệt đáp ứng một số đặc điểm của đặc tả Một môhình có thể được kiểm tra là có giá trị hay là thỏa mãn bên trong các ràng buộc một môhình cá biệt Thật... đá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 3 Chương 3: Kiểm chứngmôhình Aspect-UML 3.1 Giới thiệu về Alloy 3.1.1 Alloy[ 4] là gì? Trong công nghệ phần mềm, Alloy là một ngôn ngữ đặc tả môhình hóa cho những biểu thị sự ràng buộc của những cấu trúc phực tạp trong công nghệ phần mềm Alloy là một công cụ môhình hóa đơn giản dựa... những lí luận - Có thể sử dụng để đại diện cho một quá trình thực thi - Chỉ được dùng khi được gọi (không như fact) 3.2 Đặc tả mô hình Aspect-UML trong Alloy 3.2.1 Môhình Aspect UML Vì việc đặc tả môhình UML+ OCL đã được nghiên cứu và hoàn thành do vậy chúng ta chỉ xem xét đến môhình Aspect- UML Phương pháp đặc tả trong bài luận này sẽ xem xét cách phân tích các tương tác aspect trong môhình A-O... biệt Thật vậy, các phân tích Alloy giới hạn việc tìm kiếm các môhình cá biệt cái mà kích cỡ(về các đối tượng) là thấp hơn cho một số ràng buộc cố đinh bời người sử dụng Alloy khẳng định hướng tiếp cận đặc tả của nó bằng việc đề xuất giả thuyết phạm vi nhỏ mà theo đó các counterexample phế bỏ một môhình có khuynh hướng xảy ra trong các ví dụ môhình nhỏ Để kiểm chứngmôhình Aspect UML, trước hết chúng... để thực hiện mỗi cái trong chúng 3.2.3 Đặc tả môhình Aspect UML bằngAlloy Phần này giải thích cách mà môhình Aspect UML có thể được chuyển đổi sang đặc tả Alloy để chúng sau này có thể được phân tích bằngAlloy Analyzed Bảng 2: Chuyển đổi thành phần cấu trúc môhình Aspect UML sang Alloy Các class và aspect được chuyển thành các khai báo signature trong Alloy Các thuộc tính của một lớp hoặc của 1... : đ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 sau : - Lớp Shape: là một lớp Abstract chứa phương thức moveBy(int,int) di chuyển hình - Lớp Display: hiển thị hình ảnh - Lớp Point: mô tả 1 điểm hình học chứa hai thuộc... bận bằng cách ngắt cuộc gọi Nó can thiệp vào lúc bắt dầu kết nối bằng cách kiểm tra nếu đích là bận , trong trường hợp này cuộc gọi bị gián đoạn Hình 6: Môhình class cho hệ thống viễn thông Hình trên thể hiện bằng cách nào viêc tính giờ, thanh toán và các yêu cầu ngắt cuộc gọi được tích hợp vào trong biểu đồ lớp UML, sử dụng Aspect UML thích hợp Những yêu cầu crosscutting được bắt tương ứng bằng . tả mô hình Aspect-UML trong Alloy 28 3.2.1 Mô hình Aspect UML 28 3.2.2 Mô hình viễn thông 30 3.2.3 Đặc tả mô hình Aspect UML bằng Alloy 32 3.2.4 Kiểm chứng mô hình Aspect UML sử dụng Alloy. góp vào việc kiểm chứng phần mềm.Việc kiểm chứng mô hình UML + OCL đã được giải quyết [2]. Vấn đề đặt ra bây giờ là kiểm chứng mô hình Aspect-UML( là một mô hình UML đơn giản được mở rộng với việc. dựng, kiểm chứng , triển khai và bảo trì. Trong đó việc kiểm chứng phần mềm là hết sức quan trọng để đảm bảo chất lượng của một phần mềm. Kiểm chứng mô hình UML cũng đóng góp vào việc kiểm chứng