1. Trang chủ
  2. » Tất cả

Đề tài truong phat logistics application

135 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề tài Trương Phát Logistics Application
Tác giả Vo Duc Trung Hieu
Người hướng dẫn PhD. Nguyen Trinh Dong
Trường học University of Information Technology
Chuyên ngành Software Engineering
Thể loại Dự án tốt nghiệp
Năm xuất bản 2022
Thành phố Ho Chi Minh City
Định dạng
Số trang 135
Dung lượng 17,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Purpose (9)
  • 2. Scope (9)
  • 3. Terminology (9)
    • 3.1. Business terminology (9)
    • 3.2. Technical terminology (9)
  • 4. Intended Audiences and Document Organization (10)
  • 1. Data classes & Rules (10)
    • 1.1. User (10)
      • 1.1.1. User Status (10)
      • 1.1.2. User Login IDs (10)
      • 1.1.3. User Passwords (10)
      • 1.1.4. Delivery Product (11)
      • 1.1.5. Driver (11)
      • 1.1.6. Delivery Transportation (12)
  • 2. Domain diagram (13)
  • 1. Actor list (13)
  • 2. Use Case View (14)
    • 2.1. Authentication (14)
      • 2.1.1. Sign in (16)
      • 2.1.2. Sign out (16)
      • 2.1.3. Change password (16)
      • 2.1.4. Reset password (17)
    • 2.2. Account management (18)
      • 2.2.1. View all accountants (18)
      • 2.2.2. Create new accountant (18)
      • 2.2.3. Find accountant (19)
      • 2.2.4. Update accountant account’s status (19)
      • 2.2.5. View all driver managers (19)
      • 2.2.6. Create new driver manager (19)
      • 2.2.7. Find driver manager (20)
      • 2.2.8. Update driver manager account’s status (20)
      • 2.2.9. View all drivers (20)
      • 2.2.10. Create new driver (21)
      • 2.2.11. Find driver (21)
      • 2.2.12. Update driver account’s status (21)
    • 2.3. Information management (22)
      • 2.3.1. Update account’s information (22)
    • 2.4. Delivery Product Management (23)
      • 2.4.1. View product list (23)
      • 2.4.2. Find product (23)
      • 2.4.3. Create new product (24)
      • 2.4.4. Update a product (24)
      • 2.4.5. Delete a product (24)
    • 2.5. Delivery Location Management (25)
      • 2.5.1. View location list (25)
      • 2.5.2. Find location (25)
      • 2.5.3. Create new location (26)
      • 2.5.4. Update a location (26)
      • 2.5.5. Delete a location (27)
    • 2.6. Route Management (27)
      • 2.6.1. View route list (27)
      • 2.6.2. Find route (28)
      • 2.6.3. Create new route (28)
      • 2.6.4. Update a route (28)
      • 2.6.5. Delete a route (29)
    • 2.7. Transportation Management (30)
      • 2.7.1. View truck list (30)
      • 2.7.2. Find truck (30)
      • 2.7.3. Create new truck (31)
      • 2.7.4. Update a truck (31)
      • 2.7.5. Delete a truck (31)
    • 2.8. Booking Job Management (32)
      • 2.8.1. View job list (32)
      • 2.8.2. Find job (32)
      • 2.8.3. Create new job (33)
      • 2.8.4. Update a job (33)
      • 2.8.5. Delete a job (34)
      • 2.8.6. Choose route for the job (34)
      • 2.8.7. Create dispatch order (34)
      • 2.8.8. Approve driver's delivery problem request (35)
      • 2.8.9. Calculate drivers' salary (35)
    • 2.9. Delivery Process Management (35)
      • 2.9.1. Assign job to driver (36)
      • 2.9.2. View job's information of team member (36)
      • 2.9.3. Approve job (37)
      • 2.9.4. Confirm truck’s status (37)
      • 2.9.5. Create delivery problem request (38)
      • 2.9.6. Update delivery status (38)
      • 2.9.7. Upload delivery bill (38)
    • 2.10. Contract & Receipt/Payment Management (39)
      • 2.10.1. View e-Contract list (39)
      • 2.10.2. Find e-Contract (39)
      • 2.10.3. View receipt list (40)
      • 2.10.4. Find receipt (40)
      • 2.10.5. View payment list (40)
      • 2.10.6. Find payment (41)
      • 2.10.7. View overall report (41)
      • 2.10.8. View detail report (41)
      • 2.10.9. View balance (42)
      • 2.10.10. Create new e-Contract (42)
      • 2.10.11. Create new bill (42)
      • 2.10.12. Create new payment (43)
      • 2.10.13. Update e-Contract's status (43)
      • 2.10.14. Update bill's status (44)
      • 2.10.15. Update payment's status (44)
  • 3. Process View (45)
    • 3.1. System sequence diagrams (45)
      • 3.1.1. Sign in (46)
      • 3.1.2. Sign out (47)
      • 3.1.3. Change password (48)
      • 3.1.4. Reset password (49)
      • 3.1.5. View all accountants (50)
      • 3.1.6. Create new accountant account (51)
      • 3.1.7. Find accountant account (51)
      • 3.1.8. Update accountant’s status (53)
      • 3.1.9. View all driver managers (54)
      • 3.1.10. Create new driver manager account (55)
      • 3.1.11. Find driver manager account (55)
      • 3.1.12. Update driver manager’s status (57)
      • 3.1.13. View all drivers (58)
      • 3.1.14. Create new driver account (59)
      • 3.1.15. Find driver account (60)
      • 3.1.16. Update driver’s status (61)
      • 3.1.17. Update account's information (62)
      • 3.1.18. View all delivery products (63)
      • 3.1.19. Find delivery product (64)
      • 3.1.20. Create new delivery product (65)
      • 3.1.21. Update delivery location (66)
      • 3.1.22. Delete Delivery location (66)
      • 3.1.23. View all delivery locations (68)
      • 3.1.24. Find delivery location (69)
      • 3.1.25. Create new delivery location (70)
      • 3.1.26. Update delivery location (71)
      • 3.1.27. Delete Delivery location (72)
      • 3.1.28. View all routes (73)
      • 3.1.29. Find route (74)
      • 3.1.30. Create new route (75)
      • 3.1.31. Update route (76)
      • 3.1.32. Delete Route (76)
      • 3.1.33. View all transportations (78)
      • 3.1.34. Find transportation (79)
      • 3.1.35. Create new transportation (80)
      • 3.1.36. Update new transportation (81)
      • 3.1.37. Delete Transportation (82)
      • 3.1.38. View all jobs (83)
      • 3.1.39. Find job (84)
      • 3.1.40. Create new job (85)
      • 3.1.41. Delete job (85)
    • 3.2. Activity diagrams (87)
      • 3.2.1. Sign in (87)
      • 3.2.2. Sign out (88)
      • 3.2.3. Change password (89)
      • 3.2.4. Reset password (89)
      • 3.2.5. Create account (90)
      • 3.2.6. Find account (91)
      • 3.2.7. View all accounts (93)
      • 3.2.8. Update account's status (94)
      • 3.2.9. Create T (95)
      • 3.2.10. Find T (96)
      • 3.2.11. View all Ts (97)
      • 3.2.12. Update T (98)
      • 3.2.13. Delete T (99)
      • 3.2.14. Choose route for the job (100)
      • 3.2.15. Create dispatch order (101)
      • 3.2.16. Approve driver's delivery problem request (102)
      • 3.2.17. Assign job to driver (103)
      • 3.2.18. Accept job (104)
      • 3.2.19. Confirm truck's status (105)
      • 3.2.20. Create delivery problem request (106)
      • 3.2.21. Upload delivery bill (107)
  • 4. Deployment View (108)
    • 4.1. Package Diagram (108)
  • 5. Implementation View (109)
    • 5.1. Android Application Architecture (109)
    • 5.2. Back-end Application Architecture (111)
  • 6. Data View (114)
    • 6.1. ER Diagram (114)
    • 6.2. Classes (114)
      • 6.2.1. User (114)
      • 6.2.2. Driver (115)
      • 6.2.3. Role (115)
      • 6.2.4. Permission (115)
      • 6.2.5. Authentication (115)
      • 6.2.6. Job (115)
      • 6.2.7. Product (116)
      • 6.2.8. Route (117)
      • 6.2.9. Location (117)
      • 6.2.10. Garrage (117)
      • 6.2.11. Transportation (117)
  • 7. User interface (118)
    • 7.1. Authentication screen (118)
    • 7.2. Reset password screen (119)
    • 7.3. Vehicle Pairing screen (120)
    • 7.4. Drawer screen (121)
    • 7.5. Job history screen (122)
    • 7.6. Account settings screen (124)
    • 7.7. Change password screen (125)
    • 7.8. Job list screen (126)
    • 7.9. To pick up location screen (127)
    • 7.10. To pick up location (map view) (128)
    • 7.11. End work screen (130)
  • 1. Security Matrix (130)
  • 2. Performance requirements (131)
  • 3. Implementation requirements (132)
  • 1. Advantages & Disadvantages (134)
    • 1.1. Advantages (134)
    • 1.2. Disadvantages (134)
  • 2. Alternatives (134)

Nội dung

User submit login form Exception The system returns an error if Pre-condition or Post-condition are not met Use case name Sign out Description User of the system can log out Actor Bo

Purpose

This document offers a comprehensive architectural overview of the system through multiple architectural views, highlighting various aspects of its structure It also aims to capture and communicate key architectural decisions that have been made, ensuring clear understanding of the system's design and development.

This article presents a comprehensive overview of the system architecture using a 4+1 view model, covering five distinct perspectives It details both the static and dynamic behaviors of the system, providing insights into its structural components and operational flows Additionally, the document outlines the essential requirements that the system must meet, ensuring a clear understanding of its design and functionality.

Scope

The software architecture document covers both static and dynamic aspects of the system, ensuring a comprehensive overview Utilizing the 4+1 view model as the reference framework, it incorporates multiple perspectives of the system to enhance clarity and understanding This approach helps create a detailed, consistent, and well-structured architecture document that effectively addresses all system components.

The article explores both static and dynamic system architectures, highlighting class diagrams, package diagrams, and other static design elements It also details the dynamic aspects through use case realizations and system sequence diagrams, providing a comprehensive overview of the system’s behavior.

Terminology

Business terminology

TP System A catch-all term to describe all the various services, sub-systems and modules that have been developed and operated to assist organizations in deliveries and fleet management

TP Web Admin The web UI that users login and interact with to perform various management functions and to access reports

TP Mobile Application The mobile application developed by TP which will be available for download on Google Play Store It is primarily used by drivers

Pickup Location The location where the goods will be picked up or loaded on to the vehicle for delivery

Unload Location The location where the delivered goods will be unloaded from the vehicle We're using this term to avoid confusion with the DeliveryLocation model

Driver In charge of checking and confirming truck status, delivery and updating job status as well

Technical terminology

CI/CD Continuous Integration, Continuous Deployment

Intended Audiences and Document Organization

Data classes & Rules

User

An user represents a human user who has access to the GT system Every user must be associated with one organization

Note that the users do not include the drivers Drivers are a separate data class from the users

[R-1] A user may be in one of these status: Active, Suspended or Deleted

[R-2] The user will not have any access to the functions on the TP system if the status of this User record is not Active

1.1.2 User Login IDs User loginIDs (saved under loginID field in User record) are used to identify the users during authentication and in the REST APIs

[R-1] Only alphanumeric, underscores and hyphens characters (up to 30 characters) are allowed to be used for login IDs

[R-2] Login IDs are immutable Users cannot change their loginIDs

[R-3] Login IDs are case-insensitive E.g login ID "ABC", "Abc" and "abc" refer to the same User record

When a user is deleted, their data is not physically removed from the system; instead, the user's status is updated to "Deleted." The loginID is modified by appending a nonce—a "#" followed by the last nine digits of the current epoch time in seconds—enabling the reuse of the loginID by other users For example, if the loginID is "alice" and the current epoch time is 1577880000, the new loginID will be "alice#577880000."

[R-1] Users’ passwords are not stored in plaintext in the database

Bcrypt is a secure password-hashing function that transforms plaintext passwords into a one-way hash digest, ensuring only the hashed version is stored in the database The system discards the original plaintext password after hashing, making it impossible to recover the original password from the stored hash This process enhances security by protecting user credentials from potential breaches.

User passwords must be at least 8 characters long and include at least one uppercase letter, number, or special character to ensure strong security Leading and trailing whitespaces are automatically removed before processing, preventing them from affecting bcrypt hash generation These password requirements help enhance account protection and maintain high security standards.

1.1.4 Delivery Product This represents the class of goods being moved by the delivery vehicles

[R-1] Each product can be identified by its product code

[R-2] E product must be classified under one of these categories:

1.1.5.1 Driver Status This represents the actual human driving the vehicle

Only organizations with the Transporter role can manage delivery drivers

[R-1] A driver may be in one of these status: Active, New, Suspended or Deleted

Active Driver account is active

Driver can login via TP Mobile Application and can be assigned delivery jobs when he is paired with a delivery vehicle

New Driver account is newly added

The driver needs to verify his mobile phone number

The driver cannot login via TP Mobile Application and cannot be assigned delivery jobs until he has completed the verification process

Suspended Driver account has been suspended

Driver cannot login via TP Mobile Application and cannot be assigned delivery jobs

Deleted Driver account has been deleted

This account cannot be signed in, and cannot be assigned any delivery jobs

Active Driver account is active

Driver can login via TP Mobile Application and can be assigned delivery jobs when he is paired with a delivery vehicle

[R-2] The driver will not have any access to the functions on the TP system if the status of this

Driver record is not Active

[R-3a] Newly created Driver records will have their status set to New

[R-3b] The status will be set to Active after they have verified their mobile phone number

[R-1] Drivers' passwords are not stored in plaintext in the database

The bcrypt password-hashing function securely converts plaintext passwords into a one-way hash digest, ensuring password protection This hashed value is stored in the database, while the original plaintext password is discarded, preventing its recovery Using bcrypt enhances security by making it computationally impractical to reverse the hash and retrieve the original password.

[R-2] Driver password must be a minimum of 4 characters Leading and trailing whitespaces must be stripped and not be included in bcrypt hash generation

[R-3] If the driver has forgotten the password, he can:

• request an User from his organization or the Admin organization to assign him a new password, or

• request for a password reset via the TP Mobile Application

1.1.6 Delivery Transportation This represents the vehicle that is moving the goods from pickup to destination

The TP organization can assist organizations with the Transporter role to manage the vehicles if needed

[R-1] A delivery vehicle may be in one of these status: Active, Maintenance or Deleted

DeliveryVehicle records are not physically deleted from the database; instead, when a record is marked as "deleted," a unique nonce suffix—comprising the last nine digits of epoch seconds—is appended to the vehicleNo field This approach ensures that the same truck license plate number can be reused for the same organization in the future, maintaining data integrity and traceability.

When a delivery truck is removed from the system, its corresponding DeliveryVehicle record remains in the database but is marked as deleted by updating its status field to 'Deleted.' To prevent vehicle number conflicts and enable reuse, the current vehicleNo is appended with a unique nonce suffix in the format "#." This approach allows for efficient management of vehicle records without physically deleting data, ensuring seamless vehicle reuse and maintaining data integrity.

For example, if the vehicleNo is "59A-12345" and the current epoch time is 1577880000, the new vehicleNo will be "59A-12345#577880000".

Actor list

1 Board of Directors Managing the business activities synthesized from the report of

2 Customer End user of the system, request delivery via website

3 Transportation accountant In charge of all the business related to the logistic field (managing job, location, route, truck, road, driver salary, )

4 Business accountant In charge of managing contract, bill and synthesize for the Board of

5 Driver manager In charge of managing, assign job for drivers in his/her team

6 Driver In charge of checking and confirming truck status, delivery and updating job status as well

Use Case View

Authentication

Use case name Sign in

Description User of the system can log in via the login form to use the system’s functions

Actor Board of Directors, Driver manager, Business accountant, Transportation accountant, Driver

Pre-condition ❖ User needs to input ID and password

❖ Match all required validation, no “Error text” appears

Post-condition ❖ User record matching the user ID found

❖ The provided password matches the user record’s password

❖ The user’s status is Active

Flow of event 1 User navigates to Login screen

2 User inputs ID and password

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Sign out

Description User of the system can log out

Actor Board of Directors, Driver manager, Business accountant, Transportation accountant, Driver

Pre-condition ❖ User has must been authenticated before

Post-condition ❖ System revokes (if any) authenticated status of the user

❖ The user’s status is Active

Flow of event 1 User navigates to Logout screen

2 User clicks the “Log out” button

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Change password

Description User of the system can change password

Actor Board of Directors, Driver manager, Business accountant, Transportation accountant, Driver

Pre-condition ❖ User has must been authenticated before

❖ The user’s status is Active

Post-condition ❖ Only encrypted password is saved

❖ System updates new password for the User record

Flow of event 1 User navigates to the Change password screen

3 User inputs new password twice

4 User clicks “Change password” button

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Reset password

Description User of the system can reset password

Actor Board of Directors, Driver manager, Business accountant, Transportation accountant, Driver

Pre-condition ❖ The user’s status is Active

❖ User record with the provided ID must exist in the database

Post-condition ❖ Only encrypted password is saved

❖ System updates new password for the User record

Flow of event 1 User navigates to Reset password screen

3 User clicks “Reset password” button

4 System will send 6-digit code via SMS

5 User inputs 6-digit code and navigate to new password screen

Exception The system returns an error if Pre-condition or Post-condition are not met

Account management

Use case name View all accountants

Description User with Board of Directors role can view all accountants

Pre-condition ❖ User must have an authenticated session

Flow of event 1 User navigates to Accountant screen

2 System returns list of current drivers (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new accountant

Description User with Board of Directors role can create new accountant account

Pre-condition ❖ User must have an authenticated session

Post-condition ❖ New account’s required information must be valid

Flow of event 1 User navigates to Accountant screen

3 User inputs new accountant’s information

5 System saves new accountant’s account

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Find accountant

Description User with Board of Directors role can find accountant account’s status

Pre-condition ❖ The user’s status is Active

Flow of event 1 User navigates to Accountant screen

3 User clicks on “Find” button

4 System returns a list of result

Exception The system returns an error if Pre-condition are not met

Use case name Update accountant account’s status

Description User with Board of Directors role can update new accountant account’s status

Pre-condition ❖ The user’s status is Active

Flow of event 1 User navigates to Accountant screen

2 User enables editing mode on an accountant

4 User clicks on “Save” button

5 System saves new accountant account’s status

Exception The system returns an error if Pre-condition are not met

Use case name View all driver managers

Description User with Transportation accountant role can view all driver managers

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver manager screen

2 System returns list of current driver managers (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new driver manager

Description User with Transportation accountant role can create new driver manager account

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Post-condition ❖ New account’s required information must be valid

Flow of event 1 User navigates to Driver manager screen

3 User inputs new driver manager’s information

5 System saves new driver manager’s account

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Find driver manager

Description User with Transportation accountant role can find driver manager account’s status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver manager screen

2 User inputs driver manager’s name

3 User clicks on “Find” button

4 System returns a list of result

Exception The system returns an error if Pre-condition are not met

2.2.8 Update driver manager account’s status

Use case name Update accountant account’s status

Description User with Transportation accountant role can update new accountant account’s status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver manager screen

2 User enables editing mode on a driver manager

4 User clicks on “Save” button

5 System saves new driver manager account’s status

Exception The system returns an error if Pre-condition are not met

Use case name View all drivers

Description User with Driver manager role can view all drivers

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver screen

2 System returns list of current drivers (ascending order) to user

Use case name Create new driver

Description User with Driver manager role can create new driver account

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Post-condition ❖ New account’s required information must be valid

Flow of event 1 User navigates to Driver screen

3 User inputs new driver’s information

5 System saves new driver account

Exception The system returns an error if Pre-condition or Post-condition are not met

Use case name Find driver

Description User with Driver manager role can find driver account’s status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver screen

3 User clicks on “Find” button

4 System returns a list of result

Exception The system returns an error if Pre-condition are not met

Use case name Update driver account’s status

Description User with Driver manager role can update new driver account’s status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver screen

2 User enables editing mode on a driver

4 User clicks on “Save” button

5 System saves new driver account’s status

Exception The system returns an error if Pre-condition are not met

Information management

Use case name Update account’s information

Description User can update his/her personal information

Actor Board of Directors, Driver manager, Business accountant, Transportation accountant, Driver

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New user’s personal information must be valid

Flow of event 1 User navigates to Personal screen

4 User clicks on “Save” button

5 System saves new driver account’s status

Exception The system returns an error if Pre-condition are not met

Delivery Product Management

Use case name View product list

Description User can view all existed products in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Product screen

2 System returns list of current products (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find product

Description User can find all existed products in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Product screen

2 User choose edit filter options (name, price, unit, …)

4 System returns result product list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new product

Description User can view all existed product in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New product’s information must be valid

Flow of event 1 User navigates to Product screen

2 User clicks on “Create” button

3 User inputs new product’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update a product

Description User can update a product

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New product’s information must be valid

Flow of event 1 User navigates to Product screen

2 User clicks on a product in the list

4 User inputs new product’s information

5 User clicks on “Save” button

6 System saves product’s new information

Exception The system returns an error if Pre-condition are not met

Use case name Delete a product

Description User can delete a product

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Product screen

2 User clicks on a product in the list

3 User clicks on “Delete” button

4 Application shows the pop up to make sure that user confirm deleting the product

5 System update product’s status to Delete if user chooses “OK”

Exception The system returns an error if Pre-condition are not met

Do you want to delete this product?

Delivery Location Management

Use case name View location list

Description User can view all existed locations in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 3 User navigates to Location screen

4 System returns list of current locations (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find location

Description User can find all existed locations in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Location screen

2 User choose edit filter options (name, address,…)

4 System returns result location list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new location

Description User can view all existed location in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New location’s information must be valid

Flow of event 1 User navigates to Location screen

2 User clicks on “Create” button

3 User inputs new location’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update a location

Description User can update a location

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New location’s information must be valid

Flow of event 1 User navigates to Location screen

2 User clicks on a location in the list

4 User inputs new location’s information

5 User clicks on “Save” button

6 System saves location’s new information

Exception The system returns an error if Pre-condition are not met

Use case name Delete a location

Description User can delete a location

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Location screen

2 User clicks on a location in the list

3 User clicks on “Delete” button

4 Application shows the pop up to make sure that user confirm deleting the location

5 System update location’s status to Delete if user chooses “OK”

Exception The system returns an error if Pre-condition are not met

Do you want to delete this location?

Route Management

Use case name View route list

Description User can view all existed routes in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Route screen

2 System returns list of current routes (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find route

Description User can find all existed routes in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Route screen

2 User choose edit filter options (name, start location, end location, …)

4 System returns result route list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new route

Description User can view all existed route in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New route’s information must be valid

Flow of event 1 User navigates to Route screen

2 User clicks on “Create” button

3 User choose Start location, End location from the Location list and inputs new route’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update a route

Description User can update a route

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New route’s information must be valid

Flow of event 1 User navigates to Route screen

2 User clicks on a route in the list

4 User inputs new route’s information

5 User clicks on “Save” button

6 System saves route’s new information

Exception The system returns an error if Pre-condition are not met

Use case name Delete a route

Description User can delete a route

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Route screen

2 User clicks on a route in the list

3 User clicks on “Delete” button

4 Application shows the pop up to make sure that user confirm deleting the route

5 System update route’s status to Delete if user chooses “OK”

Exception The system returns an error if Pre-condition are not met

Do you want to delete this route?

Transportation Management

Use case name View truck list

Description User can view all existed trucks in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Truck screen

2 System returns list of current trucks (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find truck

Description User can find all existed trucks in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Truck screen

2 User choose edit filter options (name, license plate, …)

4 System returns result truck list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new truck

Description User can view all existed truck in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New truck’s information must be valid

Flow of event 1 User navigates to Truck screen

2 User clicks on “Create” button

3 User inputs new truck’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update a truck

Description User can update a truck

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New truck’s information must be valid

Flow of event 1 User navigates to Truck screen

2 User clicks on a truck in the list

4 User inputs new truck’s information

5 User clicks on “Save” button

6 System saves truck’s new information

Exception The system returns an error if Pre-condition are not met

Use case name Delete a truck

Description User can delete a truck

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Truck screen

2 User clicks on a truck in the list

3 User clicks on “Delete” button

4 Application shows the pop up to make sure that user confirm deleting the truck

5 System update truck’s status to Delete if user chooses “OK”

Exception The system returns an error if Pre-condition are not met

Do you want to delete this truck?

Booking Job Management

Use case name View job list

Description User can view all existed jobs in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 3 User navigates to Job screen

4 System returns list of current jobs (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find job

Description User can find all existed jobs in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Job screen

2 User choose edit filter options

4 System returns result job list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new job

Description User can view all existed job in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New job’s information must be valid

Flow of event 1 User navigates to Job screen

2 User clicks on “Create” button

3 User inputs new job’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update a job

Description User can update a job

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New job’s information must be valid

Flow of event 1 User navigates to Job screen

2 User clicks on a job in the list

4 User inputs new job’s information

5 User clicks on “Save” button

6 System saves job’s new information

Exception The system returns an error if Pre-condition are not met

Use case name Delete a job

Description User can delete a job

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Job screen

2 User clicks on a job in the list

3 User clicks on “Delete” button

4 Application shows the pop up to make sure that user confirm deleting the job

5 System update job’s status to Delete if user chooses “OK”

Exception The system returns an error if Pre-condition are not met

Do you want to delete this job?

2.8.6 Choose route for the job

Use case name Choose route for the job

Description User can choose the route that can minimum the fee

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Choose route screen

2 System shows list of potential routes

4 User clicks on “Save” button

5 System saves route of the job

Exception The system returns an error if Pre-condition are not met

Use case name Create dispatch order

Description User can create dispatch order for a driver manager

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Job screen

2 User clicks on a job in the list

3 User clicks on “Create dispatch order” button

5 User clicks on “Save” button

6 System saves dispatch order and send notification to driver manager

Exception The system returns an error if Pre-condition are not met

2.8.8 Approve driver's delivery problem request

Use case name Approve driver's delivery problem request

Description User can approve driver's delivery problem request so that the driver can use the partner’s services

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Job screen

2 User clicks on a problem request in the list

3 User clicks on “Approve” button

4 System update problem request’s status to Approved and then send notification to driver

Exception The system returns an error if Pre-condition are not met

Use case name Approve driver's delivery problem request

Description User can approve driver's delivery problem request so that the driver can use the partner’s services

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver screen

2 User clicks on “Salary” button

3 System returns list of driver and their respective salary on the current month

5 User clicks on “Pay” button

6 System update problem driver’s status to Payed and then send notification to driver

Exception The system returns an error if Pre-condition are not met

Delivery Process Management

Use case name Assign job to driver

Description User can assign job to driver

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Driver screen

2 User clicks on “Salary” button

3 System returns list of driver and their respective salary on the current month

5 User clicks on “Pay” button

6 System update problem driver’s status to Payed and then send notification to driver

Exception The system returns an error if Pre-condition are not met

2.9.2 View job's information of team member

Use case name View job's information of team member

Description User can approve driver's delivery problem request so that the driver can use the partner’s services

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 7 User navigates to Driver screen

8 User clicks on “Salary” button

9 System returns list of driver and their respective salary on the current month

11 User clicks on “Pay” button

12 System update problem driver’s status to Payed and then send notification to driver

Exception The system returns an error if Pre-condition are not met

Use case name Approve job

Description User can approve job assigned by the driver manager

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ There must be at least 1 job in the list

Flow of event 1 User clicks on “View jobs” button

2 System returns list of jobs asigned by the driver manager for user to choose

4 User clicks on “Approve” button

5 System saves informations for the job

Exception The system returns an error if Pre-condition are not met

Use case name Confirm truck’s status

Description User can submit truck’s status to the system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ There must be at least 1 job in the list

Flow of event 1 User navigates to “Truck’s status” screen

2 System returns list of jobs asigned by the driver manager for user to choose

4 User clicks on “Approve” button

5 System saves information for the job

Exception The system returns an error if Pre-condition are not met

Use case name Create delivery problem request

Users can submit a delivery problem request if they encounter issues during the delivery process, such as needing to replace truck parts This request can be approved by the accountant, allowing the delivery to proceed smoothly Properly reporting delivery problems ensures timely resolution and maintains an efficient delivery workflow.

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User clicks on “Have problem?” button

2 User chooses problem options, inputs information

4 User clicks on “Submit” button

5 System saves problem request and send notification to the accountant

Exception The system returns an error if Pre-condition are not met

Use case name Update delivery status

Description User can update delivery status to Started, PickUp, Delivery, Discharge

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User clicks on “Confirm” button after every step of delivery process is done

2 System saves status of the delivery process

Exception The system returns an error if Pre-condition are not met

Use case name Upload delivery bill

Description User can upload delivery bill as a proof after he/she use services of the partner

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User clicks on “Submit bull” button

2 Devices open the camera for user to take a picture

3 User clicks on “Submit” button

4 System saves the delivery bill

Exception The system returns an error if Pre-condition are not met

Contract & Receipt/Payment Management

Use case name View e-Contract list

Description User can view all e-Contracts in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to e-Contract screen

2 System returns list of current e-Contracts (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find e-Contract

Description User can find all existed e-Contracts in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to e-Contract screen

2 User choose edit filter options

4 System returns result e-Contract list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name View receipt list

Description User can view all receipts in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to receipt screen

2 System returns list of current receipts (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find receipt

Description User can find all existed receipts in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to receipt screen

2 User choose edit filter options

4 System returns result receipt list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name View payment list

Description User can view all payments in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to payment screen

2 System returns list of current payments (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name Find payment

Description User can find all existed payments in system with many filter options

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to payment screen

2 User choose edit filter options

4 System returns result payment list (ascending order) to user

Exception The system returns an error if Pre-condition are not met

Use case name View overall report

Description User can view number of jobs, revenue of locations, products, customers

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to report screen

3 System returns overall report to user

Exception The system returns an error if Pre-condition are not met

Use case name View detail report

Description User can view report based on filters: location, route, product, customer, partner, driver manager

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to report screen

3 User inputs options to filter report information

4 System returns detail report to user

Exception The system returns an error if Pre-condition are not met

Use case name View balance

Description User can view current balance

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User logs in into the system

2 System show the current balance to user

Exception The system returns an error if Pre-condition are not met

Use case name Create new e-Contract

Description User can view all existed e-Contract in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New e-Contract’s information must be valid

Flow of event 1 User navigates to E-Contract screen

2 User clicks on “Create” button

3 User inputs new e-Contract’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Create new bill

Description User can view all existed bill in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New bill’s information must be valid

Flow of event 1 User navigates to Bill screen

2 User clicks on “Create” button

3 User inputs new bill’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Create new payment

Description User can view all existed payment in system

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

❖ New payment’s information must be valid

Flow of event 1 User navigates to Payment screen

2 User clicks on “Create” button

3 User inputs new payment’s information

4 User clicks on “Save” button

Exception The system returns an error if Pre-condition are not met

Use case name Update e-Contract's status

Description User can update e-Contract's status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Contract screen

2 User clicks on a contract in the list

4 User chooses an option from a dropdown

5 User clicks on “Save” button

6 System saves e-Contract’s new status

Exception The system returns an error if Pre-condition are not met

Use case name Update bill's status

Description User can update bill's status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Contract screen

2 User clicks on a contract in the list

4 User chooses an option from a dropdown

5 User clicks on “Save” button

6 System saves bill’s new status

Exception The system returns an error if Pre-condition are not met

Use case name Update payment's status

Description User can update payment's status

Pre-condition ❖ User must have an authenticated session

❖ The user’s status is Active

Flow of event 1 User navigates to Contract screen

2 User clicks on a contract in the list

4 User chooses an option from a dropdown

5 User clicks on “Save” button

6 System saves payment’s new status

Exception The system returns an error if Pre-condition are not met

Process View

System sequence diagrams

3.1.10 Create new driver manager account

Activity diagrams

- Board of Directors can create Accoutant (Business, Transportation) account

- Accountant (Business, Transportation) can create Driver manager account

- Driver manager account can create Driver account

- Board of Directors can find Accoutant (Business, Transportation) account

- Accountant (Business, Transportation) can find Driver manager account

- Driver manager account can find Driver account

- Board of Directors can view Accoutant (Business, Transportation) account

- Accountant (Business, Transportation) can view Driver manager account

- Driver manager account can view Driver account

- Board of Directors can update Accoutant (Business, Transportation) account’s status

- Accountant (Business, Transportation) can update Driver manager account’s status

- Driver manager account can update Driver account’s status

- T can be Product, Location, Route, Transportation, Job

- T can be Product, Location, Route, Transportation, Job

- T can be Product, Location, Route, Transportation, Job

- T can be Product, Location, Route, Transportation, Job

- T can be Product, Location, Route, Transportation, Job

3.2.14 Choose route for the job

3.2.16 Approve driver's delivery problem request

Deployment View

Package Diagram

All service of the application must be implemented with this package structure.

Implementation View

Android Application Architecture

Clean Architecture applied for Android framework must fulfill the following criterias:

• Independent of any external agency

Back-end Application Architecture

Clean Architecture applied for Back-end framework must fulfill the following criterias:

• Independent of Back-end framework

• Independent of any external agency

Clean Architecture implementation for SpringBoot:

Clean Architecture implementation for NestJs:

Data View

Classes

6.2.1 User Used for recording staff and admin’ data

The user account database includes essential fields such as a unique 'id' (UUID) and 'username' for authentication purposes Each account must have a 'password' and 'email' address, both marked as non-null to ensure security and communication The 'name' field displays the user's full name for identification, while the 'status' field indicates the account's current state, which can be active, new, suspended, resigned, or deleted Additionally, the 'role_id' links to the user's role (e.g., admin, accountant, manager) for authorization, using a UUID to define permissions within the system Proper structuring of these fields ensures secure, reliable user management aligned with SEO best practices.

The database includes a unique identifier (uuid) for each account, along with essential details such as the user's name and phone number, both of which are mandatory fields Each account is secured with a password, ensuring user privacy and security The account status is represented by an integer value, indicating whether the account is active, new, suspended, resigned, or deleted, which helps manage user access effectively To facilitate account validation or password resets, an OTP code is utilized, stored as a string Additionally, the system tracks the expiration time of the OTP code with a timestamp, ensuring secure and timely verification processes.

Field name Description Type Constraints id uuid NOT NULL title Name of the role string NOT NULL

Field name Description Type Constraints id uuid NOT NULL title Name of the permisstion string NOT NULL enable Whether the permission is able or not boolean NOT NULL

The system records essential login details, including a unique identifier (id) for each session, the user’s ID (userId), and the exact login timestamp (login_at) It also captures the device used for login (device_id), ensuring all fields are mandatory for accurate tracking These details are stored in a structured format, with constraints enforcing data integrity through non-null requirements and specific data types such as UUID for identifiers and timestamp for login times.

This dataset captures comprehensive information about transportation jobs, including driver and truck details identified by UUIDs, route information, and financials such as total price Key timestamps document each phase of the delivery process, from assignment and pickup to unloading and completion, ensuring clear tracking of progress Contact details for both pick-up and unload locations—names and phone numbers—facilitate smooth communication Additional data includes start and end garage identifiers and any specific notes directed to the driver, supporting efficient logistics management.

Field name Description Type Constraints id uuid NOT NULL name string NOT NULL unit Unit type of the product string NOT NULL type int NOT NULL, IN

(DANGEROUS, MACHINE, ELECTRONIC, USE_IN_AGRICULTURE, FOOD, COSMETIC,

MEDICINE, FRAGILE, OTHERS) base_price Base price of the product double NOT NULL

This dataset details key information about transportation routes, including a unique identifier (id) and the starting (from) and ending (to) location IDs, all essential for accurate route tracking It specifies the trip’s length in kilometers (length), which is a critical factor in cost calculations The pricing structure includes a trip-based cost applicable for short trips and a price per kilometer (trip_based_cost and price per km), ensuring flexible and accurate billing Additionally, the dataset accounts for freight weight, with a ton-based cost (ton_based_cost) applied per unit for short distances, optimizing cost efficiency based on cargo weight The 'enabled' boolean indicates whether the route is active, allowing for dynamic route management Overall, this structured data supports effective route management and precise cost estimation in transportation logistics.

The database includes a unique identifier (id) for each entry, utilizing a UUID format to ensure global uniqueness Each record contains essential information such as the name and address of the location, both of which are mandatory fields The geographic coordinates are specified with latitude (lat) and longitude (lng), both represented as double-precision numbers and required to accurately pinpoint the location's position This comprehensive data structure enables precise and reliable location data management for any application.

The garage information includes a unique identifier (id) in UUID format, ensuring each location is distinctly recognized It also captures the name and address of the garage, both of which are mandatory fields that provide essential identification details The geographical coordinates are specified through latitude (lat) and longitude (lng) as double data types, accurately pinpointing the garage's exact location on the map These fields are designed with strict constraints to maintain data integrity, making the information reliable for location-based services and navigation purposes.

This article describes the key attributes of a truck management system, including the unique identifier (id), license plate number, and maximum load capacity Each truck is associated with a specific garage via the garage_id, which links to detailed garage information The system monitors the delivery status, which indicates whether the truck is on the road or performing other status updates Ensuring data accuracy and integrity, all fields such as id, license_plate, load, and delivery_status are mandatory and adhere to specified data types and constraints, supporting efficient fleet management and real-time tracking.

User interface

Authentication screen

Id Name Type Feature Calling condition Note

1 phoneEt EditText Input the phone number Click to input

2 passwordEt EditText Input the password Click to input

3 rememberMeCb Checkbox Enable remember me mode

4 forgotPasswordTv TextView Navigate to “Reset password” screen Click to navigate

5 languageLv ListView Choose language Click to choose

6 loginBtn Button Authorize and navigate to main screen Click to navigate

Reset password screen

Id Name Type Feature Calling condition Note

1 phoneEt EditText Input the phone number Click to input

2 sendBtn Button Send OTP code to the phone number Click to send

3 goBackBtn Button Navigate one back Click to navigate

Vehicle Pairing screen

Id Name Type Feature Calling condition Note

1 nameTv TextView Show the driver’s name

2 phoneTv TextView Show the driver’s phone number

3 licensePlateTv TextView Show the truck’s license plate

4 startWorkBtn Button Navigate to list of works screen Click to navigate

5 pairAgainBtn Button Repair with another truck Click to repair

6 drawerBtn Button Open drawer Click to open

Drawer screen

Id Name Type Feature Calling condition Note

1 jobHistoryBtn Button Navigate to “Job History” screen Click to navigate

2 accountSettingsBtn Button Navigate to “Account

3 languageLv ListView Change app’s language Click to change

4 logoutBtn Button Navigate to “Log in” screen Click to navigate

5 closeBtn Button Close drawer Click to close

Job history screen

Id Name Type Feature Calling condition

1 chooseDateBtn Button Choose date to open calendar view Click to choose

2 goBackBtn Button Go one back Click to navigate

Id Name Type Feature Calling condition Note

1 chooseDateCalendarView CalendarView Choose date to see history Click to choose

2 cancelBtn Button Close calendar view Click to close

3 okBtn Button Confirm date to see history Click to confirm

Account settings screen

Id Name Type Feature Calling condition Note

1 driverNameTv TextView Input driver’s name

2 phoneNumberTv TextView Input driver’s phone number

3 companyTv TextView Input driver’s company

4 vehicleNumberTv TextView Input truck’s license number

5 editProfileBtn Button Enable edit profile Click to close

6 changePasswordBtn Button Navigate to “Change

7 goBackBtn Button Go one back Click to navigate

Change password screen

Id Name Type Feature Calling condition Note

1 currentPasswordEd EditText Input current password Click to input

2 newPasswordEd EditText Input new password Click to input

3 confirmPasswordEd EditText Input new password the second time Click to input

4 saveBtn Button Click to save new password and navigate to

Click to save and navigate

5 goBackBtn Button Go one back Click to navigate

Job list screen

Id Name Type Feature Calling condition Note

1 jobChoosedRv RecyclerView Choose job to deliver Click to choose

2 startWorkBtn Button Confirm job to start work and navigate to Job screen

3 goBackBtn Button Go one back Click to navigate

To pick up location screen

Id Name Type Feature Calling condition Note

1 pickupLocationTv TextView Show pick up location name

2 deliveryLocationTv TextView Show delivery location name

3 senderNameTv TextView Show sender name

4 productTypeTv TextView Show product type

5 vehicleNoTv TextView Show vehicle’s license plate

6 vehicleWeightTv TextView Show vehicle’s weight

8 notesTv TextView Show notes to driver

9 arrivedForPickupBtn Button Navigate to “Pick Up

Arrived” screen Click to navigate

To pick up location (map view)

Id Name Type Feature Calling condition Note

1 currentLocationMarker Marker Show current location

2 pickupLocationMarker Marker Show pick up location

3 moveToCurrentLocationBtn Button Move to current location Click to move

4 openGoogleMapBtn Button Open Google Map application Click to Open

5 arrivedForPickupBtn Button Navigate to “Pick up” screen Click to navigate

Id Name Type Feature Calling condition

1 arrivedBtn Button Confirm arrived pick up location Click to confirm

2 continueBtn Button Continue delivery Click to close

End work screen

Security Matrix

Performance requirements

• Number of users the application can handle: 2000

• Data growth rate: 30MB/day

Availability level required for this application: 24*7

Implementation requirements

The application server will be deployed in Singapore (singapore-2b)

The application must be maintained at least 1 time every month.

The maintenances are undergone on the last days of the month (including 28th, 29th, 30th, 31st based on the month)

Load balancer Load balancing refers to efficiently distributing incoming network traffic across a group of backend servers, also known as a server farm or server pool

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management

MongoDB MongoDB is a source-available cross-platform document-oriented database program Classified as a NoSQL database program, MongoDB uses JSON-like documents with optional schemas

PostgreSQL PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance

Kafka Apache Kafka is a distributed event store and stream-processing platform

Amazon S3 Amazon Simple Storage Service is a service offered by Amazon Web

Services that provides object storage through a web service interface

Firebase Cloud Messaging FCM is used to notify a client app that new email or other data is available to sync

Twilio offers programmable communication tools through its web service APIs, enabling businesses to make and receive phone calls, send and receive text messages, and perform various other communication functions seamlessly Meanwhile, Zipkin is a distributed tracing system that collects timing data crucial for troubleshooting latency issues within complex service architectures Both platforms enhance communication efficiency and system performance, making them essential tools for modern digital infrastructure.

Advantages & Disadvantages

Advantages

By using this architecture, there are multiple advantages that can be pointed out:

• Availability: The architecture availability attribute is maintained due to the implementation of load balancer and orchestration tool

• Security: Using authentication and authorization with JWT token to preserve the application Besides, SSL and Amazon S3 is integrated to the application to secure the user’s data

Leveraging Domain Driven Design and Clean Architecture ensures high modifiability and maintainability of your software, as these approaches strictly adhere to the SOLID principles, promoting clear separation of concerns and Dependency Inversion Additionally, implementing a microservices architecture enables seamless switching between different services, enhancing flexibility for developers and stakeholders alike This combination of design patterns and architectural style optimizes your application's adaptability and scalability.

• Performance: For the performance goal attribute, as the growth of NestJs technology in recent years and the stability of SpringBoot framework, the performance of the client can be reserved

• Testability: The application in both client and server is designed following the Test Driven

Development process with Agile, this allows developers the time to write unit tests for the source code they have built Besides, because of the rich documentation, the Quality

Control (teste) could easily apply integration testing Furthermore, applying pipelines with CI/CD, could be expected to enhance the testability of the application

• Usability: The application provides a message module, which allows users to communicate with each others As a result, this will maintain the usability of the application

• Development team skill requirements: Because of using the microservice architecture, the development team does not need to handle difficult tasks, hence it is easier to hiring process

• Development time: The application utilizes multiple cloud services, which is already packaged and extensive, as a result, the development time of the application could be low.

Disadvantages

On the other hand, this architecture also brings a drawback:

The high development cost associated with microservice architecture stems from its reliance on third-party service providers like Amazon and Firebase, which can lead to increased production expenses compared to other architectural approaches.

Alternatives

Component Current using Alternative solution Note

Oschestration tool Kubernetes Docker Swam Kubernetes is deprecating

Docker as a container runtime, thus the performance could be reduced

Kafka RabbitMQ If the low latency message delivery and complex routing

Ngày đăng: 01/02/2023, 21:10

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN