Oil and gas management software created for a U.S. federal agency to monitor the current condition, reliability and safety of oil platforms.
Our client — the Bureau of Safety and Environmental Enforcement (BSEE) — vigorously oversees nation-wide and U.S. offshore work safety, emergency preparedness, environmental compliance, and conservation of resources.
They were looking for a backend .NET development team to improve the current version of their web application for monitoring oil development and extraction platforms in real time. We’ve already had a solid .NET team with the necessary qualifications, so we were able to meet all of the agency’s requirements in full, and that was how the Bureau chose MBicycle for oil and gas land management software development.
The main purpose of this web application was to check the statuses of each oil platform in operation on the Bureau-regulated territories and get the proper information about their configurations and locations, water depth, deck height, production data, the data about past inspections, etc. With this information at hand, the platforms’ managers could monitor their current condition, reliability, and safety.
Initially, the application worked very slowly even with a small amount of processed data. Providing that the client was planning to import more data for processing and additional calculations, this would increase the server load and could practically halt the application altogether. For this reason, the app required refactoring and optimization.
Since the main task of the MBicycle team was to improve the performance of this web application, we started by optimizing the underlying database structure, namely:
- Server requests sent to the database
- Data processing on the server
- Client-side requests sent to the server
The last step in improving the application was to optimize the client-side request processing and page rendering. Along the way, we refactored the code and applied more flexible architectural solutions to prepare the application for the changes to be introduced later in the project.
This was the first and very important stage in the implementation of our solution for the Bureau. Since we successfully completed this stage and the optimization brought a significant increase in productivity, we went on and extended the app functionality by adding new tables for calculations, among other features.
Refactoring the App
To optimize the existing version of the application, the MBicycle team took the following steps:
- Changing the database type from Model First to Code First for more convenient management.
- Dividing the main table in the oil platform database into two separate tables — the one with basic data and the other with more detailed data loaded only to certain parts of the application.
- Removing database access from the loop to minimize connections.
- Refactoring the code by dividing the logic into stages (database access and data processing) and transferring them to the client-side with controllers responsible for data management between different components/services.
- Migrating heavy calculations to the thread pool so as not to block the main application thread when the calculations were running.
- Making all client-side requests available for asynchronous execution.
- Enabling caching of the app’s master data.
- Fixing the rendering of some visual components.
All the app optimization steps listed above gave a tangible boost to the performance, so the next step was to introduce new features and extend the app functionality.
The MBicycle team implemented the following features:
- New tables added to the database with extended information about oil platforms.
- New data imported from Excel spreadsheets with full logging and user notifications about the import process and results.
- The new calculation of risk factors for oil platforms.
- Extended data management.
- A new type of the risk curve.
- Data processing for new types of oil platforms.
- Extended information about the oil platforms on the dashboard and in other application components.
The Bureau also had another application integrated with the main one, aggregating weather data of the marine area where the platforms were located, using the Matlab software. Our team improved this application as follows:
- We corrected the flaws left by the previous developer, which were related to errors in the client-side data processing.
- We added the new functionality for data generation.
- We provided access to the generated data from the main BSEE application through a built-in API.
JQuery/AJAX, DataTable Plug-In for JQuery, Knockout Framework (version 3.4.0), Materialize CSS
.NET Framework (version 4.5.2), Microsoft Azure
Entity Framework (version 6.1.3), Microsoft SQL Server
Third-party library API
After eight months of oil and gas land management software development, we provided our client with the fully refactored application for oil platform management and status monitoring, with a few additional features.
We have met the client’s requirements in their entirety and stayed within the initial time and budget estimates. In their turn, the client was completely satisfied with the modified application, its updated functionality and improved performance.