You are on page 1of 10

HƯỚNG DẪN THỰC HÀNH UML

XÂY DỰNG HỆ THỐNG QUẢN LÝ THƯ VIỆN


BẰNG CÔNG CỤ RATIONAL ROSE

Giới thiệu
Mục tiêu của bài thực hành là cho SV thực tập phương pháp phân tích và thiết kế bằng ngôn
ngữ UML thông qua một công cụ CASE là Rational Rose. Trước hết SV được làm quen với
môi trường Rational Rose. Sau đó sẽ ứng dựng công cụ này để xây dựng phần mềm quản lý
hệ thống thư viện. Toàn bộ bài thực hành được chia làm 4 buổi. Bài hướng dẫn sẽ giúp sinh
viên thực hiện các thao tác cơ bản thông qua một số lược đồ mẫu. Tuy nhiên sinh viên cần
phải tự mình thực hiện các lược đồ khác để có thể hoàn tất việc phân tích/thiết kế cho hệ
thống quản lý thư viện.

Đặc tả sơ lược hệ thống quản lý thư viện


Trường đại học Đông Nam cần xây dựng một phần mềm quản lí hệ thống thư viện của
trường. Thư viện này phục vụ nhiều đối tượng khác nhau như giáo viên, sinh viên trong
trường và cả sinh viên hoặc cán bộ của các cơ quan ban ngành có nhu cầu. Người mượn
có thể mượn sách, tạp chí, đĩa CD, băng video thuộc quyền quản lý của thư viện. Ngoài
các chức năng cơ bản của hệ thống thư viện như mượn, trả, gia hạn… các chức năng
khác như hỗ trợ tìm kiếm sách, đăng kí mượn tiếp, giữ tựa sách, yêu cầu sách… cũng
được thiết lập trong hệ thống này. Việc quản lí tài chính như tiền mượn sách, quá hạn,
mua thiết bị… cần được chuyển qua phòng tài vụ.

Thông tin về sách, tạp chí, đĩa CD và băng video hiện có trong thư viện cũng như thông
tin về các độc giả được lưu trữ trong cơ sở dữ liệu đặt ở máy trung tâm của thư viện. Hệ
thống được xây dựng theo dạng Web để cho người sử dụng có tương tác được từ bất kỳ
một máy tính nào được nối mạng với máy chủ của thư viện.

Hướng dẫn thực hành UML trên Rational Rose– Trang 1


Buổi thứ nhất
Mục tiêu
 Làm quen với môi trường phân tích/thiết kế của Rational Rose
 Nhận diện tác nhân (actor) và các trường hợp sử dụng (use-case)
 Xây dựng biểu đồ sử dụng (use-case diagram)

Trình tự thực hiện

Làm quen với môi trường

Bắt đầu sử dụng Rational Rose – Chọn mục Rational Rose 2000 Enterprise Edition trong nhóm phần mềm
Rational Rose 2000 Enterprise Edition. Đợi hộp thoại Create New Model xuất hiện rồi nhấn nút Cancel.

Môi trường làm việc của Rational Rose bao gồm 3 cửa sổ chính. Cửa sổ bên trái trên thể hiện các view khác
nhau để người sử dụng có thể thao tác trên các mô hình khác nhau: Use-case View, Logical View, Component
View và Deployment View. Mỗi view được trình bày dưới dạng một cây (click vào dấu + sẽ mở cây ra, click vào
dấu - sẽ đóng cây lại). Cửa sổ bên trái dưới thể hiện documenation của phần tử đang giữ focus (có thể là use-
case, actor, class…). Cửa sổ còn lại nằm bên phải thể hiện các lưu đồ. Khi double-click vào icon của mỗi biểu
đồ trong các view, của sổ bên phải sẽ hiển thị lưu đồ đó.

Một số chức năng quan trọng cần chú ý trong quá trình thực hiện:

1. Để lưu mô hình đang tạo lập vào một file chọn menu File | Save. Sau đó có thể mở nó ra bằng menu File
| Open.
2. Thay đổi font, màu viền và màu tô cho các phần tử mới được tạo ra
• Sử dụng menu Tools | Options
• Dùng General Tab
• Sửa font và các màu sắc cần thiết
3. Thay đổi font, màu viền và màu tô cho các phần tử trong một biểu đồ
• Nhấn Ctrl+A hoặc menu Edit | Select All để chọn tất cả các phẩn tử có trong biểu đồ
• Sử dụng các menu Format | Font Size, Format | Line Color, Format | Fill Color, Format | Font
4. Thay đổi ngôn ngữ mô hình và ngôn ngữ lập trình mặc định. Các lớp và package tạo ra sẽ được gán
ngôn ngữ lập trình mặc định.
• Sử dụng menu Tools | Options
• Dùng Notation Tab
• Kiểm tra Default notation là Unified và Default language là Analysis, C++, Java…
5. Hiển thị chỉ số trong biểu đồ tuần tự (sequence diagram)
• Sử dụng menu Tools | Options
• Dùng tab Diagram
• Chọn Sequence numbering
6. Hiển thị tất cả thuộc tính và tác vụ
• Sử dụng menu Tools | Options
• Dùng tab Diagram
• Chọn Show all Attributes và Show all Operations
7. Thay đổi chế độ hiển thị stereotype cho các phần tử đang giữ focus bằng các chức năng con của menu
Format | Stereotype Display
8. Tắt Focus of Control (sequence diagram)
• Sử dụng menu Tools | Options
• Dùng tab Diagram
• Tắt focus of control

Hướng dẫn thực hành UML trên Rational Rose– Trang 2


Nhận diện tác nhân và các trường hợp sử dụng

Phương pháp: Trước hết nhận diện các actor. Trong số các danh từ được dùng để miêu tả, chọn ra các từ thích
hợp thể hiện vai trò của các tác nhân bên ngoài tạo ra các kích thích về phía phần mềm.

Qua mô tả ngắn gọn trên, chúng ta nhận ra các tác nhân sau sẽ tác động đến hệ thống bao gồm: Sinh viên
(Student), cán bộ – giáo viên (Staff), khách (Guest), và phòng tài vụ (Finance). Tuy không được miêu tả trực tiếp
nhưng một tác nhân đóng vai trò quan trọng trong hệ thống này là quản thư (Librarian).

Tiếp theo, chúng ta cần nhận diện các tính chất chung để tổng quát hoá các tác nhân nếu có thể. Các tác nhân
Student, Staff, Guest đều có thể sử dụng chức năng mượn, trả hay đặt chỗ trước. Như vậy tác nhân người mượn
(Borrower) được tạo và là lớp cha của Student, Staff và Guest. Librarian là một trường hợp đặc biệt của Staff.

Nhận diện các use-case từ các cụm động từ. Chúng ta xác định use-case bằng cách xem xét sự tương tác của
từng tác nhân với hệ thống và cố gắng mô tả chúng thành một chuỗi các sự kiện có kết thúc. Qua miêu tả ngắn
gọn ở trên, chúng ta thấy, tất cả người mượn đều có thể yêu cầu những chức năng: đặt chỗ trước, xóa đặt chỗ,
tìm kiếm các item. Quản thư phụ trách việc cho mượn, trả, gia hạn, quản lý các item có trong thư viện (thêm vào,
loại bỏ, cập nhập tình trạng) và quản lý các độc giả.

Xây dựng biểu đồ use-case

Phương pháp: Dựa vào chiều tác động giữa các actor và/hoặc use-case để thiết lập các mối liên kết
(association). Các trường hợp tổng quát hóa và cụ thể hóa được thể hiện bằng mối quan hệ generalization. Đồng
thời quan hệ generalization cũng được mở rộng thành quan hệ use và extend bằng cách sử dụng stereotype.

Trong phần nhận diện các trường hợp sử dụng ta đã xác định một số quan hệ giữa tác nhân và trường hợp sử
dụng. Tuy vậy ta cần phải cân nhắc trường hợp sau đây: việc giữ tựa sách được thực hiện trong quá trình tìm
kiếm tựa sách. Vì vậy, tuy cũng tương tác với người mượn nhưng sẽ là một trường hợp mở rộng trong khi tìm
kiếm sách. Như vậy riêng mối quan hệ giữa makes reservation và searchs là association với stereotype là
<<extend>>. Tương tự quan hệ giữa borrows và removes reservation là association với stereotype là
<<include>>.

Thực hiện:
1. Click vào dấu + của use-case view để mở nó sau đó double-click vào Main
2. Click vào hình người trên thanh công cụ và sau đó click vào biểu đồ
3. Trong lúc hình người còn được chọn, nhập tên Student
4. Lặp lại bước 2-3 để tạo ra các actor Staff, Guest, Borrower, Librarian, Finance
5. Click vào icon (generalization) và đưa chuột vào biểu đồ.
6. Click vào ký hiệu của Student rồi kéo đến Borrower.
(Tip: giữ phím shift trong khi click vào biểu đồ sẽ tránh được việc phải chọn lại icon generalization)
7. Làm tương tự bước 5-6 để xác định quan hệ giữa Staff, Guest với Borrower; giữa Librarian với Staff.
8. Click vào icon đường thẳng liền có mũi tên ( ) trên thanh công cụ và đưa chuột vào biểu đồ.
9. Click vào ký hiệu của Borrower và kéo đến ký hiệu của Librarian.
10. Click vào icon hình oval trên thanh công cụ rồi click vào biểu đồ
11. Trong khi use-case vẫn được chọn nhập tên borrows
12. Thực hiện bước 10-11 để tạo ra các use-case khác: returns, renews, makes reservation, removes
reservation, searches, manages item và manages borrower.
13. Click vào icon đường thẳng liền có mũi tên ( ) trên thanh công cụ
14. Click vào Librarian giữ phím chuột kéo đến borrows
15. Tiếp tục thực hiện hai bước trên để tạo các mối liên kết giữa
o Librarian đến returns
o Librarian đến renews
o Borrower đến searches
o Borrower đến makes reservation
o Borrower đến removes reservation
o returns đến Finance

Hướng dẫn thực hành UML trên Rational Rose– Trang 3


o Librarian đến manages borrower
o Librarian đến manages item
o manages item đến Finace
o searches đến makes reservation
16. Một số mối liên kết là hai chiều. Chẳng hạn giữa Librarian và renews. Right-click vào mũi tên biểu diễn
liên kết. Chọn menu Navigable.
17. Click vào icon (association) và đưa chuột vào biểu đồ.
18. Click vào ký hiệu của use-case borrows rồi kéo đến use-case removes reservation. Double-click vào
mũi tên rồi chọn stereotype là <<include>>.
19. Click vào icon (association) và đưa chuột vào biểu đồ.
20. Click vào ký hiệu của use-case searches rồi kéo đến use-case makes reservation. Double-click vào mũi
tên rồi chọn stereotype là <<extend>>.
21. Có thể click vào mỗi ký hiệu của actor hay use-case và kéo để sắp xếp lại biểu đồ. Hoặc có thể sử dụng
menu Format | Layout Diagram cho chương trình tự động sắp xếp.

 Chú ý:
 Nên nhập phần documentation miêu tả từng use-case trong cửa sổ bên phải dưới
 Muốn xoá một phần tử khỏi mô hình thì chọn menu Edit | Delete from Model hoặc dùng chuột
right-click lên phần tử cần xoá trong view tương ứng rồi chọn menu Delete. Cũng có thể dùng phím
tắt Ctrl+ D để xoá một phần tử khi đang focus nó; chú ý nhấn phím DEL hoặc menu Edit | Delete
chỉ xoá phần tử ra khỏi lược đồ đang thao tác mà thôi.

Buổi thứ hai


Mục tiêu
 Nhận diện các lớp/đối tượng và phân loại chúng theo stereotype
 Thiết lập các package
 Xây dựng các biểu đồ lớp (class diagram)

Trình tự thực hiện

Nhận diện các đối tượng/ lớp và các package


Phương pháp: Dựa vào đặc tả ban đầu của phần mềm để trích ra các danh từ thể hiện các đối tượng/lớp. Nhận
diện các đối tượng thực thể trước. Sau đó là các đối tượng giao diện và điều khiển. Chú ý tìm kiếm các đặc diểm
chung để thiết lập các đối tượng cơ sở.

Trong hệ thống này dễ dàng nhận thấy những đối tượng sách, tạp chí, băng video. Như vậy chúng ta có 3 lớp:
Book, Magazine, Video. Đồng thời chúng ta cũng tạo ra một lớp cơ sở của 3 lớp này đặt tên là Item. Cả 4 lớp
này đều có stereotype là <<entity>>. Các thuộc tính cũng có thể được nhận diện thông qua các danh từ liên quan
đến đối tượng đang xét. Một số thuộc tính chung được gán cho lớp cơ sở Item như: tên (name), mã số (code).
Các thuộc tính đặc thù của sách như: Tác giả (author), ISBN, số trang… được gán cho lớp Book. Lớp Magazine
có thuộc tính ngày phát hành (issue), loại tạp chí (type).

Người thủ thư phải quản lý các độc giả. Anh ta phải nắm được mã số, tên, địa chỉ, nghề nghiệp,… của họ một
khi họ đăng ký thẻ thư viện cũng như phải biết mỗi độc giả có thể mượn và đặt chỗ item nào. Như vậy xuất hiện
lớp BorrowerInformation. Các thuộc tính của nó bao gồm: mã số (borrowerID), tên (name), địa chỉ (address), nợ
(loans), đặt trước (reservations),… Từ đây chúng ta thấy xuất hiện thêm 2 lớp là Loan và Reservation đóng gói
thông tin của việc mượn và đặt chỗ. Cả 2 lớp có những thuộc tính giống nhau: mã số của sách, tạp chí hay băng
video và mã số của người mượn. Chúng ta tạo một lớp cơ sở cho 2 lớp này là Signup. Như vậy Signup có 2

Hướng dẫn thực hành UML trên Rational Rose– Trang 4


thuộc tính: itemCode và borrowerID. Ngoài ra lớp Loan còn có thuộc tính Period cho biết thời gian mượn cho
phép (tính theo ngày) và lớp Reservation có thuộc tính Order cho biết thứ tự trong hàng đợi của sự đặt trước này.

Các đối tượng tạo ra cửa sổ giao tiếp với Borrower và Librarian có stereotype là <<boundary>>. Lớp LoginForm
tạo ra cửa sổ để các actor truy nhập theo quyền của mình. Lớp BorrowForm tạo ra của sổ thao tác khi Librarian
cho mượn một item. Lớp ReturnForm tạo ra của sổ thao tác khi Librarian nhận một item mà một độc giả trả. Lớp
SearchForm tạo ra cửa sổ để độc giả tìm kiếm các item có trong thư viện. Lớp ManageLibForm tạo ra của sổ để
Librarian thực hiện chức năng quản lý các item. Lớp ManageBorrowerForm tạo ra của sổ để Librarian thực hiện
chức năng quản lý các độc giả.

Ngoài ra còn xuất hiện lớp Database có stereotype là <<interface>> có chức năng giao tiếp
với cơ sở dữ liệu để thực hiện các tác vụ cập nhật dữ liệu.

Xây dựng biểu đồ lớp

Phương pháp: Nhận diện các mối quan hệ giữa các lớp. Các lớp Book, Magazine và Video có quan hệ
generalization với lớp Item. Các lớp Loan và Reservation có quan hệ generalization với lớp Signup.

Quan hệ giữa các lớp giao diện và lớp Database là dependency. Sử dụng các stereotype <<call>> giữa
LoginForm với các lớp giao diện khác. Trong khi quan hệ dependency giữa chúng với Database có stereotype là
<<instantiate>>.

Nhận diện một số package. Chúng ta tạo ta 3 package là: Library Artifact chứa các lớp Book, Magazine, Video
và Item; Borrow chứa các lớp Loan, Reservation và Signup; Interface chứa các lớp Database, LoginForm,
BorrowForm, ReturnForm, SearchForm, ManageLibForm, ManageBorrowerForm.

Thực hiện:
1. Right-click vào Logical View và chọn menu New | Package
2. Gõ vào tên của package là Library artifact
3. Lặp lại 2 bước trên để tạo ra 2 package nữa: Borrow và Interface
4. Right-click vào icon của package Library artifact và chọn menu New | Class Diagram. Gõ vào tên của
biểu đồ.
5. Click vào icon của lớp ( ) sau đó click vào biểu đồ
6. Trong lúc ký hiệu lớp còn được chọn nhập tên lớp là Item
7. Double-click vào ký hiệu lớp rồi chọn stereotype là <<entity>>. Sau đó chọn tab Attributes. Right-click
và chọn menu Insert để thêm vào 2 thuộc tính name, code. Chú ý có thể chỉ ra kiểu của thuộc tính.
8. Lặp lại các bước 5-7 để tạo ra lớp Book, Magazine và Video
9. Click vào icon (generalization) và đưa chuột vào biểu đồ.
10. Click vào ký hiệu của lớp Book. Giữ chuột và kéo đến lớp Item.
11. Lặp lại các bước 10-11 đối với lớp Magazine và Video.
12. Làm tương tự các bước 5-11 để tạo ra một biểu đồ lớp cho package Borrow chứa các lớp Signup, Loan,
Reservation và BorrowerInformation.
13. Right-click vào icon của package Interface và chọn menu New | Class Diagram. Gõ vào tên của biểu đồ.
14. Click vào icon của lớp ( ) sau đó click vào biểu đồ
15. Trong lúc ký hiệu lớp còn được chọn nhập tên lớp là LoginForm
16. Double-click vào ký hiệu lớp rồi chọn stereotype là <<boundary>>.
17. Lặp lại các bước 14-16 để tạo ra các lớp BorrowForm, ReturnForm, SearchForm, ManageLibForm và
ManageBorrowerForm.
18. Click vào ký hiệu của quan hệ dependency và đưa vào biểu đồ.
19. Click vào lớp LoginForm và kéo đến lớp BorrowForm. Đồng thời đặt stereotype cho quan hệ này là
<<instantiate>>. Làm tương tự đối với các lớp ReturnForm, SearchForm, ManageLibForm và
ManageBorrowerForm.
20. Click vào Interface icon ( )
21. Click vào biểu đồ
22. Trong lúc ký hiệu được chọn nhập tên giao diện là Database
23. Click vào icon của quan hệ dependency

Hướng dẫn thực hành UML trên Rational Rose– Trang 5


24. Click vào ký hiệu của BorrowForm và kéo đến ký hiệu của Database, đồng thời đặt stereotype là
<<call>>.
25. Làm tương tự đối với các lớp ReturnForm, SearchForm, ManageLibForm và ManageBorrowerForm.
26. Có thể click vào mỗi ký hiệu của class hay package và kéo để sắp xếp lại biểu đồ cho hợp lý hơn. Hoặc
có thể sử dụng chức năng sắp xếp tự động Tool | Layout Diagram.

Buổi thứ ba
Mục tiêu
 Xây dựng biểu đồ tuần tự, cộng tác, hoạt động
 Hoàn tất các lược đồ lớp

Trình tự thực hiện

Xây dựng biểu đồ tuần tự

Phương pháp: Lược đồ tuần tự giúp cụ thể hoá các use-case. Nó là một sự chuyển thể các sự kiện nối tiếp
nhau trong các use-case trở thành một chuỗi các thông điệp gửi cho các đối tượng. Điều quan trọng là phải nhận
diện ra những đối tượng nào liên quan đến một use-case cụ thể. Mỗi use-case có thể có nhiều lược đồ tuần tự
dạng cụ thể. Mỗi cái tương ứng với một kịch bản nào đó và luôn luôn bắt đầu bằng một kích thích từ phía actor.

Để xây dựng lược đồ tuần tự chúng ta xem xét một hoàn cảnh cụ thể của use-case borrows như sau: Người mượn
kiếm được các tên sách và lấy các sách này đến quản thư cùng với mã thư viện của mình. Quản thư sau bước
kiểm tra quyền bằng tên và mật mã sẽ chọn chức năng cho mượn. Cửa sổ BorrowerForm được mở ra. Trên cửa
sổ đó quản thư nhập vào mã số người mượn và mã số item muốn mượn. Thông qua database, chương trình kiểm
tra xem item đó có ai đang giữ không và người muốn mượn phải là người đặt chỗ sớm nhất. Nếu kiểm tra đúng
thì chương trình sẽ xóa đặt chỗ cho người mượn đồng thời tạo thêm một nợ mới trong database.

Xét use-case renews. Người mượn đến gặp quản thư và yêu cầu gia hạn một item. Quản thư sau bước kiểm tra
quyền bằng tên và mật mã sẽ chọn chức năng gia hạn. Trên cửa sổ BorrowerForm người quản thư nhập mã số
người mượn và cửa sổ sẽ hiển thị những item mà anh ta đang giữ trong một list box. Người quản thư chọn một
item để gia hạn. Chương trình kiểm tra xem có độc giả nào đặt chỗ không. Nếu không có ai đặt chỗ thì người
mượn được tiếp tục giữ item đó. Chương trình cập nhật ngày trả cho nợ trước đó và tạo ra một nợ mới trong
database.

Thực hiện:
1. Right-click vào use-case borrows
2. Chọn menu New | Sequence Diagram
3. Trong lúc biểu đồ còn được chọn nhập tên là Borrow a reserved item
4. Double-click lên biểu đồ tuần tự này để mở biểu đồ
5. Click vào icon của Librarian trong use-case view và kéo vào biểu đồ tuần tự
6. Click vào icon của LoginForm, BorrowerForm, Database, Loan trong logical view và kéo vào biểu đồ
tuần tự.
7. Có thể đặt tên cho actor biểu đồ tuần tự và các đối tượng trong biểu đồ tuần tự bằng cách double-click
vào icon của nó rồi gõ tên vào.
8. Click vào icon của thông điệp (hình mũi tên) trên thanh công cụ và đưa vào biểu đồ.
9. Click vào đường chấm chấm biểu diễn actor Librarian và kéo đến đường biểu diễn đối tượng
LoginForm.
10. Double-click vào mũi tên và đặt tên cho nó là library code.
11. Click vào icon của thông điệp (hình mũi tên) trên thanh công cụ và đưa vào biểu đồ.
12. Click vào thanh chữ nhật của Librarian và kéo đến đường biểu diễn đối tượng LoginForm.
13. Double-click vào mũi tên và đặt tên cho nó là submit.

Hướng dẫn thực hành UML trên Rational Rose– Trang 6


14. Tiếp tục thực hiện cho thông điệp borrow command từ Librarian đến LoginForm, thông điệp “activate
and show” từ LoginForm đến BorrowerForm, thông điệp “enter borrower's ID and item code” từ
Librarian đến BorrowerForm, thông điệp isItemAvailable( iCode ) từ BorrowerForm đến Database,
thông điệp isReservationMaker( bID, iCode ) từ BorrowerForm đến Database, thông điệp “loan := new(
bID, iCode )” từ BorrowerForm đến Loan, thông điệp addLoan(loan) từ BorrowerForm đến Database
và thông điệp removeReservation( bID, iCode ) từ BorrowerForm đến Database.

 Sinh viên thực hiện: thiết lập các biểu đồ tuần tự khác cho renews và các use-case khác.

 Chú ý: công cụ Rational Rose có khả năng biến đổi một lược đồ tuần tự trở thành lược đồ cộng tác tương
ứng ⇒ Nhấn F5 khi đang thao tác với lược đồ tuần tự.

Xây dựng biểu đồ hoạt động


Phương pháp: Thiết lập lược đồ hoạt động cho từng lớp để mô tả sự thực thi của một tác vụ. Mỗi lược đồ hoạt
động có thể có vài lớp tham gia, mỗi lớp được biểu diễn trong một “đường bơi”.

Xét tác vụ của lớp BorrowerForm tương ứng với thông điệp “enter borrower's ID and item code”. Như đã mô tả
trong lược đồ tuần tự, lớp BorrowerForm sẽ tương tác với lớp Database để cập nhật cơ sở dữ liệu cho nợ mới
(sách, tạp chí hoặc đĩa CD). Một số hành động được miêu tả bằng sự thực thi (thanh chữ nhật) trong biểu đồ tuần
tự. Trong lược đồ hoạt động chúng ta có thể phân rã những sự thực thi đó thành những hành động nhỏ đồng thời
mô tả được tất cả các rẽ nhánh có thể có thông qua các điều kiện.

Cụ thể, để đáp ứng lại thông điệp “enter borrower's ID and item code”, trước hết lớp BorrowerForm sẽ đọc mã
số độc giả và mã số item cần mượn. Sau đó nó sẽ yêu cầu lớp Database kiểm tra xem item muốn mượn sẵn có
trong thư viện hay không. Nếu item đó đã có độc giả khác mượn thì tiếp tục kiểm tra xem người muốn mượn có
phải là người đăng ký sớm nhất hay không. Yêu cầu của độc giả được giải quyết nếu như item chưa có ai khác
mượn hoặc độc giả đó là người đăng ký đầu tiên. Khi đó lớp BorrowerForm tạo ra thông tin nợ mới và thêm vào
cơ sở dữ liệu rồi hiển thị thông báo thành công. Trường hợp không giải quyết được cho độc giả thì lớp
BorrowerForm sẽ tạo ra thông báo Reject.

Như vậy, có hai lớp tham gia vào lược độ hoạt động này: BorrowerForm và Database. Lớp BorrowerForm thực
hiện các hành động: đọc mã số độc giả và item, tạo ra nợ mới, hiển thị thông báo thành công hoặc thất bại. Lớp
Database thực hiện các hành động: kiểm tra xem item có trong thư viện hay không, kiểm tra xem độc giả đúng là
người đăng ký đầu tiên hay không, xoá đặt chỗ và thêm nợ mới.

Thực hiện:
1. Right-click vào lớp BorrowForm
2. Chọn New | Activity Diagram
3. Trong lúc biểu đồ còn được chọn nhập tên là borrow
4. Click vào biểu tượng của “đường bơi” (nằm cuối thanh công cụ) và đưa vào biểu đồ
5. Click vào cạnh trên của biểu đồ để tạo ra “đường bơi”, nó sẽ có tên NewSwimlane
6. Double-click vào “đường bơi” NewSwimlane để gõ vào tên và chọn class cho nó là BorrowForm.
7. Lặp lại bước 4-6 để tạo ra “đường bơi” biểu diễn lớp Database
8. Click vào biểu tượng của trạng thái bắt đầu () và click vào biểu đồ
9. Xoá tên mặc định NewState của trạng thái bắt đầu
10. Click vào biểu tượng hành động (hình chữ nhật cạnh tròn) và đưa vào biểu đồ
11. Click vào biểu đồ, trong lúc hành động được chọn gõ vào tên “Read borrower’s ID and item code”. Chú
ý sắp xếp hành động này và và trạng thái bắt đầu nằm trong “đường bơi” :BorrowForm.
12. Lặp lại các bước 10-11 để tạo ra các hành động “Create a loan”, “Show successful message”, “Show
reject message” nằm trong “đường bơi” :BorrowForm; các hành động “Look for item”, “Look for the
first reservation”, “Remove reservation”, “Add new loan” nằm trong “đường bơi” :Database.
13. Click vào biểu tượng của trạng thái kết thúc và click vào biểu đồ trong “đường bơi” :BorrowForm
14. Xoá tên mặc định NewState của trạng thái kết thúc
15. Click vào biểu tượng của sự dịch chuyển (hình mũi tên)
16. Click vào trạng thái bắt đầu trên biểu đồ và kéo đến hành động “Read borrower’s ID and item code”
17. Lặp lại các bước 15-16 để tạo ra các dịch chuyển: từ “Remove reservation” đến “Create a loan”, từ
“Create a loan” đến “Add new loan”, từ “Add new loan” đến “Show successful message”
Hướng dẫn thực hành UML trên Rational Rose– Trang 7
18. Click vào biểu tượng của rẽ nhánh (hình thoi) trên thanh công cụ và click vào đường bơi :Database
19. Thực hiện tương tự bước 15-16 để tạo ra các dịch chuyển: từ hành động “Look for item” đến nút rẽ
nhánh vừa tạo, từ nút rẽ nhánh đến “Create a loan”, từ nút rẽ nhánh đến “Look for the first reservation”
20. Double-click vào mũi tên của dịch chuyển từ nút rẽ nhánh đến “Create a loan” rồi chọn tab Detail.
21. Đặt guard condition cho dịch chuyển là available
22. Thực hiện tương tự bước 20-21 để đặt guard condition cho dịch chuyển từ nút rẽ nhánh đến “Look for
the first reservation” là unavailable
23. Click vào biểu tượng của rẽ nhánh (hình thoi) trên thanh công cụ và click vào đường bơi :Database để
tạo ra rẽ nhánh khác.
24. Thực hiện tương tự bước 15-16 để tạo ra các dịch chuyển: từ hành động “Look for the first reservation”
đến nút rẽ nhánh vừa tạo, từ nút rẽ nhánh đến “Remove reservation”, từ nút rẽ nhánh đến “Show reject
message”
25. Thực hiện tương tự bước 20-21 để đặt guard condition cho dịch chuyển từ nút rẽ nhánh đến “Remove
reservation” là borrower = maker (độc giả muốn mượn đúng là người đã đặt chỗ đầu tiên) và đặt guard
condition cho dịch chuyển từ nút rẽ nhánh đến “Show reject message” là borrower <> maker
26. Click vào biểu tượng của rẽ nhánh (hình thoi) trên thanh công cụ và click vào “đường bơi” :Borrower
để tạo ra nút gom các đường dịch chuyển.
27. Thực hiện tương tự bước 15-16 để tạo ra các dịch chuyển: từ hành động “Show successful message”
đến nút gom vừa tạo, từ “Show reject message” đến nút gom, từ nút gom đến trạng thái kết thúc
(Chú ý sắp xếp các hành động từ trên xuống dưới theo thứ tự xuất hiện của chúng)

Hoàn tất các lược đồ lớp


Phương pháp: Ta có thể biến đổi các thông điệp trong biểu đồ tuần tự thành các tác vụ trong lớp sau khi gán
các lớp vào các đối tượng bằng cách click chuột phải lên từng thông điệp và gán tên tác vụ. Nếu tên tác vụ chưa
có, chọn menu <new operation> ta sẽ tạo tác vụ mới cho lớp này.

Trong quá trình thiết lập biểu đồ tuần tự, một số đối tượng/lớp khác có thể được thêm vào, đặc biệt là các lớp
biên. Các tác vụ được bổ sung cho các lớp biên và điều khiển. Chúng ta sẽ tinh chế các các lớp đã nhận diện
trong lúc phân tích để làm rõ thuộc tính và các quan hệ giữa chúng.

Về mặt giao diện chương trình sẽ có một số cửa sổ chính tương ứng với các lớp biên: cửa sổ để kiểm tra quyền
thủ thư tương ứng với lớp LoginForm, cửa sổ để thủ thư thực hiện các thao tác trả sách, mượn sách, gia hạn sách
tương ứng với lớp BorrowerForm, cửa sổ để thủ thư quản lý người mượn tương ứng với lớp
ManageBorrowerForm, cửa sổ để thủ thư quản lý các item tương ứng với lớp ManageLibForm và cửa sổ để
người mượn thực hiện các chức năng tìm kiếm, đặt chỗ, xóa đặt chỗ tương ứng với lớp SearchForm.

Các bảng được lưu trong cơ sở dữ liệu bao gồm: một bảng chứa thông tin về các Borrower, một bảng chứa thông
tin về các item có trong thư viện, một bảng lưu lại tất cả các lần mượn từ trước đến giờ (để Librarian có thể thực
hiện chức năng thống kê) và một bảng lưu các đặt chỗ hiện thời. Như vậy chúng ta bỏ đi thuộc tính loans và
reservations của lớp BorrowerInformation. Bổ sung thêm thuộc tính BorrowDate và ReturnDate cho lớp Loan để
lưu lại ngày mượn và ngày trả. Quan hệ giữa lớp BorrowerInformation và Item là quan hệ liên kết 2 chiều, bậc ở
cả hai bên là 0..*. Chú ý lớp Signup trở thành association class cho quan hệ liên kết đó.

Thực hiện:
1. Trong các lược đồ lớp của package Library artifact và Borrow, tạo ra quan hệ liên kết 2 chiều giữa Item
và BorrowerInformation.
2. Click vào biểu tượng của link attribute (đoạn thẳng rời nét nối vào đoạn thẳng liền nét) trên thanh công
cụ và đưa vào biểu đồ.
3. Click vào đoạn thẳng biểu diễn quan hệ liên kết giữa Item và BorrowerInformation rồi kéo đến biểu
tượng của Signup.

Hướng dẫn thực hành UML trên Rational Rose– Trang 8


 Sinh viên thực hiện: Thông qua các lược đồ hãy nhận diện đầy đủ tác vụ của lớp Database
và các lớp biên rồi bổ sung vào các lược đồ lớp.

Buổi thứ tư
Mục tiêu
 Xây dựng lược đồ các thành phần (component diagram)
 Sinh mã
 Lập tài liệu

Trình tự thực hiện

Xây dựng lược đồ các thành phần (component diagram)

Phương pháp: Lược đồ thành phần thể hiện các thành phần thuộc nhiều loại: file mã nguồn, chương trình thực
thi, thư viện liên kết tĩnh/động, applet,… Sự phân loại này thể hiện qua các stereotype của thành phần. Các thành
phần mã nguồn sẽ được gán một số lớp trong Logical view. Chúng thường có quan hệ phụ thuộc với nhau. Các
thành phần thực thi cũng có quan hệ phụ thuộc với thư viện liên kết tĩnh/động. Như vậy thông thường chúng ta
sẽ tạo ra 2 lược đồ thành phần:

 Lược đồ các thành phần mã nguồn (tương ứng với thời gian biên dịch)
 Lược đồ các thành phần thực thi và thư viện (tương ứng với thời gian thực thi)

Các lược đồ thành phần này được thiết lập trong giai đoạn hiện thực, do đó chúng ta phải xác định rõ ngôn ngữ
lập trình cũng như công nghệ được áp dụng. Chẳng hạn chọn ngôn ngữ Java (nên đặt ngôn ngữ mặc định ngay từ
đầu là Java) và công nghệ JavaServlet.

Chương trình bao gồm 2 servlet: LibServ, StatServ và 1 applet CheckReg. LibServ là servlet chính được nhúng
vào trang Index.shtml. StatServ thực hiện chức năng thống kê. CheckReg có chức năng kiểm tra sơ bộ đăng ký
môn học của sinh viên.

Chúng ta đã phân chia các package trong logical-view rồi, do đó có thể sinh mã trực tiếp từ các lớp. Các package
đó sẽ được ánh xạ trở thành các package tương ứng trong mã nguồn Java. Do đó không cần thiết tạo ra các thành
phần mã nguồn. Đối với ngôn ngữ C++ nên tạo ra các thành phần package body và package specification rồi gán
các lớp cho chúng.

Thực hiện:
1. Click vào dấu + của component-view rồi double-click vào Main
2. Click vào icon của thành thành phần trên thanh công cụ hoặc chọn menu Tools | Create | Generic
Component rồi đưa vào biểu đồ
3. Click vào biểu đồ. Trong lúc ký hiệu còn được chọn nhập tên Index.shtml
4. Right-click vào Index.shtml trên biểu đồ và chọn menu Open Standard Specification…
5. Trong dialog xuất hiện đặt stereotype là <<page>>
6. Thực hiện tương tự bước 2-5 để tạo ra: thành phần LibServ có stereotype là <<servlet>>, thành phần
StatServ có stereotype là <<servlet>> và thành phần CheckReg có stereotype là <<Applet>>
7. Click vào ký hiệu của quan hệ phụ thuộc (mũi tên rời nét) hoặc chọn menu Tools | Create | Dependency
rồi đưa vào biểu đồ.
8. Click vào ký hiệu của Index.shtml rồi kéo đến LibServ
9. Thực hiện tương tự bước 7-8 để tạo ra các phụ thuộc khác: từ LibServ đến CheckReg, từ LibServ đến
StatServ

Hướng dẫn thực hành UML trên Rational Rose– Trang 9


Sinh mã

Phương pháp: Có thể sinh mã Java cho các lớp trong logical-view. Chú ý đặt đường dẫn đến thư mục chứa mã
nguồn Java

Thực hiện:
1. Chọn menu Tools | Java | Project Specification…
2. Trong dialog mới xuất hiện nhấn vào nút bên trái cùng trong phần Directories để thêm vào đường dẫn
đến thư mục chứa mã nguồn Java. Có thể chọn thư mục trực tiếp hoặc sử dụng symbol đã tạo ra trong
chức năng File | Edit Path Map
3. Right-click vào ký hiệu của lớp Item và chọn menu Open Standard Specification…
4. Chọn Export Control là Protected. Nếu muốn đặt lớp Item là abstract thì vào tab Detail rồi đánh dấu
vào nút Abstract.
5. Right-click vào ký hiệu của lớp Item và chọn menu Java | Generate Java. Trong dialog xuất hiện chọn
file rồi nhấn Map. Nếu có lỗi xảy ra mở cửa sổ Log để tìm nguyên nhân.
6. Thực hiện tương tự bước 3-5 để sinh mã cho các lớp khác.

Lập tài liệu


Thực hiện:
1. Chọn menu Report | Documentation Report
2. Trong dialog mới xuất hiện có thể chọn lập tài liệu về logical-view hay component-view và thay đổi
đường dẫn đến file Word sẽ tạo ra…

Hướng dẫn thực hành UML trên Rational Rose– Trang 10

You might also like