0% found this document useful (0 votes)
8 views12 pages

Shell Fleet Management System Design

The document outlines the software design for the Shell Fleet Management System (FMS), detailing its architecture, design considerations, and CRUD operations for vehicle, country, and driver entities. It emphasizes the use of Azure Active Directory for authentication and describes various design patterns employed in the application. Additionally, it includes wireframes and domain models for the key entities involved in the system.

Uploaded by

rajnish34it
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views12 pages

Shell Fleet Management System Design

The document outlines the software design for the Shell Fleet Management System (FMS), detailing its architecture, design considerations, and CRUD operations for vehicle, country, and driver entities. It emphasizes the use of Azure Active Directory for authentication and describes various design patterns employed in the application. Additionally, it includes wireframes and domain models for the key entities involved in the system.

Uploaded by

rajnish34it
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Shell Fleet Management System

Software Design Doc

Sensitivity: Internal & Restricted


Contents
Scope.....................................................................................................................................................2
Abstract.................................................................................................................................................2
Overall Architecture..............................................................................................................................2
Design Considerations...........................................................................................................................3
Authentication...................................................................................................................................3
Resilience...........................................................................................................................................3
Decoupled.........................................................................................................................................3
Design................................................................................................................................................3
FMS........................................................................................................................................................3
FMSS......................................................................................................................................................4
VehicleController Details...................................................................................................................4
CountryController..............................................................................................................................6
DriverController.................................................................................................................................7
Domain..............................................................................................................................................9
Database..............................................................................................................................................10

Sensitivity: Internal & Restricted


Scope
This document depict the high level design and architectural consideration for Shell Fleet
Management Application and Service, which can used for initial Tech Spike.

Abstract
Shell Fleet management application is used by shell operators for registering driver and their vehicle
details for managing the shell fleet business and its operations.

Overall Architecture

The above picture show the high level architecture of Fleet management System (FMS) with FMS is
developed as a web app with custom authentication or Azure Active Directory (AAD) authentication
and Fleet management System Service (FMSS) as web api secured with AAD B2B.

Design Considerations

Authentication
Some of the authentication can be used are

Azure AD B2C - for enduser authentication

Azure AD B2B - for service to service authentication

Open ID Connect - third party authentication (facebook, google, etc).

Sensitivity: Internal & Restricted


Custom Authentication – UserName, Passphrase

Resilience
Azure web app is used for resilience with proper azure app service plan.

Decoupled
Application is decoupled and made as web app and web api service.

Design Patterns
1. SOLID
2. Factory
3. Repository pattern (Entity Framework)
4. Dependency Injection
5. Layered Architecture
6. Adapter pattern
7. Retry pattern
8. Cloud Design Patterns

FMS Web App Wireframe:

Fig: Driver Page for Enrolment

Sensitivity: Internal & Restricted


Fig: Driver page for overall view and modifications

FMSS Web Api:


We are going to use Restful service (ASP .Net Web API) for our case study [Link] Web
Api solution, we will have three controllers VehicleController,DriveController and CountryController.

All these controllers will support CRUD (Create, Read, Update and Delete) operation for respective
entities.

VehicleController Details :
Controller will expose CRUD operation for vehicle entity.

Operation list in Vehicle Controller:

GetAllVehicleDetails : This method will return list of registered vehicle details.

Url : api/v1/Vehicle/ VehicleList

Sample

1. [RoutePrefix(“api/v1/Vehicle”)
2. public class VehicleController : ApiController
3. {
4.
5. [Route(“VehicleList”)
6. [HttpGet]
7. Public async Task<IHttpActionResult> GetAllVehicleDetails()
8. { }

GetVehicleDetailById : This method will return Vehicle detail based on id.

Sensitivity: Internal & Restricted


Url : api/v1/Vehicle/ Vehicle/{id}

1. [RoutePrefix(“api/v1/Vehicle”)
2. public class VehicleController : ApiController
3. {
4. [Route(“Vehicle/{id}”)
5. [HttpGet]
6. Public async Task<IHttpActionResult> GetVehicleDetailById(int id)
7. { }

RegisterVehicle :This metod will be used to register new Vehicle.

Url : api/v1/Vehicle/ RegisterVehicle


Method signature:

8. [RoutePrefix(“api/v1/Vehicle”)
9. public class VehicleController : ApiController
10. {
11. [Route(“RegisterVehicle”)
12. [HttpPost]
13. Public async Task<IHttpActionResult> RegisterVehicle(VehicleModel
request)

{ }

UpdateVehicleDetail : This method will be used to update already register Vehicle details in system.

Url : api/v1/Vehicle/ UpdateVehicleDetail


Method Signature:

14. [RoutePrefix(“api/v1/Vehicle”)
15. public class VehicleController : ApiController
16. {
17. [Route(“UpdateVehicleDetail”)
18. [HttpPut]
19. Public async Task<IHttpActionResult> UpdateVehicleDetail (VehicleModel request)

{ }

DeregisterVehicle : This method will be used for deregistration.


Url : api/v1/Vehicle/ DeregisterVehicle/{id}
Method Signature:

20. [RoutePrefix(“api/v1/Vehicle”)

Sensitivity: Internal & Restricted


21. public class VehicleController : ApiController
22. {
23. [Route(“DeregisterVehicle/{id}”)
24. [HttpDelete]
25. Public async Task<IHttpActionResult> DeregisterVehicle (int id)

{ }

CountryController Details :
Controller will expose CRUD operation for country entity.

Operation list in Country Controller:

GetCountryDetailList : This method will return list of country details.

Url : api/v1/Country/ CountryList

Method signature:

9. [RoutePrefix(“api/v1/Country”)
10. public class CountryController : ApiController
11. {
12.
13. [Route(“CountryList”)
14. [HttpGet]
15. Public async Task<IHttpActionResult>
GetCountryDetailList()
16. { }

GetCountryDetailById : This method will return country detail based on id.

Url : api/v1/Country/ CountryDetail/{id}

Method signature:

26. [RoutePrefix(“api/v1/Vehicle”)
27. public class CountryController : ApiController
28. {
29. [Route(“CountryDetail/{id}”)
30. [HttpGet]
31. Public async Task<IHttpActionResult> CountryDetailById(int id)
32. { }

RegisterCountry :This metod will be used to register new country detail.

Url : api/v1/Country/ RegisterCountry

Sensitivity: Internal & Restricted


Method signature:

33. [RoutePrefix(“api/v1/Country”)
34. public class CountryController : ApiController
35. {
36. [Route(“RegisterCountry”)
37. [HttpPost]
38. Public async Task<IHttpActionResult> RegisterCountry(CountryModel
request)

{ }

UpdateCountryDetail : This method will be used to update already register country details in system.

Url : api/v1/Country/ UpdateCountryDetail

Method signature:

39. [RoutePrefix(“api/v1/Country”)
40. public class CountryController : ApiController
41. {
42. [Route(“UpdateCountryDetail”)
43. [HttpPut]
44. Public async Task<IHttpActionResult> UpdateCountryDetail (CountryModel
request)

{ }

DeregisterCountry : This method will be used for deregistration.


Url : api/v1/Country/ DeregisterCountry/{id}

Method signature:

45. [RoutePrefix(“api/v1/Country”)
46. public class CountryController : ApiController
47. {
48. [Route(“DeregisterCountry/{id}”)
49. [HttpDelete]
50. Public async Task<IHttpActionResult> DeregisterCountry (int id)

{ }

DriverController Details :

Sensitivity: Internal & Restricted


Controller will expose CRUD operation for Driver entity.

Operation list in Driver Controller:

GetRegisteredDriverList : This method will return list of resitered driver details.

Url : api/v1/Driver/DriverList

Method signature:

17. [RoutePrefix(“api/v1/Driver”)
18. public class DriverController : ApiController
19. {
20.
21. [Route(“DriverList”)
22. [HttpGet]
23. Public async Task<IHttpActionResult> GetDriverDetailList()
24. { }

GetDriverDetailById : This method will return driver detail based on id.

Url : api/v1/Driver/DriverDetail

Method signature:

51. [RoutePrefix(“api/v1/Driver”)
52. public class DriverController : ApiController
53. {
54. [Route(“DriverDetail/{id}”)
55. [HttpGet]
56. Public async Task<IHttpActionResult> DriverDetailById(int id)
57. { }

RegisterDriver :This metod will be used to register new driver detail.

Url : api/v1/Driver/RegisterDriver

Method signature:

58. [RoutePrefix(“api/v1/Driver”)
59. public class DriverController : ApiController
60. {
61. [Route(“RegisterDriver”)
62. [HttpPost]
63. Public async Task<IHttpActionResult> RegisterDriver(DriverModel
request)

{ }

Sensitivity: Internal & Restricted


UpdateDriverDetail : This method will be used to update already register driver details in system.

Url : api/v1/Driver/ UpdateDriverDetail

Method signature:

64. [RoutePrefix(“api/v1/Driver”)
65. public class DriverController : ApiController
66. {
67. [Route(“UpdateDriverDetail”)
68. [HttpPut]
69. Public async Task<IHttpActionResult> UpdateDriverDetail (DriverModel
request)

{ }

DeregisterDriver : This method will be used for deregistration.


Url : api/v1/Driver/DeregisterDriver/{id}

Method signature:

70. [RoutePrefix(“api/v1/Driver”)
71. public class DriverController : ApiController
72. {
73. [Route(“DeregisterDriver/{id}”)
74. [HttpDelete]
75. Public async Task<IHttpActionResult> DeregisterCountry (int id)

{ }

Domain Models:
public class VehicleModel

{
public int VehicleId { get; set; }
public string LicencePlateNumber { get; set; }
public VehicleType Type{ get; set; }

public string VechicleOwner {get;set;}

public int CountryId {get;set;}

public string CountryPermit {get;set;}

public class CountryModel

Sensitivity: Internal & Restricted


{
public int CountryId { get; set; }
public string CountryName { get; set; }
}

public class DriverModel

{
public int DriverId { get; set; }
public string Firstname { get; set; }
public string Lastname{ get; set; }

public string DriverLicenceNumber {get;set;}

public string Address {get;set;}

public string CountryPermit {get;set;}

public enum VehicleType

Unknown,

ShortTruck,

LongTruck

Database ER Design:

--End--

Sensitivity: Internal & Restricted


Sensitivity: Internal & Restricted

You might also like