We’re at the moment supporting a really outdated, unstructred, untested and unstable ERP desktop software coded in Windev (on home windows). As the times go on, we have to add extra options for the customers however we hold working into horrible bugs, knowledge loss and integrity points. No matter we attempt to implement so as to save us from rewriting the entire thing is consistently failing due to how the appliance was structured.
I’m tasked with discovering a strategy to slowly merge into a brand new cleaner structure with out the necessity to shut the enterprise down for a whole rewriting. Since we haven’t any checks and that the code just isn’t meant to be examined, refactoring is extraordinarily harmful as a result of we aren’t lined by any security nets.
A lot of the bugs we now have are knowledge associated and since each entities are accessed from in every single place, it’s actually onerous to repair knowledge points or to make sure that it’s sturdy. We run an ERP so what we promote needs to be sturdy knowledge.
The present method I’m contemplating, is slowly merging all the pieces right into a backend API with a sturdy construction in C#. The plan is to make each new database accesses by way of the native API and to progressively merge present knowledge into the API. Since present sources are accessed from all around the software, a lot of them will likely be partly migrated into the API and partly nonetheless hardcoded within the Windev software till all accesses to a sure entity / endpoint is absolutely migrated.
The benefits I see in that is that we will slowly merge by way of a brand new software and finally have centralized all knowledge entry which is able to permit us to check the endpoints. One other optimistic level to this method can be that a lot of the heavy work can be completed if we determine to enter rewriting since we might solely must convert a little bit of enterprise logic and create a brand new UI. We may even go net if we determined to simply by internet hosting the API. Consumer requests are usually not blocked since we solely must go new knowledge within the API and merge previous knowledge accesses into it.
I see some points together with the truth that it is going to be a ache to assist each the appliance and the native server for a superb whereas and that we may have a little bit of influence within the performances however I nonetheless really feel that the optimistic points tremendously outweights the dangerous ones.
Am I fully insane by going with this method and am I lacking some apparent cleaner resolution.
needless to say the programming language we’re at the moment utilizing comes with a complete closed ecosystem by which we’re caught with it is personal deployment instruments, it is personal querying language and database with little or no documentation and that this can be very restricted by way of clear design. It’s even very onerous to have the ability to apply OOP ideas to it so we have to escape this eco-system ASAP