ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
#"
Nguyễn Hoàng HàPHƯƠNG PHÁP HÌNH THỨC TRONG VIỆC
PHÁT TRIỂN HỆ THỐNG HƯỚNG ĐỐI TƯỢNG
Ngành: Công Nghệ Thông Tin
Chuyên ngành: Công Nghệ Phần Mềm
Mã số: 68 40 10
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS Nguyễn Văn Vỵ
HÀ NỘI – 2007Mục lục
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 1
DANH MỤC CÁC HÌNH VẼ 2
DANH MỤC CÁC BẢNG 4
MỞ ĐẦU 5 U
Chương I: GIỚI THIỆU CHUNG 7
I.1. Phương pháp phát triển phần mềm hướng đối tượng 7
III.3. Thiết kế hệ thống 48
III.3.1. Biểu đồ lớp thiết kế 48
III.3.2. Biểu diễn thông tin đặc tả hệ thống 50
III.4. Cài đặt thử nghiệm 52
III.4.1. Môi trường và công cụ 52
III.4.2. Công cụ FM Tool 53
III.5. Tiến hành một case study với FM Tool 56
III.5.1. Khởi tạo hệ thống 56
III.5.2. Bổ sung các thuộc tính 57 III.5.3. Bổ sung các phương thức 58
III.5.4. Tổng quát hóa 59
III.5.5. Chuyển đặc tả sang công cụ CASE khác 60
III.6. Hai hướng sử dụng FM Tool 61
III.7. Kết luận chương 63
KẾT LUẬN 64
DANH MỤC CÁC CÔNG TRÌNH CỦA TÁC GIẢ 66
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 71
-1-
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Ký hiệu Tiếng Anh Ý nghĩa
CASE Computer Aided Software
Engineering
Kỹ nghệ phần mềm được trợ
giúp bởi máy tính.
DTD Document type definition Định nghĩa dạng tài liệu: đặc tả
về thông tin định dạng tài liệu
28
Hình 7. Ý tưởng cho phương pháp giải quyết vấn đề 30
Hình 8. Quan hệ phụ thuộc A phụ thuộc B qua một phương thức 38
Hình 9. Gói mô tả các khái niệm thuộc biểu đồ lớp UML theo OMG 44
Hình 10. Biểu đồ khái niệm miền lĩnh vực 45
Hình 11. Biểu đồ ca sử dụng mức gộp 45
Hình 12. Biểu đồ ca sử dụng quản lý các đặc tả hệ thống 46
Hình 13. Biểu đồ ca sử dụng phát triển và làm mịn đặc tả hệ thống 47
Hình 14. Biểu đồ lớp khái niệm tổng quát 48
Hình 15. Biểu đồ lớp thiết kế của hệ thống 49
Hình 16. So sách cách định nghĩa XML và UML của OMG 50
Hình 17. Giao diện công cụ FM Tool 53
-3-
Hình 18. Sửa đồi đối tượng bằng cách nhấn phải chuột và chọn Properties 55
Hình 19. Form sửa đổi các thuộc tính của một lớp 55
Hình 20. Khởi tạo hệ thống cho đặc tả APP
0
57
Hình 21. Mô hình UML tương ứng với APP
1
58
Hình 22. Mô hình UML tương ứng với APP
2
59
Hình 23. Mô hình UML tương ứng với APP3 60
Hình 24. Đặc tả được chuyển sang công cụ Power Designer 61
Hình 25. Biểu đồ hoạt động hai phương án sinh mã nguồn sau khi có đặc tả hệ
thống trong FM Tool 62
triển hệ thống hướng đối tượng” này, tôi hy vọng sẽ đóng những nghiên cứu của mình
vào xu hướng trên. Bố cục của luận văn gồm phần mở đầu, phần kết luận và ba
chương.
-6-
Chương I trình bày những khái niệm cơ bản, những vấn đề liên quan đến phát
triển phân mềm hướng đối tượng và phương pháp hình thức. Chương này cũng đề ra
các vấn đề và nội dung nghiên cứu của luận văn này.
Trong chương II, một tiến trình phát triển phần mềm tập trung vào khung nhìn
biểu đồ lớp được đề xuất trong đó đặc tả hệ thống, các phép biến đổi, luật làm mịn
được thể hiện và chứng minh bằng rCOS.
Cuối cùng, chương III trình bày những nghiên cứu của tôi trong việc xây dựng
một phần mềm công cụ trợ giúp cho quá trình phát triển phần mềm hướng đối tượng,
cơ sở lý thuyết của chương này được vận dụng từ các nghiên cứu trong chương II.
Phần kết luận nêu tóm tắt các vấn đề đã được trình bày trong luận văn và những
vấn đề tồn tại cần tiếp tục nghiên cứu.
Ngoài ra trong phần phụ lục có trình bày nội dung một file XML theo chuẩn
XMI được xuất ra bởi công cụ xây dựng trong chương III. Bên cạnh đó, luận văn có
các phần như: danh mục các từ viết tắt, danh sách các hình vẽ, các bảng và tài liệu
tham khảo để giúp cho người đọc thuận tiện trong việc tìm hiều nội dung luận văn.
-7-
Chương I: GIỚI THIỆU CHUNG
I.1. Phương pháp phát triển phần mềm hướng đối tượng
Một trong những thách thức đối với ngành công nghiệp phần mềm là làm thế
nào phát triển các phần mềm với chất lượng cao, nhanh chóng và dễ bảo trì trong khi
các hệ thống ngày càng lớn và phức tạp
[30]. Điều đó xuất phát từ những nguyên nhân
sau:
- Nhu cầu của người dùng đối với phần mềm ngày một cao do sự phát triển như
tính toán cho hệ thống. Kiến trúc trong OOD nhấn mạnh đến việc định nghĩa các đối
tượng phần mềm và tương tác giữa chúng.
Lập trình hướng đối tượng (OOP) cho phép chúng ta kết hợp những tri thức bao
quát về các quá trình với các khái niệm trừu tượng được sử dụng trong máy tính. Cụ
thể hơn nhiệm vụ giai đoạn này là chuyển các đặc tả hệ thống đối tượng từ bản thiết kế
thành chương trình mã máy bằng các công cụ và ngôn ngữ lập trình hướng đối tượng.
I.1.2. Các ưu điểm của phương pháp hướng đối tượng
Các phương pháp hướng đối tượng nói chung và lập trình hướng đối tượng nói
riêng cho phép chúng ta giải quyết được nhiều vấn đề gây khó khăn, trở ngại cho quá
trình phát triển phần mềm. Ngoài những khía cạnh đã phân tích ở trên, những ưu điểm
chính của phương pháp hướng đối tượng là:
-
Giúp cho nhà phát triển có tư duy ánh xạ các đối tượng bài toán vào phần mềm,
nhờ đó hệ thống trở nên trong sáng dễ hiểu và gần gũi với người dùng.
-
Những đối tượng được thiết kế tốt trong những hệ thống hướng đối tượng là cơ
sở để kết hợp các đơn thể được sử dụng lại thành hệ lớn hơn, tạo ra những hệ
thống chất lượng ở mức cao hơn.
-
Lập trình hướng đối tượng, đặc biệt là kỹ thuật thừa kế cho phép loại bỏ những
đoạn mã chung, làm tăng tính tái sử dụng.
-
Quy ước truyền thông điệp giữa các đối tượng đảm bảo cho việc mô tả các giao
diện giữa các đơn thể bên trong hệ thống và các hệ thống bên ngoài trở nên dễ
dàng hơn. Điều đó cũng đảm bảo cho việc phân chia công việc trong dự án có
cơ sở tự nhiên và dễ hiểu hơn.
-
Nguyên lý che dấu thông tin hỗ trợ cho việc xây dựng các hệ thống thông tin an
toàn. Nguyên lý thiết kế dựa chính vào dữ liệu rất phù hợp với ngữ nghĩa của
- Là tiến trình lặp và tăng dần.
Phần sau đây sẽ trình bày chi tiết hơn từng đặc trưng trên.
I.2.2.1. Ca sử dụng điều khiển tiến trình phát triển
Một hệ thống phần mềm được tạo ra là để phục vụ người dùng, thuật ngữ người
dùng ở đây bao gồm cả người dùng hệ thống hay các hệ thống khác tương tác sử dụng
dịch vụ hệ thống mà chúng ta xây dựng.
Một ca sử dụng (use case) là một phần chức năng hệ thống cung cấp cho người
dùng để đem lại kết quả nào đó khi sử dụng nó. Các ca sử dụng dùng để nắm bắt các
yêu cầu chức năng. Tập hợp tất cả các ca sử dụng lập thành mô hình ca sử dụng mô tả
đầy đủ chức năng của hệ thống (hình 2). Mô hình này sẽ thay thế cho các đặc tả chức
năng hệ thống bằng phương pháp truyền thống. Một đặc tả chức năng thường trả lời
câu hỏi: hệ thống được dự kiến sẽ là gì? Nhưng đối với ca sử dụng thì câu hỏi lại là: hệ
thống dự kiến sẽ làm được gì cho mỗi người sử dụng?
Ca sử dụng không phải chỉ là một công cụ để đặc tả các yêu cầu của hệ thống,
nó còn điều khiển các tiến trình thiết kế, cài đặt và kiểm thử theo ngữ nghĩa như sau:
Trước hết ca sử dụng phản ánh yêu cầu của hệ thống cần phải thực hiện để đem lại
dịch vụ cho những người sử dụng và kết quả là những giá trị gia tăng mà họ nhận
được. Dựa trên mô hình ca sử dụng, người phát triển tạo ra một loạt các mô hình phân
tích, thiết kế và cài đặt nhằm vào việc ca sử dụng ở những mức khác nhau (từ mức
khái niệm đến mức logic và phương tiện vật lý) và xem xét để sao cho mỗi mô hình
này phù hợp với việc thực hiện mô hình ca sử dụng xây dựng được.
Hình 2. Ca sử dụng điều khiển các hoạt động phát triển.
Những người kiểm tra sẽ kiểm tra các cài đặt để đảm bảo rằng các thành phần
của mô hình cài đặt đã được cài đặt đúng các ca sử dụng. Do vậy, ta nói rằng ca sử
dụng điều khiển quá trình phát triển,
điều đó có nghĩa là quá trình phát triển tuân theo
các luồng công việc được điều khiển bởi ca sử dụng.
-11-
Kiến trúc của hệ thống phần mềm chuyên sâu được mô tả bằng các khung nhìn
tương tác với nhau (hình 3). Các khung nhìn ánh xạ vào tổ chức và cấu trúc hệ thống,
mỗi khung nhìn tập trung vào một khía cạnh cụ thể của hệ thống.
I.2.2.3. Tiến trình thống nhất là tiến trình lặp và tăng dần
Việc phát triển một phần mềm nói chung đòi hỏi một số lớn công việc và có thể
diễn ra trong một khoảng thời gian nhất định. Việc chia nhỏ toàn bộ công việc thành
các phần nhỏ hoặc các dự án con là yêu cầu thiết thực. Mỗi dự án con là một bước lặp
và tạo nên một sự tăng trưởng. Điều này dễ dàng thực hiện được khi phát triển phần
mềm hướng đối tượng, vì nó được cấu thành từ các thành phần độc lập ghép nối lại với
nhau. Để đạt hiệu quả nhất, các bước lặp phải được điều khiển, nghĩa là chúng phải
được lựa chọn và tiến hành theo kế hoạch đã được định trước.
Lựa chọn gì cần để cài đặt trong một bước lặp dựa trên hai yếu tố sau: Thứ
nhất, bước lặp phải liên quan tới một nhóm các ca sử dụng để mở rộng tính khả dụng
của hệ thống khi phát triển. Thứ hai, bước lặp phải giải quyết những rủi ro quan trọng
nhất.
-13-
Mỗi bước lặp tiếp được xây dựng trên cơ sở các chế tác từ trạng thái mà nó vừa
kết thúc ở bước lặp trước
[21]. Bởi vì là một dự án con, nên từ các ca sử dụng đã sử
dụng, nó tiếp tục thực hiện các công việc phân tích, thiết kế, cài đặt và kiểm thử đối
với các chức năng còn lại được nắm bắt trong các ca sử dụng tiếp theo để đưa chúng
về dạng các mã nguồn thực thi được. Tuy nhiên, trong một vài bước đầu, người phát
triển có thể chỉ thay thế một thiết kế còn sơ bộ bằng một thiết kế khác chi tiết hơn,
phức tạp hơn, vì vậy có thể chưa tạo ra sự tăng trưởng của sản phẩm. Nhưng ở các
bước sau, sự tăng trưởng của sản phẩm nói chung là tất nhiên và cần thiết.
Trong mỗi bước lặp, người thiết kế xác định các ca sử dụng liên quan, tạo lập
thiết kế dựa trên kiến trúc đã chọn, triển khai thiết kế dưới dạng các thành phần, kiểm
tra mức độ tương ứng giữa các thành phần và các ca sử dụng. Nếu một bước lặp thoả
mãn được các mục đích của nó thì có thể chuyển sang bước lặp tiếp theo. Nếu không,
hình. Tiến trình thống nhất chính là một khung làm việc mà đã tích hợp được tất cả các
mặt này. Nó cho phép những nhà xây dựng công cụ và người phát triển có thể xây
dựng nên các công cụ hỗ trợ cho việc tự động hoá quá trình, hỗ trợ các dòng công việc
cụ thể, xây dựng nên các mô hình khác nhau, tích hợp công việc qua vòng đời và qua
các mô hình
[18].
I.3. Ngôn ngữ hình thức trong phát triển phần mềm
Trong kỹ nghệ phần mềm phương pháp hình thức là một kỹ thuật dựa trên toán
học để đặc tả, phát triển và kiểm chứng hệ thống. Phương pháp hình thức bao gồm
ngôn ngữ đặc tả hình thức và lập luận hình thức
[31].
I.3.1. Mục tiêu của việc áp dụng phương pháp hình thức
Phương pháp hình thức giúp ích cho tất cả các công việc của quá trình làm phần
mềm:
-
Đặc tả yêu cầu: Việc áp dụng phương pháp hình thức với các ngôn ngữ mang
tính toán học chính xác sẽ làm cho yêu cầu của khách hàng được rõ ràng, loại
bỏ những điều nhập nhằng, không nhất quán không đầy đủ.
-
Thiết kế hệ thống: Các ngôn ngữ hình thức cung cấp cho các nhà thiết kế một
ngôn ngữ để đặc tả cấu trúc hệ thống, đặc tả mối quan hệ các thành phần, làm
mịn từng bước cho hệ thống.
-17-
-
Xác minh: Nhờ các công cụ toán học được cung cấp trong ngôn ngũ hình thức,
chúng ta có thể chứng minh tính đúng đắn của hệ thống, đảm bảo hệ thống thỏa
mãn các yêu cầu đặc tả.
- Thẩm định: Nhà phát triển và khách hàng dựa vào đặc tả và sản phẩm để thẩm
định xem liệu sản phẩm có thỏa mãn yêu cầu không? Ngoài ra ngôn ngữ hình
Special.
-
Ngôn ngữ đặc tả mô hình hóa trừu tượng: VDM, Z, RAISE, B [29].
-
Ngôn ngữ đặc tả đại số: OBJ, Larch, Clear, Anna.
-
Ngôn ngữ đặc tả logic thời gian, đồng thời: CSP, GIL, Petri nets, statecharts.
I.4. Mục tiêu và nội dung của đề tài
Từ những trình bày ở trên, có thể thấy rằng trong những năm gần đây, phương
pháp hướng đối tượng và phương pháp hình thức là hai hướng tiếp cận quan trọng
trong nghành công nghệ phần mềm. Tuy nhiên chúng vẫn có những khoảng cách nhất
định và khá độc lập với nhau. Từ thực tế này mục tiêu đặt ra của đề tài là nghiên cứu
các ngôn ngữ hình thức, lựa chọn và áp dụng một ngôn ngữ vào tiến trình phát triển
phần mềm hướng đối tượng. Trên cơ sở đó, chúng tôi tiến hành xây dựng thử nghiệm
một công cụ trợ giúp cho việc đặc tả hình thức hóa hệ thống phần mềm hướng đối
tượng.
Hướng tiếp cận được thực hiện trong đề tài này là tiến hành đặc tả hệ thống
hướng đối tượng theo ngôn ngữ rCOS, sau đó bằng một loạt các phép biến đổi đại số
và các luật đã được chứng minh đưa đặc tả hệ thống thành thiết kế cuối cùng. Do hệ
thống được đặc tả bao gồm các khái niệm rất gần gũi với khái niệm về biểu đồ lớp
thiết kế của mô hình UML, nên dễ dàng chuyền nó sang dạng biểu diễn của biểu đồ
thiết kế trong UML, từ đó có thể sinh được mã lệnh chương trình của một ngôn ngữ
lập trình hướng đối tượng bằng công cụ sẵn có, ví dụ như Rational Rose, Power
Designer… -19-
Chương II: ĐẶC TẢ VÀ LÀM MỊN HỆ THỐNG ĐỐI TƯỢNG
VỚI rCOS
II.1. rCOS – Một phép làm mịn hệ thống đối tượng
} với Ti
là kiểu của biến x
i
:
Locar biểu diễn tập các biến cục bộ trong phạm vi lệnh.
o Nhóm thứ hai cung cấp thông tin ngữ cảnh của các lớp (kiểu của đối
tượng) và các mối quan hệ:
CNAME biểu diễn tập các lớp.
-20-
Superclass là hàm một phần ánh xạ một lớp tới lớp cha của nó.
o Nhóm thứ ba miêu tả cấu trúc các lớp:
Attr(N) biểu diễn tập các thuộc tính (thừa kế hoặc khai báo) của
lớp N: {a1
Æ
(U
1
, c
1
), … a
m
Æ
(U
m
, c
m
)} với U
i
là kiểu giá trị và
R(x, x’). Trong đó:
o p(x) được gọi là tiền điều kiện và phải có giá trị true – tức là đúng đắn
trước khi chương trình bắt đầu.
o R(x, x’) gọi là hậu điều kiện nhận được sau khi chương trình thực hiện. x
và x’ biểu diễn giá trị khởi đầu và kết thúc của biến x trong chương trình.
o ok và ok’ là các biến logic mô tả trạng thái hành vi ban đầu và cuối của
chương trình: nếu chương trình được kích hoạt hợp thức ok là true, nếu
việc thực hiện chương trình cuối cùng thành công ok’ là true, ngược lại
chúng là false.
II.1.2. Đặc tả hệ thống đối tượng bằng rCOS
Dùng những lý thuyết UTP, các tác giả của rCOS [15], [9] đề xuất một mô hình
tính toán trong đó:
- Một đối tượng có thể có kiểu là kiểu con mà nó được khai báo. Điều này thực
chất thể hiện tính đa hình của hệ thống hướng đối tượng.
-21-
- Một lệnh thao tác không chỉ trên các biến có kiểu nguyên thủy mà còn trên các
đối tượng có kiểu người dùng định nghĩa, để đảm bảo sự truy cập các biến hợp
lệ, framework ngữ nghĩa phải liên kết các lệnh với tập các trạng thái khả truy
cập hiện thời của lệnh đó.
Một hệ thống đối tượng được cấu thành từ tập các khai báo lớp và lệnh có dạng
cdecls ● Main. Trong đó cdecls biểu diễn phần khai báo các lớp và xác định các dịch
vụ được cung cấp bởi các đối tượng, main là cặp (externalvar, c) được dùng để mô tả
hành vi các đối tượng và đóng vai trò phương thức main trong các ngôn ngữ như Java,
C++.
Quy ước các ký hiệu:
- CNAME được dùng để ký hiệu tập tên các lớp có trong đặc tả hệ thống. Tên các
lớp thương được ký hiệu bởi các chữ cái C, D, M, N.
- ANAME là tập các tên thuộc tính của một lớp N
∈