Microservice Terminal Simulator

Behind schedule

Before starting this project, I knew that the amount of work could become overwhelming if not properly scoped. I was warned by my supervisors to not end up with a half-finished project as it is better to finish something small than to have a big unfished project. Because of this, I made a prototype in the first week to analyze the scale and viability of this project. This was successful, I was able to refactor the original project in working microservice prototype. So, I decided to work in sprints with the goal to have by the half of the internship a working microservice TOS simulation with the same functionalities as the original project. Afterwards I will improve the architecture incrementally and add additional functionalities. Unfortunately, I am behind schedule. This week is week 7 out of 18. In two weeks, I should have a version of the system with the same functionalities as the original. With the current pace I will not manage to meet my goals in two weeks.

Reflection

My mistake is that I tried to redesign the system completely which I should not have done this early. Some of the design choices that deviates from the original are:

These changes improve the architecture but makes it more difficult to reuse the original logic in this project. Therefore, this week I decided to refactor the code to be closer to the original so that the original code could be more easily integrated. I changed the ids to be string based again and I changed the units to be fixed-point and in millimeters.

For know I will change my goals from implementing the functionality adhering to my target functionality to just implementing the functionality. I will keep the design choices I made such as the simulation / TOS separation and separating the vehicle hardware API from the controller code. However, I will not rewrite huge chunks of code to adhere to use my framework API. If the original code does not fit the architecture, I will just glue it on for now. With these changes I believe I can have all the original functionality in two or three weeks. Afterwards I will focus on cleaning up and refactoring the architecture.

Container implementation

At first, I tried to completely reimplement the container and stacking system. It was difficult and error prone. During this implementation I realized the issues with my process described in the previous paragraph.

I changed the units and ids to reflect the original code and started over. It became much easier. By not trying to completely redesign the logic I was able to implement the container and stacking logic in 2 days.

Next week I want to implement vehicles. I by the end of the week I have the Automatic stacking crane working and maybe started with the Quay Crane.