Một cách đặc tả thiết kế hướng đối tượng dựa trên mô hình RCOS

Các đặc tả hệ thống đối tượng trong

nghiên cứu này được phát triển dựa theo mô

hình rCOS. Việc xử lý kết hợp kiểu động và cơ

chế kiểm tra trạng thái với ngữ nghĩa giống như

hướng đặc tả truyền thống. Các cơ sở tính toán

cho hệ thống hướng đối tượng ở đây cũng có thể

được sử dụng để hình thức hoá liên kết các mô

hình ca sửdụng (use case) và mô hình lớp trong

UML. Nó cũng có thể sử dụng làm cơ sở cho

việc làm mịn tính toán trong tiến trình phát triển

của chương trình hướng đối tượng. Các đặc

tả trong ngôn ngữnày có thể dễ dàng sử

dụng đểviết đọc hiểu tương tự nhưng ôn

ngữ Java hoặc C++, và ý nghĩa của chúng là

hoàn toàn dựa trên cách tiếp cận trạng thái

đã được xác định đúng.

pdf12 trang | Chia sẻ: thienmai908 | Lượt xem: 987 | Lượt tải: 0download
Nội dung tài liệu Một cách đặc tả thiết kế hướng đối tượng dựa trên mô hình RCOS, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1 Input: Hệ thống S; N,M ∈ cname; attr(N)∩attr(M)=∅, attr(N) ∩ Attr(super(M)) = ∅, super(N)= ∅. Output: Hệ thống mới S’ = (α’, P), super(N) = M. Method 1. Kiểm tra các điều kiện Input, nếu thoả thì thực hiện các bước sau: 2. Nếu (attr(N) ∩ attr(M) ∅) và (attr(N) ∩ Attr(super(M)) = ∅) 3. Write(“N.txt”, N.super, M); End Độ phức tạp của thuật toán CreateInheritance: Độ phức tạp của thuật toán là O(n), trong đó n là số phần tử các lớp của tập cname. Thêm một lớp mới N vào phần khai báo của một hệ thống và cho nó kế thừa một lớp M đã có, thì hệ thống sẽ được làm mịn theo luật: cdecls ⊑ N[M, pri, pro, pub, op]; cdecls. Ta có thể xây dựng thuật toán này như sau: Algorithm Inheritance Format: Inheri(N, M) Input: Hệ thống S; M ∈ cname, xâu N. Output: Hệ thống mới S’ = (α’, P), superclass(N)=M. Method 1. Kiểm tra các điều kiện Input, nếu thoả mãn thì thực hiện các bước sau: 2. AddNewClass(S, N); 3. Write(“N.txt”, N.super, M); End Độ phức tạp của thuật toán Inheritance: Giả sử cname có n phần tử, khi đó độ phức tạp của bước 1 và 2 là O(n) bước 3 là O(1). Do vậy độ phức tạp của thuật toán này là O(n). Ta có thể viết thủ tục Update tính các thành phần được kế thừa, thêm thuộc tính mới... cho lớp N như sau: Update(N) { 1. Tính Attr(N); // các thuộc tính được kế thừa 2. Tính Meth(N); // các p/thức được kế thừa 3. AddAttr(S, N, st); // thêm thuộc tính mới 4. MovePro(S, N, attrName); // thay đổi visibility // cho thuộc tính của lớp nếu cần 5. AddMethod(S, N, m); //thêm p.thức nếu cần } 3.2.2.8. Thuật toán thêm một phương thức vào một lớp Thêm một phương thức vào một lớp để làm mịn hệ thống có thể được thực hiện theo luật làm mịn sau: N[op]; cdecls ⊑ N[op ∪ m(paras) {c}]; cdecls. Thêm một phương thức vào một lớp trong hệ thống S sẽ làm thành phần meth và locvar của α thay đổi và sẽ được một hệ thống mới S’ = (α’, P). Một phương thức có tên là m, các tham số hình thức của nó là paras= và phần thân là thiết kế D chứa các lệnh c. Ta có thể biểu diễn phương thức m là một xâu như sau: op(x: Tx, y: Ty, z: Tz) { c } . Thuật toán này có thể được biểu diễn như dưới đây: T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008 12 Algorithm AddNameMethod Format: AddMethod(S, C, m) Input: Hệ thống S, C ∈ cname, m: String. Output: Hệ thống mới S’ = (α’, P) và m meth.∈ Method 1. Nếu C ∉ cname thì sang bước 3 2. Nếu C ∈ cname thì: 2.1. Nếu m = ”” thì chuyển sang bước 3. 2.2. Nếu m “” thì: 2.2.1. Nếu m ∈ meth(C): sang bước 3; 2.2.2. Nếu m ∉ meth(C): Write(C.txt, meth, m); 3. Dừng. End Độ phức tạp của thuật toán AddNameMethod: Giả sử tệp cname.txt có n phần tử, tập meth(C) có k phần tử, phép tìm kiếm trong bước 1 sẽ là O(n) và phép tìm kiếm trong bước 2.2.1 là O(k). Như vậy, độ phức tạp của thuật toán này sẽ là O(max(n, k)). 3.2.2.9. Thuật toán chuyển phương thức từ một lớp sang lớp khác Ta có thể chuyển một phương thức từ một lớp tới lớp khác dựa theo luật chuyển phương thức sau: N[op];M[{N}, op1] cdecls ⊑ N[op];M[{N}, op1 ∪ m(paras) {c}]; cdecls. Khi các lớp có nhu cầu sử dụng phương thức của một lớp, hoặc khi cần phải thực hiện tính đa hình của một số phương thức trong các lớp, ta có thể chuyển phương thức từ một lớp sang lớp khác. Khi đó các thành phần meth(lớp_con), meth(lớp_cha) của α sẽ thay đổi. Ta có thể viết thuật toán này như sau: Algorithm MoveMethod Format: MoveMethod(S, N, M, m) Input: Hệ thống S; N, M ∈ cname; super(N) = M, m ∈ meth(M). Output: Hệ thống mới S’ = (α’, P), m ∈ meth(M). Method 1. Kiểm tra các điều kiện Input, nếu thoả thì thực hiện các bước sau: 2. Delete(M.txt, meth, “m(paras) { c }”); 3. Write(N.txt, meth, “m(paras) { c }”); End Độ phức tạp của thuật toán: Độ phức tạp của thuật toán này chỉ cần xác định thông qua các bước 1 và 2. Giả sử tập cname có n phần tử và tập meth(M) có k phần tử, khi đó bước 1 cần nhiều nhất n lần kiểm tra xem N, M có thuộc cname hay không, bước 2 cần nhiều nhất k lần tìm kiếm phương thức m trong meth(M) để loại bỏ. Như vậy độ phức tạp của thuật toán này là O(max(n, k)). Ta có thể kết hợp các thuật toán trên để thực hiện các yêu cầu tinh chế và làm mịn theo các yêu cầu đặt ra cho các hệ thống đối tượng. 4. Kết luận Trong bài này chúng tôi đã nghiên cứu ngữ nghĩa của các quan hệ đặc tả cho hệ thống hướng đối tượng. Các đặc tả hệ thống đối tượng trong nghiên cứu này được phát triển dựa theo mô hình rCOS. Việc xử lý kết hợp kiểu động và cơ chế kiểm tra trạng thái với ngữ nghĩa giống như hướng đặc tả truyền thống. Các cơ sở tính toán cho hệ thống hướng đối tượng ở đây cũng có thể được sử dụng để hình thức hoá liên kết các mô hình ca sử dụng (use case) và mô hình lớp trong UML. Nó cũng có thể sử dụng làm cơ sở cho việc làm mịn tính toán trong tiến trình phát triển T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008 13 của chương trình hướng đối tượng. Các đặc tả trong ngôn ngữ này có thể dễ dàng sử dụng để viết đọc hiểu tương tự như ngôn ngữ Java hoặc C++, và ý nghĩa của chúng là hoàn toàn dựa trên cách tiếp cận trạng thái đã được xác định đúng. Chúng tôi đã đề xuất cách đặc tả các lớp bằng một tệp văn bản và đề xuất các thuật toán làm mịn các lớp tuân theo các luật làm mịn của rCOS, đồng thời đã chỉ ra độ phức tạp cho các thuật toán này. Những kết quả của các đặc tả này có thể làm cơ sở chỉ dẫn cho việc xây dựng công cụ phần mềm nhằm hỗ trợ phát triển thiết kế các hệ thống hướng đối tượng. Chúng tôi đã cài đặt các thuật toán trình bày trên đây bằng ngôn ngữ C++ cho nhiều cách đặc tả lớp khác nhau. Việc thực hiện các chương trình kiểm thử cho kết quả đúng như tính toán. Chúng tôi cũng đã tiến hành kiểm chứng các thuật toán đó bằng phần mềm công cụ Rational Rose làm đối chứng so sánh và đã cho kết quả chính xác. Các thuật toán này đã được chúng tôi áp dụng vào việc thiết kế một số hệ thống ứng dụng cụ thể [10, 12, 13], bước đầu đáp ứng tốt các yêu cầu xây dựng các hệ thống đối tượng  Tóm tắt Nhiều kết quả nghiên cứu hình thức trước đây đã chỉ ra sự cần thiết của phương pháp hướng đối tượng và phương pháp hình thức trong việc xây dựng và phát triển các hệ thống phần mềm. He Jifeng và cộng sự đã đề xuất mô hình tính toán rCOS cho hệ thống thành phần và hệ thống hướng đối tượng. Dựa trên mô hình này, chúng tôi đã phát triển các phương pháp mới đặc tả các lớp và quan hệ giữa chúng trong hệ thống, làm cơ sở xây dựng các công cụ hỗ trợ thiết kế hệ thống hướng đối tượng. Bài báo này trình bày một phương pháp đặc tả thiết kế hướng đối tượng và các thuật toán làm mịn liên quan bằng tệp văn bản. Summary The Specification Method for Object-Oriented Design Based on rCOS The results research before of formally method shows needed of object oriented and formally methods in development software systems. He Jifeng and fellow-worker proposed rCOS model for component and object systems. Based on this model, we are development the method specification for the class and relation of us in the system, to make base building tools supports design object oriented systems. This paper presents the specification method design of object oriented and algorithms concerned by text file. Tài liệu tham khảo [1].Booch, G., Rumbaugh, J. and Jacobson, I (1999)., The Unified Modeling Language User Guide, Addison-Wesley . [2] C.A.R. Hoare and He Jifeng (1998), Unifying Theories of Programming, Prentice Hall, [3] He Jifeng, Li Xiaohan and Zhiming Liu (2005), rCOS: Refinement Calculus for Object Systems, Technical report UNU/IIST No.322, UNU/IIST: International Institute for software technology, the United Nations University, Macau, May 2005. [4] Ivar Jacopson, Gray Booch and James Rumbaugh (2000), The Unified Software Development Process, Addision-Wesley. [5] J. He, Z. Liu, X. Li and S.Qin (2004), A relational model for object-oriented designs. In Pro APLA’2004 LNCS 3302, Taiwan, 2004, Springer. T¹p chÝ Khoa häc & C«ng nghÖ - Sè 1(45) Tập 2/N¨m 2008 14 [6]. Joshua Kerievsky 2004(), Refactoring to patterns, Addison-Wesley. [7]. Martin Fowler (2000.), Refactoring, improving the design of existing code, Addison-Wesley, [8]. R.J.R. Back, L. Petre and I.P. Paltor (1999), Formalizing UML use cases in the refinement calculus. In Proc. UML’99. Springer-Verlag. [9]. Quan Long, He Jifeng, Zhiming Liu (2005), Refactoring and pattern-directed refactoring: A formal perspective, Technical report UNU/IIST No.318, UNU/IIST: International Institute for software technology, the United Nations University, Macau, January 2005. [10]. Nguyễn Mạnh Đức (2005), “Thiết kế và cài đặt hệ thống phần mềm xử lý số liệu thống kê và thực nghiệm”, Hội thảo Khoa học toàn quốc: Phát triển công cụ tin học trợ giúp cho giảng dạy, nghiên cứu và ứng dụng toán học, Hà Nội 4/2005, tr. 117-124. [11]. Nguyễn Mạnh Đức, Nguyễn Văn Vỵ, Đặng Văn Đức (2005), “Mô hình đại số quan hệ của hệ thống hướng đối tượng”, Tạp chí Tin học và điều khiển học, Viện Khoa học và Công nghệ Việt Nam, 21 (3) tr.261-270. [12]. Nguyễn Mạnh Đức, Đặng Văn Đức (2006), “Về một cách tinh chế mô hình lớp UML”, Tạp chí Tin học và điều khiển học, Viện Khoa học và Công nghệ Việt Nam, 22 (1) tr. 63-74. [13]. Nguyễn Mạnh Đức, Đặng Văn Đức (2006), “Ứng dụng phương pháp hướng đối tượng và ngôn ngữ UML mô hình hoá hệ thống E-Learning”, Tạp chí Khoa học và Công nghệ, Viện Khoa học và Công nghệ Việt Nam, 44 (3) tr. 33-42.

Các file đính kèm theo tài liệu này:

  • pdfudafyuawkhoahockithuatmaytinh (62).pdf