You are on page 1of 137

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BÀI TẬP LỚN


PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG
Chủ đề: Hệ thống tra cứu xe buýt và mua vé online BusHN

Lớp: INT3110E_21
Nhóm: 8
Trương Thị Kiều Anh
Lê Thị Bích Duyên
Nguyễn Thị Nhung
Đinh Ngọc Vân
Nguyễn Thị Hồng Vân

1
Mục lục

1. Đặc tả yêu cầu 5


1.1 Đặt vấn đề 6
1.2 Bảng thuật ngữ 6
1.3 Đặc tả bổ sung 8
1.4 Sơ đồ Use Case 8
1.5 Đặc tả Use Case 11
1.5.1 Tra cứu thông tin xe buýt 11
1.5.2. Chọn địa điểm 13
1.5.3 Tìm đường 15
1.5.4 Theo dõi xe tới điểm dừng 18
1.5.5 Đăng ký tài khoản 21
1.5.6 Đăng nhập 24
1.5.7 Đăng ký làm vé tháng 26
1.5.8 Mua tem tháng 28
1.5.9 Thanh toán 31
1.5.10 Chọn ngôn ngữ 33
2. Phân tích hệ thống BusHanoi 35
2.1 Phân tích kiến trúc 35
2.1.1 Key abstraction 35
2.1.2 Thành phần cấp cao và sự phụ thuộc 36
2.2 Phân tích Use case 37
2.2.1 Biểu đồ tuần tự các use case 37
2.2.1.1 Tra cứu thông tin xe buýt 37
2.2.1.2 Chọn địa điểm 39
2.2.1.3 Tìm đường 41
2
2.2.1.4 Theo dõi xe tới điểm dừng 42
2.2.1.5 Đăng ký tài khoản 44
2.2.1.6 Đăng nhập 45
2.2.1.7 Đăng ký làm vé tháng 48
2.2.1.8 Mua tem tháng 48
2.2.1.9 Thanh toán 51
2.2.1.10 Chọn ngôn ngữ 52
2.2.2 Biểu đồ lớp pha phân tích 52
2.2.2.1 Tra cứu thông tin xe buýt 53
2.2.2.2 Chọn địa điểm 54
2.2.2.3 Tìm đường 55
2.2.2.4 Theo dõi xe tới điểm dừng 55
2.2.2.5 Đăng ký tài khoản 56
2.2.2.6 Đăng nhập 57
2.2.2.7 Đăng ký làm vé tháng 59
2.2.2.8 Mua tem tháng 60
2.2.2.9 Thanh toán 61
2.2.2.10 Chọn ngôn ngữ 62
2.2.3 Ánh xạ từ lớp phân tích tới cơ chế phân tích 62
3. Thiết kế hệ thống BusHanoi 64
3.1 Xác định các thành phần cần thiết kế 64
3.1.1. Subsystem Context 64
3.1.2 Analysis-to-Design-to-Implementation Mechanisms Map 68
3.1.2.1. Cơ chế Persistency - ObjectStore OODBMS 69
3.1.2.2. Cơ chế Distribution 74
3.1.2.3. Cơ chế Security 76
3.1.3 Analysis-Class-to-Design-Element Map 78
3
3.1.4 Design-Element-to-Owning-Package Map 81
3.1.5 Packages and Their Dependency 83
3.2. Mô tả kiến trúc thực thi 85
3.3. Mô tả phân tán 86
3.4. Thiết kế Use Case 87
3.4.1. Thiết kế biểu đồ tuần tự 87
3.4.1.1 Tra cứu thông tin xe buýt 88
3.4.1.2 Chọn địa điểm 89
3.4.1.3 Tìm đường 91
3.4.1.4 Theo dõi xe tới điểm dừng 92
3.4.1.5 Đăng ký tài khoản 94
3.4.1.6 Đăng nhập 95
3.4.1.7 Đăng ký làm vé tháng 98
3.4.1.8 Mua tem tháng 99
3.4.1.9 Thanh toán 101
3.4.1.10 Chọn ngôn ngữ 102
3.4.2. Thiết kế biểu đồ lớp 103
3.4.2.1. Tra cứu thông tin xe buýt 103
3.4.2.2. Chọn địa điểm 104
3.4.2.3. Tìm đường 105
3.4.2.4. Theo dõi xe tới điểm dừng 105
3.4.2.5. Đăng ký tài khoản 106
3.4.2.6. Đăng nhập 106
3.4.2.7. Đăng ký làm vé tháng 108
3.4.2.8. Mua tem tháng 109
3.4.2.9. Thanh toán 111
3.4.2.9. Chọn ngôn ngữ 112
4
3.5. Thiết kế Hệ thống con 113
3.5.1. Bus Info Subsystem 113
3.5.2. User Subsystem 119
3.5.3. Monthly Ticket System 123
3.6. Thiết kế lớp 130
3.7. Thiết kế Cơ sở dữ liệu 136
Phụ lục 136
Bảng phân chia công việc 136

5
1. Đặc tả yêu cầu

1.1 Đặt vấn đề

Hiện nay, ở nước ta, các phương tiện công cộng, đặc biệt là xe buýt, đã dần trở
nên phổ biến và được khuyến khích sử dụng thay thế cho các phương tiện cá nhân.
Di chuyển bằng xe buýt giúp giảm tắc đường, giảm tai nạn giao thông và còn giúp
bảo vệ môi trường, tiết kiệm năng lượng, giá cả cũng rất phải chăng. Tuy nhiên, hầu
hết những người mong muốn sử dụng xe buýt đều cảm thấy khó khăn và bất tiện vì
họ không biết phải tìm xe nào để đi khi mà có quá nhiều tuyến buýt khác nhau. Việc
phải chờ đợi ở các điểm dừng xe buýt khiến mọi người dễ mất kiên nhẫn vì không
biết khi nào xe sẽ đến, khó sắp xếp được thời gian, các điểm bán vé tháng cũng khó
tìm kiếm và tốn thời gian di chuyển. Việc sử dụng xe buýt với những hành khách
nước ngoài đến Việt Nam còn khó khăn hơn khi bản thân còn gặp rào cản về ngôn
ngữ, cộng thêm họ không hiểu rõ hệ thống giao thông đi lại của nước ta.

Do đó, chúng tôi và công ty vận tải Hà Nội - Transerco đã hợp tác để xây dựng,
phát triển hệ thống tra cứu xe buýt và bán tem vé tháng cho thành phố Hà Nội, có
tên là ứng dụng "BusHN" với mong muốn áp dụng công nghệ thông tin để giúp cho
việc sử dụng xe buýt trở nên dễ dàng và tiện lợi hơn, từ đó khuyến khích, thúc đẩy
mọi người tích cực sử dụng xe buýt làm phương tiện di chuyển trong thành phố.

BusHN là một ứng dụng di động có thể chạy trên hai nền tảng phổ biến là IOS
và Android, tích hợp bản đồ sẵn có của Google Map. Với chiếc smartphone có kết
nối internet, người dùng có thể tìm các chuyến xe phù hợp, tra cứu mọi thông tin về
dịch vụ xe buýt của thành phố, mua tem và đăng ký vé tháng, thanh toán online trên
ứng dụng mà không cần phải ra tận điểm bán.

Đối tượng người dùng của hệ thống là bất cứ ai sử dụng smartphone có khả năng
tải về ứng dụng và có mong muốn sử dụng xe buýt làm phương tiện đi lại. BusHN
cung cấp 2 ngôn ngữ chính là Tiếng Việt, Tiếng Anh và cho phép có thể mở rộng
thêm nhiều ngôn ngữ.

1.2 Bảng thuật ngữ

Bảng thuật ngữ xác định các thuật ngữ cụ thể cho ứng dụng BusHN, giải thích
các thuật ngữ người đọc có thể không biết trong mô tả ca sử dụng và các tài liệu
khác.
Người dùng:

6
Là người sử dụng hệ thống, có thể có hoặc không có tài khoản của hệ thống. Là
người sử dụng các tính năng của hệ thống.
Hệ quản trị cơ sở dữ liệu:
Là một gói phần mềm được thiết kế để xác định, thao tác, truy xuất và quản lý
dữ liệu trong cơ sở dữ liệu. Hệ quản trị cơ sở dữ liệu quản lý
Cơ sở dữ liệu:
Là một tập hợp các dữ liệu có tổ chức được quản lý bằng hệ quản trị cơ sở dữ
liệu. Trong hệ thống có ba cơ sở dữ liệu bao gồm cơ sở dữ liệu người dùng, cơ sở
dữ liệu nhà xe, cơ sở dữ liệu thông tin
Google Map API:
Là API bản đồ được tích hợp cho hệ thống, có chức năng định vị và xác định các
tuyến đường.
Hệ thống thanh toán:
Là hệ thống con có thể truy cập, truy vấn và xử lý cơ sở dữ liệu thanh toán và hóa
đơn.
Hệ thống quản lý vé tháng:
Là hệ thống con có thể truy cập, truy vấn và xử lý cơ sở dữ liệu vé tháng.
Xe buýt:
Là phương tiện công cộng vận chuyển khách hàng được sử dụng rộng rãi với chi
phí đi rẻ, dành cho mọi đối tượng.
Tuyến xe buýt:
Là tuyến vận tải hành khách, xác định bởi hành trình, điểm đầu, điểm cuối, được
phê duyệt bởi các cơ quan có thẩm quyền. Có mạng lưới tuyến xe buýt dành đặc.
Tuyến xe buýt được vận hành bởi xe mang số hiệu tương ứng với tuyến xe đó.
Điểm dừng:
Là các điểm xác định trên mỗi tuyến xe buýt, là vị trí xe buýt sẽ dừng để nhận
khách và trả khách.
Vé tháng:
Là vật khi người dùng đăng ký vé tháng, người dùng sẽ dán tem tháng để đi xe
bus không cần mua vé lẻ.
Tem tháng:

7
Là vật được dán trên thẻ vé tháng, hành khách sử dụng thẻ vé tháng đã có dán
tem để di chuyển không giới hạn bằng xe buýt trong một tháng. Tem tháng có giá
thành được cố định khi mua vé tháng, có hiệu lực trong tháng được in trên tem.

1.3 Đặc tả bổ sung

Mục tiêu
Mục tiêu của tài liệu này là mô tả các yêu cầu của Hệ thống tìm kiếm tra cứu
thông tin xe buýt, là tài liệu được cấp cho khách hàng phê duyệt và làm tài liệu cho
việc thiết kế, triển khai và kiểm thử hệ thống.
Phạm vi
Hệ thống có thể triển khai với mọi hãng xe buýt tại Hà Nội
Tính khả dụng
Hệ thống sẽ dễ dàng tương tác, các tác vụ xử lý nhanh, hoạt động trên cả hệ điều
hành Android và IOS. Hệ thống yêu cầu kết nối mạng và đăng nhập khi đăng ký và
mua tem vé tháng.
Tính tin cậy
Hệ thống có thể sử dụng 24/7, đáp ứng được tần suất truy cập cao.
Tính bảo mật
Hệ thống có khả năng bảo mật, ngăn chặn các hành vi truy cập trái phép làm hỏng
hệ thổng, thông tin người dùng cũng được bảo mật.
Ràng buộc thiết kế
Hệ thống cung cấp giao diện cho điện thoại thông minh.

1.4 Sơ đồ Use Case

8
Biểu đồ 1.4.1 Biểu đồ Use-Case về tác nhân và sự phụ thuộc lẫn nhau giữa các tác nhân

Biểu đồ 1.4.2 Biểu đồ Use-Case dưới góc nhìn của Người dùng

9
Biểu đồ 1.4.3 Biểu đồ Use-Case về sự tương tác của các tác nhân với thành phần khác

10
Biểu đồ 1.4.4 Biểu đồ Use-Case về sự tương tác và phụ thuộc của các Use-Case

1.5 Đặc tả Use Case

1.5.1 Tra cứu thông tin xe buýt

11
Biểu đồ 1.5.1 Biểu đồ hoạt động ca sử dụng Tra cứu thông tin xe buýt

Mô tả:
Người dùng sử dụng chức năng tra cứu thông tin để biết được thông tin chi tiết về
tuyến buýt và tin tức nhà xe

Các tác nhân: Người dùng

Điều kiện kích hoạt ca sử dụng: Người dùng muốn tra cứu thông tin
Tiền điều kiện: Thiết bị được kết nối internet

Hậu điều kiện: Không có

12
Các luồng sự kiện:
Luồng cơ bản:

1. Người dùng truy cập vào ứng dụng, phần menu và chọn chức năng tra cứu
thông tin
2. Người dùng chọn tra cứu một trong hai thông tin sau:
2.1. Lộ trình tuyến buýt:
2.1.1. Người dùng ấn vào thanh tìm kiếm gõ số tuyến xe hoặc tên tuyến xe cần
tìm.
2.1.2. Sau khi chọn được tuyến xe cần tra cứu, giao diện sẽ hiển thị 3 mục: giờ
xuất bến, điểm dừng xe đi qua và mục thông tin chi tiết được hiển thị theo chiều
đi và chiều về của xe.
2.2. Tin tức nhà xe:
2.2.1. Khi chọn thẻ tin tức nhà xe, hệ thống sẽ cung cấp danh mục các tin tức
trong 6 tháng gần đây nhất
2.2.2. Người dùng ấn vào tin tức bất kì để đọc về các thông báo về điều chỉnh và
các tin tức khác của nhà xe

Luồng thay thế:

2.1.1a. Người dùng có thể trực tiếp chọn tuyến ở trên danh sách hiện sẵn.
Luồng ngoại lệ:
2.1.1e. Hệ thống không tìm được kết quả phù hợp với yêu cầu tìm kiếm, thông
báo: "Không có tuyến buýt nào phù hợp với từ khóa bạn vừa nhập"

Business rules:
Thông tin lộ trình tuyến buýt là chính xác, do nhà xe cung cấp

Yêu cầu phi chức năng: Không có

Extension point: Không có

1.5.2. Chọn địa điểm

13
Biểu đồ 1.5.2 Biểu đồ hoạt động ca sử dụng Chọn địa điểm

Mô tả:
Người dùng sử dụng chức năng chọn điểm dừng để tìm vị trí mình muốn biết thông
tin.

Các tác nhân: Người dùng

Điều kiện kích hoạt ca sử dụng: Người dùng muốn chọn địa điểm tùy vào mục
đích

Tiền điều kiện: Thiết bị của người dùng được kết nối internet

Hậu điều kiện: Không có

Các luồng sự kiện:


Luồng cơ bản:

14
1. Người dùng truy cập vào ứng dụng.
2. Người dùng có thể tìm kiếm bằng một trong 2 cách:
Tìm kiếm vị trí/ điểm dừng trên bản đồ:
2.1. Tại giao diện, hệ thống cung cấp cho người dùng bản đồ xung quanh nơi
người dùng đứng. Người dùng chọn vị trí hoặc điểm dừng cần tìm trên bản đồ.
Tìm kiếm vị trí/ điểm dừng dựa trên thanh công cụ:
2.2. Người dùng điền điểm dừng hoặc vị trí vào thanh công cụ.
3.2. Hệ thống đưa ra vị trí hoặc điểm dừng phù hợp với yêu cầu của người dùng.
4.2. Người dùng chọn điểm dừng hoặc vị trí phù hợp.
Luồng thay thế: Không có
Luồng ngoại lệ:
2.2.e. Hệ thống không tìm được điểm dừng phù hợp, thông báo "Không có điểm
dừng nào phù hợp với từ khóa bạn vừa nhập"

Business rules:
- Vị trí dựa trên bản đồ thực tế của thành phố.
- Người dùng phải cung cấp vị trí của mình cho ứng dụng.

Yêu cầu phi chức năng:


- Xác định vị trí thực của người dùng trên bản đồ.

Etension point:
Xác định vị trí của mình trên bản đồ
2.3. Người dùng tìm vị trí của mình trên bản đồ dựa vào định vị của hệ thống.
3.3. Người dùng tìm vị trí, điểm dừng dựa vào vị trí hiện tại của bản thân.

1.5.3 Tìm đường

15
1.5.3. Biểu đồ hoạt động ca sử dụng Tìm đường

Mô tả:
Người dùng sử dụng chức năng tìm đường để được chỉ dẫn để đi từ địa điểm này
đến địa điểm kia thì phải đi những chuyến xe nào

Các tác nhân: Người dùng, Google Map, hệ thống

Điều kiện kích hoạt ca sử dụng:


Người dùng muốn tìm đường đi bằng xe buýt

Tiền điều kiện:


Thiết bị được kết nối internet

16
Hậu điều kiện: Không có

Các luồng sự kiện:


Luồng cơ bản:

1. Ở giao diện chính của ứng dụng, người dùng chọn thẻ tìm đường.
2. Người dùng chọn điểm đi và điểm đến trong use case "chọn địa điểm"
3. Sau khi chọn xong, người dùng ấn vào nút tìm đường
4. Hệ thống sẽ cung cấp danh sách kết quả các chuyến đi sắp xếp theo thứ tự độ
dài tổng quãng đường từ ngắn nhất đến dài nhất. Mỗi kết quả sẽ cung cấp 4 thông
tin gồm: thứ tự bắt xe, tổng quãng đường, độ dài đường phải đi bộ, số lần chuyển
tuyến
5. Người dùng chọn chuyến phù hợp với mình trong danh sách kết quả, hệ thống
sẽ cung cấp thông tin chi tiết lộ trình và bản đồ để theo dõi vị trí của người dùng
so với đường đi được chỉ dẫn.

Luồng thay thế: Không có


Luồng ngoại lệ:

17
3e. Nếu điểm đến chưa được chọn, hệ thống sẽ thông báo "Không có vị trí của
địa điểm kết thúc".
4.1e. Nếu hai điểm đến và đi quá gần nhau trong vòng 200m, hệ thống sẽ thông
báo: "Hai điểm bạn chọn quá gần để đi xe buýt".
4.2e. Nếu ít nhất một trong 2 điểm nằm ngoài thành phố Hà Nội, hệ thống sẽ
thông báo: "Hai điểm bạn chọn không nằm trong khu vực có dịch vụ xe buýt của
nhà xe. "
Business rules: Không có

Yêu cầu phi chức năng: Vị trí người dùng di chuyển phải ở thời gian thực

Extension point:
5a. Khi ở giao diện trang thông tin chi tiết lộ trình, người dùng chọn 1 điểm dừng
nơi phải chuyển tuyến trên lộ trình.
5b. Hệ thống sẽ đưa người dùng sang thẻ theo dõi xe cung cấp thông tin về các xe
sắp đến

1.5.4 Theo dõi xe tới điểm dừng


18
Biểu đồ 1.5.4 Biểu đồ hoạt động ca sử dụng Theo dõi xe tới điểm dừng

Mô tả:
Người dùng sử dụng chức năng theo dõi xe để tìm kiếm thông tin xe về tại điểm
dừng.
Các tác nhân: Người dùng

Điều kiện kích hoạt ca sử dụng:


Người dùng muốn chọn địa điểm tùy vào mục đích

Tiền điều kiện:

19
Thiết bị của người dùng được kết nối internet
Hậu điều kiện: Không có

Các luồng sự kiện:

Luồng cơ bản:
1. Người dùng chọn theo dõi xe trên giao diện ứng dụng.
2. Người dùng chọn điểm dừng cụ thể.
3. Sau khi chọn được điểm dừng, hệ thống cung cấp tất cả xe sắp đến cùng thời
gian sẽ đến điểm dừng gồm biển số xe, tốc độ di chuyển, khoảng cách tới điểm
dừng, thời gian tới điểm dừng.

Luồng thay thế: Không có


Luồng ngoại lệ:

2.2.e. Hệ thống không tìm được điểm dừng phù hợp, thông báo "Không có điểm
dừng nào phù hợp với từ khóa bạn vừa nhập"
3.2.e. Người dùng thoát ra khỏi giao diện Theo dõi xe.
20
3e. Nếu không có xe nào đang tới điểm dừng hiện tại thông báo "Không có xe
nào đang tới điểm dừng này"

Business rules:
Hệ thống theo dõi lộ trình của xe có vị trí cách điểm dừng lớn nhất 5 điểm dừng.

Yêu cầu phi chức năng:


Thông tin điểm dừng và xe bus dựa trên vị trí thực và thời gian thực của xe.

Extension point:

Chọn xe cụ thể để xem thông tin:


3.1. Tại giao diện của điểm dừng đang thể hiện, người dùng có thể chọn xe cụ thể
để xem chi tiết hành trình xe, vị trí hiện tại của xe trên bản đồ nếu có xe đang tới
điểm dừng.
4.1. Hệ thống thông báo khi xe đã tới điểm dừng
Xem thông tin các tuyến bus đi qua điểm dừng:
3.2. Hệ thống đưa ra danh sách các tuyến bus đi qua điểm dừng bao gồm thông tin
về lượt đi và lượt về

1.5.5 Đăng ký tài khoản

21
Biểu đồ 1.5.5 Biểu đồ hoạt động ca sử dụng Đăng ký tài khoản

Mô tả:
Người dùng khai báo thông tin của mình để được cấp quyền tài khoản sử dụng hệ
thống.
Các tác nhân: Người dùng, Hệ thống.

Điều kiện kích hoạt ca sử dụng:


Người dùng chọn chức năng đăng ký tài khoản.

22
Tiền điều kiện:
Người dùng chưa có sẵn tài khoản
Người dùng có đầy đủ thông tin mà hệ thống yêu cầu
Thiết bị của người dùng được kết nối internet trong suốt ca sử dụng

Hậu điều kiện:


Người dùng đăng ký tài khoản thành công

Các luồng sự kiện:


Luồng cơ bản:
1. Người dùng truy cập vào ứng dụng.
2. Người dùng chọn chức năng đăng ký tài khoản.
3. Hệ thống cung cấp form điền thông tin đăng ký tài khoản
4. Người dùng điền thông tin đầy đủ vào các trường dữ liệu trong form đăng ký.
5. Hệ thống xác nhận tính hợp lệ của thông tin mà người dùng điền vào form.
6. Hệ thống gửi đường dẫn mã xác nhận kích hoạt tài khoản bằng tin nhắn đến
số điện thoại mà người dùng cung cấp.
7. Người dùng xác nhận kích hoạt tài khoản
Luồng thay thế: Không có

Luồng ngoại lệ:


5.1e. Hệ thống hiển thị thông báo lỗi cho các trường dữ liệu không hợp lệ và
không thay đổi trạng thái hiện tại.
5.2e. Người dùng nhập lại thông tin cho các trường không hợp lệ.
5.3e. Hệ thống xác nhận lại tất cả các trường đã đạt yêu cầu.
7.1e Hệ thống gửi lại mã mới sau thời gian mười phút tính từ lúc gửi mã cũ nếu
người dùng chưa xác nhận

Business rules: Không có


Yêu cầu phi chức năng: Không có
Extension point: Không có
23
1.5.6 Đăng nhập

Biểu đồ 1.5.6 Biểu đồ hoạt động ca sử dụng Đăng nhập

Mô tả:
Người dùng xác minh danh tính của mình để đăng nhập sử dụng hệ thống.
Các tác nhân: Người dùng, Hệ thống.

Điều kiện kích hoạt ca sử dụng:


Người dùng chọn chức năng đăng nhập tài khoản

Tiền điều kiện:

24
Hệ thống hiển thị giao diện đăng nhập ở trạng thái chờ
Thiết bị của người dùng được kết nối internet trong suốt ca sử dụng

Hậu điều kiện: Không có

Các luồng sự kiện:


Luồng cơ bản:
1. Người dùng truy cập vào ứng dụng.
2. Người dùng chọn chức năng đăng nhập.
3. Hệ thống cung cấp form điền thông tin đăng nhập tài khoản
4. Người dùng điền số điện thoại của mình và mật khẩu vào form đăng nhập được
hệ thống đưa ra.
5. Hệ thống xác minh thông tin của người dùng trùng khớp dữ liệu và cho phép
họ đăng nhập sử dụng hệ thống.

Luồng thay thế: Không có


Luồng ngoại lệ:

5.1 Hệ thống hiển thị thông báo không có tài khoản trùng khớp
5.1e Người dùng chọn chức năng đăng ký tài khoản
5.2 Hệ thống hiển thị thông báo sai mật khẩu
5.2e Người dùng chọn chức năng lấy lại mật khẩu
Business rules: Không có
Yêu cầu phi chức năng: Không có

Extension point:

Lấy lại mật khẩu:


5.2.1 Tại giao diện đăng nhập, người dùng chọn chức năng quên mật khẩu.
5.2.2 Hệ thống yêu cầu người dùng nhập số điện thoại để xác minh tài khoản
5.2.3 Người dùng nhập số điện thoại vào trường dữ liệu hệ thống hiển thị
5.2.4 Hệ thống xác nhận tài khoản trùng khớp với số điện thoại và yêu cầu nhập
mật khẩu mới

25
5.2.4a Hệ thống xác nhận không tồn tại tài khoản trùng khớp và chuyển về ca sử
dụng Đăng ký tài khoản
5.2.5 Người dùng nhập mật khẩu mới và bấm tiếp tục
5.2.6 Hệ thống thống báo tạo mật khẩu mới thành công
Chỉnh sửa thông tin hồ sơ:
5.3.1 Tại giao diện chính, người dùng chọn chức năng thay đổi thông tin
5.3.2 Hệ thống hiển thị form dữ liệu mà người dùng cung cấp khi đăng ký tài
khoản
5.3.3 Người dùng thay đổi thông tin trên các trường dữ liệu cần đổi và bấm hoàn
thành
5.3.4 Hệ thống hiển thị thông báo xác nhận thay đổi thông tin thành công
Xóa tài khoản:
5.4.1 Tại giao diện chính, người dùng chọn chức năng xóa tài khoản.
5.4.2 Hệ thống hiển thị thông báo xác nhận yêu cầu xóa tài khoản.
5.4.3 Người dùng bấm chọn xác nhận lại yêu cầu.
5.3.4 Hệ thống xóa dữ liệu tài khoản người dùng.

1.5.7 Đăng ký làm vé tháng

26
Biểu đồ 1.5.7 Biểu đồ hoạt động ca sử dụng Đăng ký làm vé tháng

Mô tả:
Người dùng chưa có vé tháng xe buýt muốn đăng ký làm vé tháng trực tuyến thông
qua ứng dụng
Các tác nhân: Người dùng, hệ thống

Điều kiện kích hoạt ca sử dụng:


Người dùng muốn làm vé tháng qua trực tuyến qua ứng dụng.

Tiền điều kiện:


- Người dùng đã đăng nhập vào ứng dụng.
- Thiết bị của người dùng được kết nối internet.

Hậu điều kiện:


- Người dùng đăng ký mua vé tháng thành công.
- Hệ thống lưu lại thông tin và gửi thông báo báo đã đăng ký vé tháng thành công.

27
Các luồng sự kiện:
Luồng cơ bản:

1. Người dùng chọn lệnh đăng ký vé tháng.


2. Người dùng điền form đăng ký vé tháng
3. Hệ thống xác thực thông tin đăng ký.
4. Hệ thống ghi nhận hành động đăng ký vé tháng và hiển thị thông báo.

Luồng thay thế: Không có

Luồng ngoại lệ:


2e. Người dùng hủy lệnh đăng ký vé tháng.
3e. Hệ thống xác thực thông tin không thành công và hiển thị thông báo.
3e. Hệ thống báo vé tháng này đã tồn tại.
4e. Hệ thống ghi nhận hành động không thành công và hiển thị thông báo.

Business rules: Không có

Yêu cầu phi chức năng: Không có


Extension point: Không có

1.5.8 Mua tem tháng

28
Biểu đồ 1.5.8 Biểu đồ hoạt động ca sử dụng Mua tem tháng

Mô tả:
Người dùng muốn mua tem vé tháng xe buýt từ ứng dụng
Các tác nhân: Người dùng, hệ thống

Điều kiện kích hoạt ca sử dụng:


Người dùng muốn mua tem vé tháng qua ứng dụng

Tiền điều kiện:


- Người dùng đã đăng nhập thành công vào ứng dụng
- Thiết bị của người dùng được kết nối internet trong suốt quá trình thực hiện use
case.

29
- Người dùng đã có vé tháng.
- Tài khoản liên kết với ứng dụng còn đủ tiền để thanh toán.

Hậu điều kiện:


- Người dùng mua tem vé thành công.
- Số tiền còn lại trong tài khoản bị trừ một khoản bằng giá tem tháng.
- Hệ thống ghi nhận hoạt động mua thành công.
- Người dùng có thể sử dụng tem vé đó để đi xe buýt theo hình thức thanh toán vé
tháng

Các luồng sự kiện:


Luồng cơ bản:

1. Người dùng chọn lệnh mua tem tháng.


2. Người dùng điền thông tin mua tem gồm loại ưu tiên, tháng, mã vé tháng, hình
thức thanh toán, địa chỉ giao hàng, số điện thoại người nhận.
3. Hệ thống kiểm tra thông tin hợp lệ và hiển thị số tiền phải thanh toán
4. Người dùng chọn thanh toán, hệ thống chuyển sang use case thanh toán.
5. Hệ thống xác thực thông tin mua tem tháng thành công.
Luồng thay thế: Không có

Luồng ngoại lệ:


2e. Người dùng hủy lệnh mua tháng.
3e. Người dùng hủy lệnh thanh toán và thoát ca sử dụng.
3.1e. Hệ thống báo tem tháng này đã từng được mua trước đó.
5e. Hệ thống ghi nhận hành động không thành công và hiển thị thông báo

Business rules:
- Một tài khoản chỉ được mua một tem tháng trong một tháng.

Yêu cầu phi chức năng: Không có

Extension point:

30
3a. Tra điểm bán vé
3a.1 Người dùng chọn lệnh tra điểm bán vé tháng.
3a.2 Hệ thống sẽ hiển thị các địa điểm bán vé tháng trên địa bàn thành phố Hà
Nội.
3b. Tra cứu thông tin vé tháng
3b.1 Người dùng chọn lệnh tra cứu thông tin vé tháng
3b.2 Hệ thống hiển thị các thông báo liên quan đến vé tháng mua bán tem tháng
như: tháng này tài khoản của người dùng đã mua tem chưa, …
3c. Xem đơn hàng mua tem
3c.1 Người dùng chọn xem đơn hàng
3c.2 Hệ thống hiển thị các đơn hàng người dùng đã đặt qua hệ thống
3c.3 Người dùng chọn đơn muốn xem
3c.4 Hệ thống hiển thị thông tin về đơn hàng được chọn.

1.5.9 Thanh toán

Mô tả:
Người dùng thanh toán khoản tiền cần trả cho việc mua tem vé tháng bằng các hình
thức khác nhau.

Các tác nhân: Người dùng, Hệ thống.

Điều kiện kích hoạt ca sử dụng:


Trong ca sử dụng mua tem vé tháng, người dùng chọn chức năng thanh toán.

Tiền điều kiện:


Người dùng đã đăng nhập vào hệ thống.
Thiết bị của người dùng kết nối internet trong suốt ca sử dụng
Người dùng tiến hành mua tem vé tháng

Hậu điều kiện:


Người dùng thanh toán phí tem tháng thành công.

Các luồng sự kiện:


31
Luồng cơ bản:
1. Người dùng truy cập vào ứng dụng
Thanh toán bằng tài khoản ngân hàng
2. Trong ca sử dụng mua vé tem tháng, người dùng chọn hình thức thanh toán
bằng tài khoản ngân hàng
3. Hệ thống cung cấp form điền thông tin tài khoản ngân hàng của người dùng
4. Người dùng điền thông tin tài khoản và bấm chọn thanh toán.
5. Hệ thống xác thực thông tin tài khoản ngân hàng và yêu cầu tài khoản ngân
hàng thanh toán
6. Người dùng nhập mã xác thực mà ngân hàng cung cấp để thanh toán cho hệ
thống trong thời gian nhất định
7. Hệ thống xác nhận thanh toán thành công.

Luồng thay thế:

Thanh toán tiền mặt khi giao hàng:


2.3 Người dùng chọn hình thức thanh toán bằng tiền mặt khi giao hàng
2.3.1 Hệ thống tạo và hiển thị đơn đặt hàng kèm thông tin địa chỉ người dùng
2.3.2 Sau khi nhân viên xác nhận thanh toán và trả vé thành công, hệ thống sẽ
hiển thị xác nhận hoàn thành đơn đặt hàng trên giao diện
Ca sử dụng tiếp tục bước 7.
Luồng ngoại lệ:
Nếu người dùng không thanh toán trong khoảng thời gian nhất định thì hệ thống
hủy bỏ yêu cầu thanh toán.
Nếu số tiền trong tài khoản không đủ thì hệ thống sẽ hiển thị thông báo thanh toán
thất bại và thoát ca sử dụng
Nếu tài khoản không hợp lệ thì hệ thống sẽ hiển thị không hợp lệ thông tin tài
khoản

Business rules: Không có

Yêu cầu phi chức năng: Không có


Extension point: Không có
32
Biểu đồ 1.5.9 Biểu đồ hoạt động ca sử dụng Thanh toán

1.5.10 Chọn ngôn ngữ

33
Biểu đồ 1.5.10 Biểu đồ hoạt động ca sử dụng Chọn ngôn ngữ

Mô tả:
Người dùng chọn ngôn ngữ phù hợp với bản thân.
Các tác nhân: Người dùng, hệ thống

Điều kiện kích hoạt ca sử dụng:


Người dùng lần đầu truy cập hệ thống.

Tiền điều kiện: Người dùng lần đầu truy cập hệ thống.

Hậu điều kiện:


- Người dùng chọn ngôn ngữ thành công.
- Hệ thống lưu lại lựa chọn và thay đổi ngôn ngữ tương ứng.

Các luồng sự kiện:


Luồng cơ bản:

1. Hệ thống đưa lựa chọn ngôn ngữ.

34
2. Người dùng chọn ngôn ngữ tương ứng.
Luồng thay thế: Không có

Luồng ngoại lệ: Không có

Business rules: Không có

Yêu cầu phi chức năng: Không có


Extension point: Không có

2. Phân tích hệ thống BusHanoi

2.1 Phân tích kiến trúc

2.1.1 Key abstraction

Định nghĩa Key abstraction:


User: là tài khoản của người dùng đăng ký qua hệ thống nhằm cung cấp các chức
năng đặc thù gồm đăng ký vé tháng và mua tem tháng

Cơ chế phân tích: Persistency, Security

35
Bus: một bản ghi chứa tất cả thông tin của một chiếc xe buýt
Cơ chế phân tích: Persistency, Security, Process control and synchronization

BusRoute: một bản ghi chứa tất cả thông tin về một tuyến xe buýt

Cơ chế phân tích: Persistency, Security

BusStop: một bản ghi chứa tất cả thông tin về một điểm/trạm dừng xe buýt
Cơ chế phân tích: Persistency, Security, Process control and synchronization

MonthlyTicket: một bản ghi chứa tất cả thông tin của một vé tháng của một người
dùng cụ thể.
Cơ chế phân tích: Persistency, Security
Stamp: một bản ghi chứa tất cả thông tin về một chiếc tem tháng.

Cơ chế phân tích: Persistency, Security


Order: một bản ghi chứa thông tin về một đơn hàng của người dùng khi mua tem
tháng.

Cơ chế phân tích: Persistency, Security

2.1.2 Thành phần cấp cao và sự phụ thuộc

Biểu đồ 2.1.2. Biểu đồ kiến trúc bậc cao

36
- Controller: có nhiệm vụ xử lý các yêu cầu từ người dùng và gọi các phương thức
phù hợp để xử lý chúng.
- Model: là thành phần chứa dữ liệu tĩnh (database), chứa các phương thức truy cập,
truy vấn và xử lý dữ liệu.
- View: hiển thị thông tin, tương tác trực tiếp với người dùng, chuyển tiếp các yêu
cầu tới hệ thống và hiển thị kết quả đầu ra cho người dùng.

2.2 Phân tích Use case

2.2.1 Biểu đồ tuần tự các use case

2.2.1.1 Tra cứu thông tin xe buýt

Biểu đồ 2.2.1.1a Biểu đồ tuần tự Tra cứu thông tin tuyến buýt

37
Biểu đồ 2.2.1.1b Biểu đồ tuần tự Tra cứu tin tức nhà xe

38
2.2.1.2 Chọn địa điểm

Biểu đồ 2.2.1.2a Biểu đồ tuần tự Chọn điểm dừng

39
Biểu đồ 2.2.1.2b Biểu đồ tuần tự Định vị vị trí người dùng

40
2.2.1.3 Tìm đường

Biểu đồ 2.2.1.3 Biểu đồ tuần tự Tìm đường

41
2.2.1.4 Theo dõi xe tới điểm dừng

Biểu đồ 2.2.1.4a Biểu đồ tuần tự Theo dõi xe tới điểm dừng

42
Biểu đồ 2.2.1.4b Biểu đồ tuần tự Xem thông tin xe cụ thể qua điểm dừng

Biểu đồ 2.2.1.4c Biểu đồ tuần tự Tra cứu các tuyến buýt đi qua điểm dừng

43
2.2.1.5 Đăng ký tài khoản

Biểu đồ 2.2.1.5 Biểu đồ tuần tự Đăng ký tài khoản

44
2.2.1.6 Đăng nhập

Biểu đồ 2.2.1.6a Biểu đồ tuần tự Đăng nhập

45
Biểu đồ 2.2.1.6b Biểu đồ tuần tự Lấy lại mật khẩu

Biểu đồ 2.2.1.6c Biểu đồ tuần tự Thay đổi thông tin

46
Biểu đồ 2.2.1.6d Biểu đồ tuần tự Đăng xuất

Biểu đồ 2.2.1.6e Biểu đồ tuần tự Xóa tài khoản

47
2.2.1.7 Đăng ký làm vé tháng

Biểu đồ 2.2.1.7 Biểu đồ tuần tự Đăng ký làm vé tháng
2.2.1.8 Mua tem tháng

48
Biểu đồ 2.2.1.8a Biểu đồ tuần tự Mua tem tháng

Biểu đồ 2.2.1.8b Biểu đồ tuần tự Tra điểm bán vé

Biểu đồ 2.2.1.8c Biểu đồ tuần tự Tra thông tin vé tháng

49
Biểu đồ 2.2.1.8d Biểu đồ tuần tự Xem đơn hàng

50
2.2.1.9 Thanh toán

Biểu đồ 2.2.1.9a Biểu đồ tuần tự Thanh toán bằng tài khoản ngân hàng

51
Biểu đồ 2.2.1.9b Biểu đồ tuần tự Thanh toán tiền mặt khi giao hàng
2.2.1.10 Chọn ngôn ngữ

Biểu đồ 2.2.1.10 Biểu đồ tuần tự Chọn ngôn ngữ

2.2.2 Biểu đồ lớp pha phân tích

52
2.2.2.1 Tra cứu thông tin xe buýt

Biểu đồ 2.2.2.1a Biểu đồ lớp Tra cứu thông tin tuyến buýt

Biểu đồ 2.2.2.1b Biểu đồ lớp Tra cứu tin tức nhà xe

53
2.2.2.2 Chọn địa điểm

Biểu đồ 2.2.2.2a Biểu đồ lớp Chọn điểm dừng

Biểu đồ 2.2.2.2b Biểu đồ lớp Định vị vị trí người dùng

54
2.2.2.3 Tìm đường

Biểu đồ 2.2.2.3 Biểu đồ lớp Tìm đường


2.2.2.4 Theo dõi xe tới điểm dừng

Biểu đồ 2.2.2.4a Biểu đồ lớp Theo dõi xe tới điểm dừng

Biểu đồ 2.2.2.4b Biểu đồ lớp Xem thông tin xe cụ thể qua điểm dừng

55
Biểu đồ 2.2.2.4c. Biểu đồ lớp Xem tuyến bus đi qua điểm dừng
2.2.2.5 Đăng ký tài khoản

Biểu đồ 2.2.2.5 Biểu đồ lớp Đăng ký tài khoản

56
2.2.2.6 Đăng nhập

Biểu đồ 2.2.2.6a Biểu đồ lớp Đăng nhập

Biểu đồ 2.2.2.6b Biểu đồ lớp Lấy lại mật khẩu

57
Biểu đồ 2.2.2.6c Biểu đồ lớp Thay đổi thông tin

58
Biểu đồ 2.2.2.6d Biểu đồ lớp Đăng xuất

Biểu đồ 2.2.2.6e Biểu đồ lớp Xóa tài khoản


2.2.2.7 Đăng ký làm vé tháng

Biểu đồ 2.2.2.7 Biểu đồ lớp Đăng ký làm vé tháng

59
2.2.2.8 Mua tem tháng

Biểu đồ 2.2.2.8a Biểu đồ lớp Mua tem tháng

Biểu đồ 2.2.2.8b Biểu đồ lớp Tra điểm bán vé

60
Biểu đồ 2.2.2.8c Biểu đồ lớp Tra thông tin vé tháng

Biểu đồ 2.2.2.8d Biểu đồ lớp Xem đơn hàng


2.2.2.9 Thanh toán

61
Biểu đồ 2.2.2.9a Biểu đồ lớp Thanh toán bằng tài khoản ngân hàng

Biểu đồ 2.2.2.9b Biểu đồ lớp Thanh toán toán tiền mặt khi giao hàng
2.2.2.10 Chọn ngôn ngữ

Biểu đồ 2.2.2.10 Biểu đồ lớp Chọn ngôn ngữ

2.2.3 Ánh xạ từ lớp phân tích tới cơ chế phân tích

Analysis Class Analysis Mechanism(s)


MapView None

62
MapController Distribution
MapAPISystem Persistency, Security
LocationFindingForm None
TrackingView None
BusInfoView None
BusInfoController Distribution
BusStop Security, Persistency
Bus Security, Persistency
BusRoute Security, Persistency
BusSystem Security, Persistency
NewsView None
NewsCotroller Controller
NewsDatabaseSystem Persistency, Security
FindwayView None
FindwayController Error detection /handling /reporting, Controller
RegisterForm None
UserController Security, Error detection /handling /reporting,
Controller
UserDatabaseSystem Persistency, Security
User Security, Persistency
LoginForm None
NewPasswordForm None
LogoutView None
ChangeInfoForm None

63
DeleteAccountView None
MonthlyTicketView None
MonthlyTicketController Error detection /handling /reporting, Controller
MonthlyTicketSystem Persistency, Security
BuyStampView None
BuyStampController Error detection /handling /reporting, Controller
MonthlyTicket Persistence, Security
PaymentForm None
PaymentController Distribution, Error detection /handling /reporting
Payment Persistence, Security
OrderForm None
Order Persistence, Security
PaymentSystem Persistence, Security

3. Thiết kế hệ thống BusHanoi

3.1 Xác định các thành phần cần thiết kế

3.1.1. Subsystem Context

64
Biểu đồ 3.1.1.1. Payment System Context

Biểu đồ 3.1.1.2. MapAPI System Context

65
Biểu đồ 3.1.1.3. BusInfo Subsystem Context

Biểu đồ 3.1.1.4. News Subsystem Context

66
Biểu đồ 3.1.1.5. User Subsystem Context

67
Biểu đồ 3.1.1.6. MTicket Subsystem Context

3.1.2 Analysis-to-Design-to-Implementation Mechanisms Map

Cơ chế phân tích Cơ chế thiết kế Cơ chế cài đặt


Persistency OODBMS (new data) ObjectStore
Persistency RDBMS (data from JDBC to Ingres
legacy database)
Distribution Remote Method Java 1.1 from Sun
Invocation (RMI)
Security Reverse Engineered Secure.java
and UserContextRemoteObject
components
Error detection/
handling/ reporting

68
Implement các cơ chế
3.1.2.1. Cơ chế Persistency - ObjectStore OODBMS
Static View

Biểu đồ 3.1.2.1.a. Biểu đồ lớp cơ chế cài đặt OODBMS
UserDBManager: Là một lớp ObjectStore chịu trách nhiệm cung cấp truy cập các
đối tượng persistent - bao gồm truy cập thông tin người dùng, đăng ký, quản lý phiên
chạy như một ứng dụng hệ thống hoạt động phía sau của hệ thống.
Session: Lớp đại diện cho một phiên cơ sở dữ liệu được tạo để truy cập và cơ sở dữ
liệu và bất kỳ dữ liệu persistent nào. Một session được sử dụng trong hoàn cảnh các
cơ sở dữ liệu PSE/PSE Pro được tạo hoặc mở, và Transactions được thực thi. Chỉ
một Transaction tại một thời điểm được tồn tại trong một phiên.
Map: Một persistent map chứa các lớp gồm các cặp key/value.
Database: Lớp đại diện cho một cơ sở dữ liệu ObjectStore (Trước khi tạo một
persistent objects, cần tạo database để chứa các objects sau đó mới có thể mở cơ sở
dữ liệu ra và cho phép đọc, sửa objects. Để tạo một cơ sở dữ liệu, ta gọi phương thức
tĩnh create() ở lớp Database và chỉ định tên cơ sở dữ liệu, chế độ truy cập.
Transaction: Quản lý một đơn vị công việc. Tất cả các đối tượng persistent phải
được truy cập trong một transaction.
ObjectStore: Định nghĩa hoạt động ở mức hệ thống không dành riêng cho một cơ
sở dữ liệu nào.

69
Dynamic View

Biểu đồ 3.1.2.1.b. Biểu đồ cơ chế cài đặt OODBMS - khởi tạo cơ sở dữ liệu
Sau khi tạo phiên, UserDBManager phải được mở và tạo một cơ sở dữ liệu mới. Để
tạo cơ sở dữ liệu, UserDBManager tạo một transaction và “root” của cơ sở dữ liệu
đó bằng hàm “createRoot()” sẽ là điểm để truy cập vào cơ sở dữ liệu. Bất cứ thay
đổi nào trong cấu trúc dữ liệu trên ngữ cảnh transaction sẽ được cập nhật trong
ObjectStor Database. Sau khi root được tạo, commit transaction.

70
Biểu đồ 3.1.2.1.c. Biểu đồ cơ chế cài đặt OODBMS - đóng cơ sở dữ liệu
Để đóng cơ sở dữ liệu, UserDBManager phải đóng cơ sở dữ liệu và session.

Biểu đồ 3.1.2.1.d. Biểu đồ cơ chế cài đặt OODBMS đọc dữ liệu
Để đọc một object, UserDBManager đầu tiên sẽ tạo một transaction chỉ đọc mới và
tìm object sử dụng “get()” hàm trong Map. Sau khi tìm được object, nó sẽ đọc bằng
71
cách sử dụng “getData()” và commit transaction với RETAIN_HOLLOW được chỉ
định để commit nhằm tham chiếu tới object và trích xuất dữ liệu sử dụng bên ngoài
transaction.

Biểu đồ 3.1.2.1.e. Biểu đồ cơ chế cài đặt OODBMS thay đổi thông tin tài khoản
Để cập nhật một đối tượng, UserDBManager đầu tiên tạo ra một transaction mới sau
đó tìm object sử dụng “get()” của Map. Sau khi tìm được tài khoản, một lệnh sẽ được
gọi và sau khi hoàn thành lệnh này, commit transaction. Sử dụng “put()” của Map là
không cần thiết vì “get()” đã trả về một tham chiếu tới đối tượng persistent và mọi
thay đổi ở trên đối tượng đó, nếu được tạo trên ngữ cảnh transaction, nó sẽ tự động
commit vào cơ sở dữ liệu.

72
Biểu đồ 3.1.2.1.f. Biểu đồ cơ chế cài đặt OODBMS đăng ký tài khoản
Để đăng ký tài khoản, UserDBManager tạo một transaction sau đó gọi constructor
của User. Sau đó lớp được tạo (tài khoản mới) sẽ được thêm qua root bằng hàm
“put()” và commit transaction.

Biểu đồ 3.1.2.1.g. Biểu đồ cơ chế cài đặt OODBMS xóa tài khoản
Để xóa đối tượng (tài khoản) trong cơ sở dữ liệu, UserDBManager đầu tiên tạo một
transaction, xóa các phần liên quan và xóa đối tượng sử dụng hàm “remove()” của

73
cơ sở dữ liệu root. Đối tượng sẽ được xóa hoàn toàn trong cơ sở dữ liệu ObjectStore
qua ObjectStore.destroy() (Trong ObjectStore, việc xóa đối tượng có 2 bước - xóa
trong cơ sở dữ liệu chứa nó và xóa khỏi lớp cơ sở dữ liệu vật lý để có thể xóa ngay
lập tức mà không bị lưu trong bộ nhớ đệm). Sau khi xóa đối tượng, commit
transaction.
3.1.2.2. Cơ chế Distribution
Static View

Naming.:
* Đây là cơ chế bootstrap để lấy các tham chiếu để remote
* các đối tượng dựa trên syntax URL. URL
* đối với một đối tượng remote được chỉ định bằng cách sử dụng host lưu trữ, port

* name:
* <br> rmi://host:port/name
*<br> host = host name of registry (defaults to current host)
*<br> port = port number of registry (defaults to the registry port number)
*<br> name = name for remote object
74
SampleDistributedClass: ví dụ của một class bị phân tán
Remote:
- Remote interface dùng để xác định tất cả các remote object. Bất kỳ object nào
là remote object phải implement trực tiếp hoặc gián tiếp giao diện này. Chỉ
những phương pháp được chỉ định trong Remote interface mới là có sẵn từ
xa. <p>
- Các lớp implement có thể triển khai bất kỳ số lượng remote interface nào và
có thể mở rộng các lớp triển khai remote khác.
Đối với tất cả các lớp realize Remote interface, một remote sub và một remote
skeleton được tạo. Các lớp xử lý kết nối phải xảy ra để hỗ trợ phân tán.
SampleDistributedClassClient: một ví dụ về client của 1 lớp phân tán.
SamplePassedData: ví dụ dữ liệu được truyền qua một lớp phân tán
UnicastRemoteObject:
ISampleDistributedClassInterface: một ví dụ về 1 interface định nghĩa cho 1 lớp
phân tán
Serializable: bất kì lớp java nào muốn truyền dưới dạng đối số vào một operation
trên một remote interface phải realize được Serializable interface.

Dynamic View

75
3.1.2.3. Cơ chế Security
Static View
ISecureData: cơ chế phân tích: security
SecurityAccess: cơ chế phân tích: security
SampleSecureClass:
UserSecurityContext: cơ chế phân tích: security
UniqueId: cơ chế phân tích: security
IUserSubsystem: cơ chế phân tích: security
ISecureUser: cơ chế phân tích: security
UserController: cơ chế phân tích: security

76
Dynamic View

77
3.1.3 Analysis-Class-to-Design-Element Map

Analysis Class Design Elements

BusStop BusStop

BusRoute BusRoute

Bus Bus

User User

MonthlyTicket MonthlyTicket

Stamp Stamp

Order Order

78
PlaceBuyStamp PlaceBuyStamp

Payment Payment

BusInfoView BusInfoView

NewsView NewsView

RegisterForm RegisterForm

LoginForm LoginForm

ChangeInfoForm ChangeInfoForm

NewPasswordForm NewPasswordForm

LogoutView LogoutView

DeleteAccountView DeleteAccountView

MonthlyTicketRegisterV MonthlyTicketRegisterView
iew

MapView MapView

FindWayView FindWayView

TrackingView Tracking List Bus View

Tracking Specific Bus View

Tracking Bus Route View

LocationFindingForm LocationFindingForm

StampView PlaceBuyStampView

79
ViewMTicket

BuyStampView BuyStampView

OrderView OrderView

PaymentForm PaymentForm

NewsController News Subsystem

NewsDatabaseSystem INewsSubsystem

MapController MapAPI

MapAPISystem IMapAPI

FindwayController FindwayController, MapAPI

UserController UserController, UserSubsystem

IUserSubsystem

BusSystem IBusInfoSubsystem, BusInfoSubsystem

BusInfoController BusStaticInfoController, BusInfoSubsystem

TrackingBusController, BusInfoSubsystem,
ITrackingBusSubsystem

MonthlyTicketController RegisterMTicketController

StampController PlaceBuyStampController, BusInfoSubsystem

ViewMTicketController

MonthlyTicketSystem MonthlyTicketSystem

80
IMTicketSubsystem

BuyStampController BuyStampController, MonthlyTicketSystem

OrderController OrderController, MonthlyTicketSystem

PaymentSystem PaymentSystem, IPaymentSystem

PaymentController PaymentController, PaymentSystem

3.1.4 Design-Element-to-Owning-Package Map

Design Elements
Owning package

BusStop Database.BusInfo

BusRoute Database.BusInfo

Bus Database.BusInfo

PlaceBuyStamp
Database.BusInfo

User Database.TicketSale

MonthlyTicket
Database.TicketSale

Order Database.TicketSale

Stamp Database.TicketSale

BusInfoViewGUI_Management

NewsView GUI_Management

81
RegisterFormGUI_Management

LoginForm GUI_Management

ChangeInfoForm
GUI_Management

NewPasswordForm
GUI_Management

LogoutView GUI_Management

DeleteAccountView
GUI_Management

MonthlyTicketRegisterView
GUI_Management

MapView GUI_Management

FindWayView
GUI_Management

TrackingListBusView
GUI_Management

TrackingSpecificBusView
GUI_Management

TrackingBusRouteView
GUI_Management

LocationFindingForm
GUI_Management

PlaceBuyStampView
GUI_Management

ViewMTicket GUI_Management

BuyStampView
GUI_Management

OrderView GUI_Management

PaymentFormGUI_Management

FindwayController
MapAPI

82
UserController
Subsystem.UserSystem

BusStaticInfoController
Subsystem.BusSystem

BusDynamicInfoController
Subsystem.BusSystem

TrackingBusRouteController
Subsystem.BusSystem

PlaceBuyStampController
Subsystem.BusSystem

ViewMTicketController
Subsystem.MonthlyTicketSystem

BuyStampController Subsystem.MonthlyTicketSystem

RegisterMTicketController Subsystem.MonthlyTicketSystem

OrderController
Subsystem.MonthlyTicketSystem

PaymentController
Subsystem.PaymentSystem

Payment Subsystem.PaymentSystem

INewsSubsystem
Subsystem.NewsSubsystem

IMapAPI MapAPI

IBusInfoSubsystem
Subsystem.BusSystem

IUserSubsystem
Subsystem.UserSystem

ITrackingSubsystem
Subsystem.TrackingBusSystem

IMTicketSubsystem
Subsystem.MonthlyTicketSystem

IPaymentSystem
Subsystem.PaymentSystem

3.1.5 Packages and Their Dependency


83
Mô tả Package
GUI_Management: chứa SettingLangugeView, NewsView, FindwayView,
TrackingBusListView, TrackingSpecificBusView, BusInfoView,
TrackingBusRouteView, PlaceBuyStampView, ViewMTicket, BuyStampView,
MonthlyTicketRegisterView, OrderView, PaymentForm, RegisterForm,
LoginForm, ChangeInfoForm, NewPasswordForm, LogoutView,
DeleteAccountView.
UserSubsystem: cung cấp IUserSubsystem, chứa UserController.
BusInfoSubsystem: cung cấp IBusInfoSubsystem, ITrackingBusSystem, chứa
BusStaticInfoController, TrackingBusController, PlaceBuyStampController.

84
MonthlyTicketSystem: cung cấp IMonthTicketSystem, chứa
ViewMTicketController, BuyStampController, RegisterMTicketController,
OrderController.
PaymentSystem: cung cấp interface IPaymentSystem, chứa PaymentController,
Payment
NewsSubsystem: chứa NewsController.
MapAPI: FindwayController.
Subsystem: chứa IPaymentSystem, IMapAPI, INewsSubsystem,
MonthlyTicketSystem, BusInfoSubsystem, UserSubsystem
Database: chứa TicketSale, BusInfo
TicketSale: chứa User, MonthlyTicket, Order, Stamp
BusInfo: chứa BusStop, BusRoute, Bus, PlaceBuyStamp

3.2. Mô tả kiến trúc thực thi

Biểu đồ 3.2. Biểu đồ Mô tả kiến trúc thực thi

85
3.3. Mô tả phân tán

86
Biểu đồ 3.3. Biểu đồ Mô tả phân tán

3.4. Thiết kế Use Case

3.4.1. Thiết kế biểu đồ tuần tự

87
3.4.1.1 Tra cứu thông tin xe buýt

Biểu đồ 3.4.1.1a Biểu đồ tuần tự Tra cứu thông tin tuyến buýt

Biểu đồ 3.4.1.1b Biểu đồ tuần tự Tra cứu tin tức nhà xe

88
3.4.1.2 Chọn địa điểm

Biểu đồ 3.4.1.2a Biểu đồ tuần tự Chọn điểm dừng

89
Biểu đồ 3.4.1.2b Biểu đồ tuần tự Định vị vị trí người dùng

90
3.4.1.3 Tìm đường

Biểu đồ 3.4.1.3 Biểu đồ tuần tự Tìm đường

91
3.4.1.4 Theo dõi xe tới điểm dừng

Biểu đồ 3.4.1.4a Biểu đồ tuần tự Theo dõi xe tới điểm dừng

Biểu đồ 3.4.1.4b Biểu đồ tuần tự Xem thông tin xe cụ thể qua điểm dừng
92
Biểu đồ 3.4.1.4c Biểu đồ tuần tự Tra cứu các tuyến buýt đi qua điểm dừng

93
3.4.1.5 Đăng ký tài khoản

Biểu đồ 3.4.1.5 Biểu đồ tuần tự Đăng ký tài khoản

94
3.4.1.6 Đăng nhập

Biểu đồ 3.4.1.6a Biểu đồ tuần tự Đăng nhập

95
Biểu đồ 3.4.1.6b Biểu đồ tuần tự Lấy lại mật khẩu

Biểu đồ 3.4.1.6c Biểu đồ tuần tự Thay đổi thông tin

96
Biểu đồ 3.4.1.6d Biểu đồ tuần tự Đăng xuất

Biểu đồ 3.4.1.6e Biểu đồ tuần tự Xóa tài khoản

97
3.4.1.7 Đăng ký làm vé tháng

Biểu đồ 3.4.1.7 Biểu đồ tuần tự Đăng ký làm vé tháng

98
3.4.1.8 Mua tem tháng

Biểu đồ 3.4.1.8a Biểu đồ tuần tự Mua tem tháng

Biểu đồ 3.4.1.8b Biểu đồ tuần tự Tra điểm bán vé

99
Biểu đồ 3.4.1.8c Biểu đồ tuần tự Tra thông tin vé tháng

Biểu đồ 3.4.1.8d Biểu đồ tuần tự Xem đơn hàng

100
3.4.1.9 Thanh toán

Biểu đồ 3.4.1.9a Biểu đồ tuần tự Thanh toán bằng tài khoản ngân hàng

101
Biểu đồ 3.4.1.9b Biểu đồ tuần tự Thanh toán tiền mặt khi giao hàng
3.4.1.10 Chọn ngôn ngữ

Biểu đồ 3.4.1.9b Biểu đồ tuần tự Chọn ngôn ngữ

102
3.4.2. Thiết kế biểu đồ lớp

3.4.2.1. Tra cứu thông tin xe buýt

Biểu đồ 3.4.2.1.a Biểu đồ lớp Tra cứu thông tin tuyến bus

Biểu đồ 3.4.2.1.b Biểu đồ lớp Tra cứu tin tức nhà xe

103
3.4.2.2. Chọn địa điểm

Biểu đồ 3.4.2.2.a. Biểu đồ lớp Chọn điểm dừng

Biểu đồ 3.4.2.2.b. Biểu đồ lớp Định vị người dùng

104
3.4.2.3. Tìm đường

Biểu đồ 3.4.2.3. Biểu đồ lớp Tìm đường


3.4.2.4. Theo dõi xe tới điểm dừng

Biểu đồ 3.4.2.4.a. Biểu đồ lớp Theo dõi xe tới điểm dừng

Biểu đồ 3.4.2.4.b Biểu đồ lớp Xem các tuyến bus qua điểm dừng

105
Biểu đồ 3.4.2.4.c Biểu đồ lớp Xem thông tin xe cụ thể qua điểm dừng

3.4.2.5. Đăng ký tài khoản

Biểu đồ 3.4.2.5. Biểu đồ lớp Đăng ký tài khoản
3.4.2.6. Đăng nhập

Biểu đồ 3.4.2.6a. Biểu đồ lớp Đăng nhập

106
Biểu đồ 3.4.2.6b. Biểu đồ lớp Lấy lại mật khẩu

Biểu đồ 3.4.2.6c. Biểu đồ lớp Thay đổi thông tin

Biểu đồ 3.4.2.6d. Biểu đồ lớp Đăng xuất

107
Biểu đồ 3.4.2.5. Biểu đồ lớp Xóa tài khoản

3.4.2.7. Đăng ký làm vé tháng

Biểu đồ 3.4.2.7. Biểu đồ lớp Đăng ký làm vé tháng

108
3.4.2.8. Mua tem tháng

Biểu đồ 3.4.2.8a. Biểu đồ lớp Mua tem tháng

Biểu đồ 3.4.2.8b. Biểu đồ lớp Tra điểm bán vé

109
Biểu đồ 3.4.2.8c. Biểu đồ lớp Tra thông tin vé tháng

Biểu đồ 3.4.2.8d. Biểu đồ lớp Xem đơn hàng

110
3.4.2.9. Thanh toán

Biểu đồ 3.4.2.9a. Biểu đồ lớp Thanh toán bằng tài khoản ngân hàng

111
Biểu đồ 3.4.2.9b. Biểu đồ lớp Thanh toán trực tiếp
3.4.2.9. Chọn ngôn ngữ

112
Biểu đồ 3.4.2.10. Biểu đồ lớp Chọn ngôn ngữ

3.5. Thiết kế Hệ thống con

3.5.1. Bus Info Subsystem

Biểu đồ 3.5.1.1. Biểu đồ cấu trúc BusInfoSubsystem

113
Biểu đồ 3.5.1.2. Biểu đồ quan hệ các lớp BusInfoSubsystem
Biểu đồ tuần tự trong Bus Info Subsystem
1. Interface IBusInfoSubsystem
1.1. Hàm getBusRouteList()

114
1.2. Hàm findSpecificBusRoute()

1.3. Hàm getSpecificBusRoute()

115
1.4. Hàm getScheduleOfRoute()

1.5. Hàm getBusStopList()

116
1.6. Hàm get_detail_info()

1.7. Hàm getStampPlace()

117
1.8. Hàm getPassingRouteList()

2. Interface ITrackingBusSubsystem
2.1. Hàm getBusTrack():

118
2.2. Hàm getBusInfo():

3.5.2. User Subsystem

119
Biểu đồ 3.5.2.1. Biểu đồ cấu trúc User Subsystem

Biểu đồ 3.5.2.2. Biểu đồ quan hệ các lớp User Subsystem
Biểu đồ tuần tự trong User Subsystem
1. Hàm createUser()

120
2. Hàm checkLoginInfo()

121
3. Hàm askForLogout()

4. Hàm deleteAccount()

5. Hàm setNewPassword()

122
6. Hàm update()

3.5.3. Monthly Ticket System

123
Biểu đồ 3.5.3.1. Biểu đồ cấu trúc MonthlyTicketSystem

124
Biểu đồ 3.5.3.2. Biểu đồ quan hệ các lớp MonthlyTicketSystem
Biểu đồ tuần tự trong MonthlyTicketSystem
1. Hàm checkRegisterInfo()

125
2. Hàm saveRegisterInfo()

3. Hàm viewMTicketInfo()

126
4. Hàm checkBuyStampInfo()

5. Hàm createOrder()

127
6. Hàm reviewOrder()

7. Hàm chooseOrder()

128
8. Hàm updateOrderStatus()

129
3.6. Thiết kế lớp

130
131
132
133
134
135
3.7. Thiết kế Cơ sở dữ liệu

Biểu đồ 3.7. Biểu đồ thiết kế cơ sở dữ liệu

Phụ lục

Bảng phân chia công việc

Trương Thị Kiều Đinh Ngọc Vân Lê Thị Bích Nguyễn Thị Nguyễn Thị
Anh Duyên Hồng Vân Nhung

Đặc tả + Sơ đồ Usecase +Bảng thuật ngữ +Đặt vấn đề +Đặc tả bổ sung +Đặc tả đăng
+Đặc tả chọn điểm +Sơ đồ Usecase +Sơ đồ Usecase +Đặc tả mua nhập
+Đặc tả theo dõi + Sơ đồ quan hệ +Đặc tả tra cứu tem tháng +Đặc tả thanh
xe tới điểm dừng usecase thông tin tuyến +Đặc tả làm toán
cụ thể buýt và tra cứu đăng ký vé +Đặc tả đăng ký
tin tức nhà xe tháng tài khoản

136
+Đặc tả tìm +Làm tài liệu
đường doc

Phân +Biểu đồ lớp, biểu +Biểu đồ lớp, +Key abstraction +Thành phần +Biểu đồ lớp,
tích đồ tuần tự chọn biểu đồ tuần tự +Biểu đồ lớp, cấp cao và sự biểu đồ tuần tự
điểm thanh toán bằng biểu đồ tuần tự phụ thuộc đăng nhập
+Biểu đồ lớp, biểu tài khoản ngân use case tra cứu +Biểu đồ lớp, +Biểu đồ lớp,
đồ tuần tự theo dõi hàng và thanh +Biểu đồ lớp, biểu đồ tuần tự biểu đồ tuần tự
xe tới điểm dừng toán trực tiếp khi biểu đồ tuần tự mua tem tháng đăng ký tài
cụ thể giao hàng tìm đường +Biểu đồ lớp, khoản
+Ánh xạ lớp phân biểu đồ tuần tự
tích tới cơ chế đăng ký vé
phân tích tháng
+Ánh xạ lớp
phân tích tới cơ
chế phân tích

Thiết +Biểu đồ lớp và +Biểu đồ lớp, +Biểu đồ lớp và +Biểu đồ lớp và +Subsystem
kế biểu đồ tuần tự 2 biểu đồ tuần tự biểu đồ tuần tự 2 biểu đồ tuần tự context
ca sử dụng trên thanh toán bằng ca sử dụng trên các ca sử dụng +Thiết kế
+Thiết kế Bus Info tài khoản ngân +Thiết kế User trên Database
Subsystem hàng và thanh subsystem và +Thiết kế lớp +Biểu đồ lớp,
+Biểu đồ tuần tự toán trực tiếp khi Monthly Ticket +Design- biểu đồ tuần tự
cho BusInfo giao hàng System Element-to- đăng nhập
Subsystem +Thiết kế lớp +Biểu đồ tuần tự Owning- +Biểu đồ lớp,
+ Mô tả kiến trúc +Package and cho Package Map biểu đồ tuần tự
thực thi their MonthlyTicketSy đăng ký tài
+Analysis-to- Dependency stem khoản
Design-to- +Mô tả phân tán: +Biểu đồ tuần tự
Implementation vẽ biểu đồ cho User
Mechanisms Map deployment Subsystem
cơ chế Persistency +Analysis-to-
Design-to-
Implementation
Mechanisms Map
cơ chế Security,
Distribution

Hệ số 20% 20% 20% 20% 20%

137

You might also like