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