In Vinge's "A Deepness in the Sky" [0] one of the characters is a Programmer-at-Arms, and one of his roles is essentially software archaeology - not for the fun of it, but to keep the deeply layered software of a starship functional.
This is a fantastic book. Software is written and rewritten over thousands of years, layer upon layer, powering interstellar vessels and their “automation”. It makes you wonder what Windows will look like 100 years from now, if it’s still around. Will it be easier to just write another layer on top or dig down into the original source and modify?
Vinge's "A Deepness in the Sky" can be used to explain current big industrial control systems. A typical distributed control system these days transfers data across many different layers, transforming the data when it crosses each layer.
Starting deep down in the plant:
* reading the 0-10V or 4-20mA signals from sensors.
* AD converters convert the values into a digital representation in field devices.
* move the data to real-time controllers that run control algorithms and send outputs back to motors/valves/pumps/etc.
* those controllers move the data often via raw Ethernet packets to other real-time controllers and Windows stations used for operator visualization.
* some Windows workstations gather data into databases for historical usage. Sometimes this is a SQL type database, sometimes a flat database used to get better storage performance.
* then data is moved to local databases that can be used by the onsite teams to analyze it in an office environment.
* then that data is then moved into big data offsite/remote storage for analysis of how the medium and long term performance of the industrial installation and comparison to other installations in other parts of the world.
* from that reports are made with key performance indicators and graphs.
And each time the data is passed up a layer the format of the data and timestamps may be adjusted to match operating system that the data is passed to.
History seems to suggest that it will eventually get bogged down with too much junk but its too hard to rewrite and keep compatibility so eventually some fresh project without the legacy will be able to become the technically superior product and everyone will move over to that.
In theory, yes. In practice, either of two solutins will take hold: either the old system is put into a container on the new system or the application software itself obtains an emulation layer for the old system interface during the port. Either way, not a lot will be gained.
Yes! Thank you do much for bringing this up. I read about this book in a comment on HN many years ago and have been trying to find it, or the book title, ever since. Going to bounce this to the top of my reading pile.
See this page on "digital archaeology" describing research that studies developers and software through their "digital remains": http://digitalarchaeology.info/
[0] https://en.wikipedia.org/wiki/A_Deepness_in_the_Sky