"we had consultant X from Y integrator (sometimes now defunct) come in Z years ago (where Z is always > 10) and set up this system: we've been using it as a black box without change since"
This is accurate and it stems from the proprietary technologies that integrators must sew together. Want to build a better Siemens Step 7 IDE? Get a job at Siemens.
I think ultimately it stems from lack of source code ownership / use of open platforms / clearly defined interfaces.
Best case, with clearly documented and defined interfaces, you can rewrite or swap out an entire component. Worst case, you have no source, no standard technologies, and no interface barriers, in which case your choices are leave as-is (no additional features) or replace everything (impractical due to size of codebase / legacy functionality coverage).
This is accurate and it stems from the proprietary technologies that integrators must sew together. Want to build a better Siemens Step 7 IDE? Get a job at Siemens.