Professional Documents
Culture Documents
Sample 1
Sample 1
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
5
1. Đặc tả yêu cầu
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ữ.
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.
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.
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
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
Đ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
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
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
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.
Đ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
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.
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.
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
16
Hậu điều kiện: Không có
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.
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
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
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ó
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.
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.
Extension point:
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.
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
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.
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
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:
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.
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
27
Các luồng sự kiện:
Luồng cơ bản:
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
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.
Business rules:
- Một tài khoản chỉ được mua một tem tháng trong một tháng.
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.
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.
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
Tiền điều kiện: Người dùng lần đầu truy cập hệ thống.
34
2. Người dùng chọn ngôn ngữ tương ứng.
Luồng thay thế: Không có
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
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.
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.
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
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
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ữ
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.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.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.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.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.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
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ữ
2.2.3 Ánh xạ từ lớp phân tích tới cơ chế phân tích
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
64
Biểu đồ 3.1.1.1. Payment System Context
65
Biểu đồ 3.1.1.3. BusInfo Subsystem Context
66
Biểu đồ 3.1.1.5. User Subsystem Context
67
Biểu đồ 3.1.1.6. MTicket Subsystem Context
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
và
* 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
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
LocationFindingForm LocationFindingForm
StampView PlaceBuyStampView
79
ViewMTicket
BuyStampView BuyStampView
OrderView OrderView
PaymentForm PaymentForm
NewsDatabaseSystem INewsSubsystem
MapController MapAPI
MapAPISystem IMapAPI
IUserSubsystem
TrackingBusController, BusInfoSubsystem,
ITrackingBusSubsystem
MonthlyTicketController RegisterMTicketController
ViewMTicketController
MonthlyTicketSystem MonthlyTicketSystem
80
IMTicketSubsystem
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
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
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
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
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
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
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.b. Biểu đồ lớp Định vị người dùng
104
3.4.2.3. Tìm đườ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
Biểu đồ 3.4.2.5. Biểu đồ lớp Đăng ký tài khoản
3.4.2.6. Đă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
107
Biểu đồ 3.4.2.5. Biểu đồ lớp Xóa tài khoản
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.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
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ữ
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()
115
1.4. Hàm getScheduleOfRoute()
116
1.6. Hàm get_detail_info()
117
1.8. Hàm getPassingRouteList()
2. Interface ITrackingBusSubsystem
2.1. Hàm getBusTrack():
118
2.2. Hàm getBusInfo():
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()
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
Phụ lụ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
137