3 ms·
This suggestion is pretty innocent of practical knowledge of the problem. Simply extracting the control structure of the assembly via automation is a huge win.
by jhayward 9y ago
This suggestion is pretty innocent of practical knowledge of the problem.
Simply extracting the control structure of the assembly via automation is a huge win. This type of assembly is incredibly dense - it was written for machines with at most, 100's of K of memory. It relies on highly non-local side effects which are very dependent on the data.
Things like a reference to a status register bit that was possibly set as a side effect of an instruction 30 or 40 instructions back, but then could have been modified by three or more other instructions, none of which are control flow instructions. All depending on knowing that certain patterns do/do not ever appear in the data.
After the control flow is extracted and made visible, then you can get to things like numerical emulation of the exact oddities of S360 code.
Once you have all those things done, which you will not ever, ever, be able to do by hand, then you can take the resulting generated Java and begin re-implementing.
The work being described has to happen before the suggestion above can even be approached.
- jfoutz 9y agoyou could also just dust off the original specification. code up whatever it's supposed to do, then special case all of the junk that doesn't match.
- chx 9y ago> you could also just dust off the original specification. You must be new here. What specification? Oh dear.
- SiempreViernes 9y agoYou did read the bit that said the current system is the accumulation of almost 60 years of changing tax legislation, right?
- jfoutz 9y agoYeah, ~30 year projects were the longest i've ever worked on. Sometimes it's easier to read the docs about what the old programmers were trying to do - those telephone sized documents explaining requirements. if you're lucky, they might have started using source control in the 90's and you can kinda match up specs to commits.
- mlindner 9y agoThere rarely is an original specification, and even if one exists, what was actually written has a high probably of not actually matching the specification exactly because of undocumented feature requests or additions.