From the past 20 years in software development, this is never easy or can you give a specific date for a solution. Although the problem is known, its cause can take months to find. Its all about testing one scenario, then retesting same scenario with one change, reset, retest again.
Trouble becomes when you fix one issue and it then affects something else. On desktop PC's its easier to test scenarios and track where the fault occurs. On a train, you probably have to load the software, test it in action with one scenario and then reload and test again. Time consuming work.
As an indication of the scale of the task, modern trains have a lot of separate systems, doors, traction, signaling, passenger displays, GPS, SDO, wifi, lighting, heating, etc. Each one built by a different manufacture. So you are not just writing software for the trains operation, you have to write interface programmes for each individual system, then test them all together as anyone of them could cause a problem when working with another. To compound the issue. You need to test failures and workarounds as well.
This is just part of the work involved!