Mặc dù thực tế UML không được thiết kế nhằm mục đích để mô hình hoá nhiệm vụ, nhưng một số sơ đồ của nó lại khá hữu dụng trong ngữ cảnh phân tích nhiệm vụ. Những sơđồ đó bao gồm:
• Sơ đồ hoạt động: Được sử dụng để mô tả luồng nhiệm vụ trong mối quan hệ với các sự kiện (event), các vai trò (role) và các mục đích (goal). Một hoạt động được khởi tạo bằng một sự kiện. Ngay sau khi nhiệm vụđược bắt đầu, kết quả là một mục đích sẽđược thưc hiện.
•
Hình 7.3: Ví dụ về sơđồ hoạt động của UML
• Sơ đồ hợp tác: Miêu tả cách thức hợp tác của các đối tượng khác nhau. Kí hiệu mũi tên chỉ sự liên lạc hoặc hợp tác giữa các role trong khi trao đổi các đối tượng hoặc các thông điệp.
Hình 7.4: Sơđồ hợp tác của UML
• Sơ đồ tuần tự: Sơđồ tuần tự biểu diễn thứ tự thực hiện của các nhiệm vụ.
• Sơ đồ use-case 8.3.3. Mô hình ngữ cảnh
Mô hình ngữ cảnh là một phần trong phương pháp thiết kế ngữ cảnh. Nó bao gồm 5 mô hình công việc để mô tả thế giới nhiệm vụ:
• Mô hình luồng: biểu diễn sự liên lạc và hợp tác cần thiết trong quá trình thực hiện công việc
• Mô hình tuần tự: Chỉ rõ các bước công việc cần thiết đểđạt được một ý định cụ thể
• Mô hình mẫu tự tạo: Mô tả các vật được tạo ra để hỗ trợ cho công việc.
• Mô hình văn hoá: biểu diễn các phụ thuộc trong công việc do chính sách, văn hoá, ..gây ra
• Mô hình vật lý: Chỉ rõ cấu trúc vật lý của môi trường làm việc có tác động đến công việc. : Order Taker :administrator (người quản lí) :Supplier Người yêu cầu
1: place_order(order) 2:check_budget(budget, order)(kiểm tra tài khoản) 5: notify(Newbutget) (thông báo về tài khoản) 3: order (book)
(đặt hàng tới nhà cungcấp)
4: Send_bill(bill) (gửi hóa đơn)
Nguyễn Viết C ường K4B Khoa CNTT 101
CHƯƠNG 9: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG THEO MÔ HÌNH HƯỚNG ĐỐI TƯỢNG
Trong chương này, chúng ta sẽ tìm hiểu qua về lịch sử của mô hình hướng đối tượng, cũng như quá trình phát triển của phương pháp phân tích và thiết kế hướng đối tượng. Toàn bộ phần còn lại của chương sẽ tập trung vào các vấn đề cơ bản của phương pháp thiết kế giao diện theo hướng đối tượng như là: cấu trúc giao diện, các đối tượng và các thuộc tính của nó…. Bên cạnh đó, ví dụ minh hoạở cuối chương cũng sẽ giúp các bạn hiểu rõ hơn về phương pháp này.
9.1. Khái quát chung về lịch sử của mô hình hướng đối tượng 9.1.1. Khái quát chung 9.1.1. Khái quát chung
Mô hình trong lĩnh vực phát triển phần mềm bắt đầu xuất hiện cùng với việc sử dụng biểu đồ luồng và các kĩ thuật liên quan đến việc mô hình hoá các thủ tục và các thuật toán cho các ngôn ngữ lập trình truyền thống, như là Cobol hay Fortran. Các mô hình dùng cho mục đích phân tích và thiết kế ra đời vào những năm 70, (như là mô hình phân tích và thiết kế có cấu trúc năm 1979), và trở nên phổ biến vào những năm 80, nổi tiếng trong các môi trường phát triển phần mềm lớn. Kể từ đó, các mô hình phân tích và thiết kế trở thành nền tảng cơ bản cho vấn đề nghiên cứu và ứng dụng trong lĩnh vực khoa học máy tính và kĩ nghệ phần mềm.
Tuy nhiên, có rất nhiều cách để đặc tả, viết tài liệu và cài đặt các hệ thống phần mềm chuyên dụng. Các cách tiếp cận truyền thống dựa trên các ngôn ngữ lập trình, hoặc các ngôn ngữ giả lập trình là rất phù hợp cho nhiều tình huống, nhưng nó chưa thể trở thành cách tốt nhất và duy nhất. Hiện tại, có nhiều cách tiếp cận mô hình khác nhau từ các luật và logic đến các mạng noron, các thuật toán di truyền, mạng Petri, các kĩ thuật cấu trúc, thực thể-quan hệ và rất nhiều thứ khác. Theo Martin và Odell: “có rất nhiều cách phát triển: bởi vì sẽ luôn có và nên có các nhiệm vụ khác nhau, mỗi nhiệm vụ có những đặc điểm khác nhau và do đó đòi hỏi các cách tiếp cận khác nhau. Hướng đối tượng là một kĩ thuật dùng để tổ chức và liên kết các cách phát triển khác nhau, tạo ra sự gắn kết giữa các cách phát triển trong kĩ nghệ phần mềm hiện đại. Hướng đối tượng không
chỉ là một cách tiếp cận để mô phỏng thực tế mà còn là một phương tiện giúp cho mọi người hiểu, xử lý và thao tác với thực tế”.
Nguyễn Viết C ường K4B Khoa CNTT 103
Hình 9.1: Hướng đối tượng, phân tích và thiết kế hướng đối tượng và các ngôn ngữ lập trình hướng đối tượng (Theo Martin và Odell, 1998)
Hướng đối tượng là một kĩ thuật để tổ chức tri thức, nghĩa là, để tổ chức lại cách mà chúng ta hiểu về thế giới xung quanh. Cách tổ chức này được biểu diễn dưới dạng các kiểu đối tượng, các thuộc tính của chúng, các thao tác, mối quan hệ, các quy tắc để suy diễn hành vi và sự hợp tác. Mặc dù, hướng đối tượng có sự kết hợp riêng với các ngôn ngữ lập trình, tuy nhiên phạm vi của nó rộng hơn vấn đề cài đặt các nguyên tắc hướng đối tượng và thậm chí còn rộng hơn bất kì một công nghệ cài đặt nào. Một sự nhầm lẫn khác thường thấy nữa là, coi hướng đối tượng chỉ bó hẹp trong các hệ thống thông tin. Mặc dù, thông tin là một phần quan trọng trong các hệ thống phần mềm chuyên dụng, tuy nhiên cũng có rất nhiều vấn đề khác liên quan đến việc phát triển các hệ thống phần mềm hiện đại mà ta có thể áp dụng hướng đối tượng , ví dụ như là công nghệ xử lý nghiệp vụ (gồm những vấn đề không thể tự động hoá bởi phần mềm), công nghệ tổ chức và các phương thức, công nghệ mạng, công nghệ phần cứng và công nghệ phần mềm. Do đó, hướng đối tượng có thể được áp dụng một cách
hiệu quả cho vấn đề công nghệ của bất kì một loại hệ thống nào (một số lĩnh vực áp dụng của hướng đối tượng được minh họa như trong hình 9.1) .
9.1.2. Phân tích và thiết kế hướng đối tượng
Phân tích và thiết kế hướng đối tượng liên quan đến vấn đề sử dụng hướng đối tượng cho mục đích phân tích và thiết kế các hệ thống phần mềm. Để xây dựng công thức chung về phân tích và thiết kế, Martin và Odell đã định nghĩa phân tích và thiết kế như sau: “Phân tích là một quá trình ánh xạ từ sự nhận thức về thế giới hiện thực thành một biểu diễn về sự nhận thức đó.” Ngược lại, thiết kế là một quá trình ánh xạ từ một biểu diễn phân tích thành một cài đặt cụ thể. Hai quá trình trên là khác nhau, bởi vì nhận thức là nhằm mục đích hiểu biết về vấn đề, trong khi thiết kế tạo ra sự thực hiện cuối cùng của giải pháp cho vấn đề.
Hình 9.2.Mốc lịch sử của các phương pháp phân tích và thiết kế hướng đối tượng
Các phương pháp phân tích và thiết kế hướng đối tượng xuất hiện từ những cố gắng đầu tiên trong việc sử dụng hướng đối tượng trong các ngôn ngữ lập trình. Ngôn ngữ hướng đối tượng đầu tiên thường được biết đến là SIMULA 67. Mặc dù SIMULA không có sự phát triển tiếp theo nào đáng kể, nhưng nó có ảnh hưởng đến sự phát triển, đặc biệt trong vấn đề nâng cao phạm vi hướng đối tượng trong phát triển phần mềm. Phong trào hướng đối tượng đã trở thành tích cực với phổ biến rộng rãi của SmallTalk và các ngôn ngữ lập trình hướng đối tượng khác trong những năm 80. Các ngôn ngữ hướng đối tượng đã tạo ra sự
Nguyễn Viết C ường K4B Khoa CNTT 105
chuyển hướng tập trung vào việc phát triển các phương pháp ở giai đoạn cuối những năm 80. Các phương thức đầu tiên ra đời vào cuối những năm 90 và đầu những năm 90 (như minh hoạ trong hình 9.2).
Các phương pháp thế hệ đầu tiên xuất hiện từ sự dư thừa của các nghiên cứu mở rộng và các đề xuất mới do đó có rất nhiều khái niệm, kí pháp, định nghĩa, và các thuật ngữ tương tự nhau. Có rất nhiều cách tiếp cận khác nhau đã được đưa ra, mỗi cách tập trung vào một vấn đề khác nhau. Thực tế, đòi hỏi cần có sự thống nhất các cách tiếp cận, và cũng đã có rất nhiều những đề xuất khác nhau để tạo ra sự thống nhất đó. Kết quả là vào năm 1995, nhóm quản lý đối tượng (OMG), đã đưa ra một cách tiếp cận chuẩn đó là UML (Unified
Modeling Language). Quá trình phát triển của UML từ các phương pháp thế hệ thứ nhất và thứ hai cho đến các nỗ lực thống nhất và chuẩn hoá dưới sự giám sát của OMG được minh hoạ trong hình 9.3 dưới đây:
Nguyễn Viết C ường K4B Khoa CNTT 107
9.2. Thiết kế giao diện người dùng theo phương pháp hướng đối tượng 9.2.1. Cấu trúc giao diện người sử dụng 9.2.1. Cấu trúc giao diện người sử dụng
Cấu trúc của giao diện người dùng có dạng phân cấp (như hình 9.4 bên dưới). Trong đó ta quy ước về các kí hiệu như sau:
• Hình tam giác: biểu diễn quan hệ kế thừa
• Hình thoi: sự kết hợp
• Đường thẳng: sự kết hợp giữa các lớp
• Hình tròn bôi đen: biểu diễn nhiều kết hợp
Hình 9.4: Cấu trúc giao diện người sử dụng
Ở mức cao nhất, chúng ta thấy giao diện người dùng được xem như là một tập các hộp thoại (để đơn giản ta quy ước tất cả các hộp thoại và các cửa sổ đều gọi chung là các hộp thoại). Mỗi hộp thoại bao gồm một hoặc nhiều thành phần. Mỗi thành phần là một tập các thành phần của hệ thống cửa sổ, về mặt ngữ nghĩa chúng cùng nằm trong ngữ cảnh của một ứng dụng, hoặc cùng cung cấp cách thức cho người sử dụng cuối thực hiện một tập các hành động có ý nghĩa. Mỗi thành phần như vậy sẽ tạo thành một đơn vị nhận thức. Một đơn vị nhận thức là một đối tượng cơ bản mà qua đó người sử dụng và ứng dụng có thể trao đổi, liên lạc với nhau.
Trong giai đoạn cài đặt cuối cùng, các thành phần thường được làm nổi bật bằng cách sử dụng các kí hiệu phân cách rõ ràng, như là đường biên, màu sắc và phân nhóm. Khi đó, các thành phần có thể nâng cao tính dễ hiểu, và làm nổi bật mối quan hệ giữa các thành phần trong giao diện người dùng. Thông thường,
mỗi thành phần sẽ được cài đặt thành một lớp. Lớp này có thể bao gồm nhiều thành phần của thư viện hệ thống cửa sổ hoặc các thành phần khác.
Các công cụ là thành phần cơ bản nhất của giao diện người dùng. Mỗi một thành phần bao gồm các công cụ hoặc là các công cụ thao tác, hoặc là các công cụ phản hồi hoặc sự kết hợp của 2 loại công cụ này. Công cụ thao tác giúp người sử dụng cuối thực hiện chức năng của ứng dụng. Công cụ phản hồi được sử dụng bởi ứng dụng để biểu diễn những thông tin phúc đáp cho người sử dụng.
9.2.2. Đối tượng giao diện và thuộc tính của đối tượng
Giao diện người dùng là một tập các đối tượng. Những đối tượng đó đều có dữ liệu, chức năng của chúng và các đặc điểm mà chúng được kế thừa từ các đối tượng khác.
Trong thực tế, có rất nhiều ứng dụng HCI hiển thị và biến đổi thông tin, như là: các chương trình soạn thảo Word hiển thị các tài liệu, chương trình đồ hoạ hiển thị các hình ảnh, bảng tính hiển thị các số liệu…Trong các ví dụ trên, việc lựa chọn các đối tượng giao diện và sự phân cấp giữa các đối tượng là rất rõ ràng. Ví dụ, trong chương trình soạn thảo, tài liệu bao gồm nhiều đoạn, mỗi đoạn lại bao gồm nhiều từ. Tất cả các đối tượng đó đều là các đối tượng giao diện.
Thuộc tính của đối tượng: Mỗi đối tượng giao diện có các thuộc tính vật lý và nhận thức của nó. Thuộc tính vật lý bao gồm các thuộc tính như: kích thước, vị trí, và tính nhìn thấy được. Tính nhìn thấy được có 2 khía cạnh: tính nhìn thấy được của đối tượng ở trên màn hình và tính nhìn thấy được của phạm vi hoặc biên của đối tượng. Cả 2 khía cạnh của tính nhìn thấy được đều có ý nghĩa rất quan trọng trong quá trình thiết kế giao diện người dùng. Ví dụ, người sử dụng sẽ không thể truy cập đến các đối tượng mà họ không thể nhìn thấy được. Các thuộc tính nhận thức là các tính chất của đối tượng không thể hiển thị được rõ ràng và không thể truy cập được dễ dàng. Ngoài việc đặc tả tất cả các thuộc tính, người thiết kế cũng nên biết được số lượng các thuộc tính và kích thước của chúng. Nếu một đối tượng có quá nhiều thuộc tính, người thiết kế nên phân rã đối tượng đó ra thành các đối tượng con hoặc cụ thể hoá các thuộc tính.
Nguyễn Viết C ường K4B Khoa CNTT 109
9.3. Ví dụ minh hoạ
Chúng ta được học về phát triển phần mềm nói chung theo phương pháp hướng đối tượng, do đó tài liệu này sẽ không đề cập lại các khái niệm cũng như các kĩ thuật liên quan, mà chỉ tập trung vào việc ứng dụng phương pháp đó trong thiết kế giao diện. Để thực hiện điều này, cách tốt nhất là xem xét một số thiết kế cụ thểđể rút ra các bài học kinh nghiệm trong khi áp dụng mô hình OO.
Bài toán: Xây dựng ứng dụng cho phép người sử dụng thanh toán hoá đơn qua thiết bị đầu cuối-máy tính. Người sử dụng có thể truy cập vào tài khoản ngân hàng, và thực hiện thanh toán qua tài khoản cá nhân.
Giải pháp: Sử dụng phương pháp hướng đối tượng cho việc phát triển giao diện
9.3.1. Các giai đoạn chính của quá trình phát triển
9.3.2. Phân tích đối tượng
Quá trình phân tích đối tượng sẽ tạo ra mô hình đối tượng phân tích. Sau đây là bảng liệt kê các giao dịch đã được phát hiện trong quá trình phân tích:
Bảng 1: Các giao dịch trong ứng dụng ngân hàng cho người sử dụng cuối
STT Giao dịch
1 Người sử dụng kiểm tra bảng cân đối trong tài khoản của mình 2 Người sử dụng thanh toán hoá đơn, ví dụ người dùng nhập các
hoá đơn cần phải thanh toán theo lịch có hẹn sẵn vào danh sách các hoá đơn cần thanh toán
3 Người dùng sửa đổi các hoá đơn nằm trong danh sách chờ thanh toán theo ngày hẹn trước.
4 Người dùng xoá hoá đơn ra khỏi danh sách chờ thanh toán 5 Người sử dụng kiểm tra lại các giao dịch mới thực hiện
Bảng 2:Các nhiệm vụ mà người dùng cần thực hiện để kiểm tra bảng cân đối tài khoản của mình
STT Nhiệm vụ
1 Lựa chọn một tài khoản của người dùng 2 Đọc bảng cân đối tài khoản đã được chọn
Nguyễn Viết C ường K4B Khoa CNTT 111
Hình 9.6:Mô hình đối tượng phân tích của ứng dụng ngân hàng (các quy ước về kí hiệu đã được cho ở phần cấu trúc giao diện)
9.3.3. Phân tích hoạt động
Trong pha phân tích hoạt động, chúng ta sẽ tiến hành phân tích các hoạt động của người sử dụng cuối và xây dựng các nhiệm vụ để phục vụ cho các hoạt động đó. Các nhiệm vụ tương ứng với các hoạt động của người dùng trong bảng 1 được cho trong các bảng dưới đây:
Bảng 3: Các nhiệm vụ mà người sử dụng cần thực hiện để thanh toán hoá đơn
STT Nhiệm vụ
1 Lựa chọn tài khoản của người sử dụng 2 Thay đổi thông tin liên quan đến hoá đơn
3 Nhập hoá đơn cần thanh toán vào trong danh sách chờ để thanh toán theo đúng ngày hẹn
Bảng 4: Các nhiệm vụ mà người sử dụng cần thực hiện để thay đổi hoá đơn trong danh sách chờ
STT Nhiệm vụ
1 Lựa chọn hóa đơn trong danh sách chờ 2 Thay đổi thông tin liên quan đến hoá đơn
Bảng 5: Các nhiệm vụ mà người sử dụng cần thực hiện để xoá hoá đơn khỏi danh sách chờ
STT Nhiệm vụ