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.
12 trang |
Chia sẻ: thienmai908 | Lượt xem: 1083 | Lượt tải: 0
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:
- udafyuawkhoahockithuatmaytinh (62).pdf