The process of integrating a new system as part of your customer’s mission-critical plant upgrade is not always a straightforward task. Plant upgrades commonly depend on existing infrastructure which may not function with the new system as expected. Issues encountered vary widely, and can include any combination of physical, software or other factors. Interfacing with fragile or poorly designed systems is an underlying challenge in engineering.
Protecting your project from these problems is paramount to ensuring quality outcomes and making effective use of your time. By using techniques employed in the construction industry, we’ll explain how you can protect yourself and the customer from risks associated with plant upgrades.
Software Shims and Scaffolds
What do shims and scaffolds have to do with software or systems engineering?
Scaffolds are analogous to the temporary structures that provide a safe work environment during which the main structure is replaced or stabilised. Shims are measures employed to ensure the new and existing structures interface correctly before removing the scaffolding.
Consider you are building a new bathroom in your house, and you discover the foundation is unstable. Rectifying this issue involves erecting sufficient scaffold, perform the necessary tasks and shims to eliminate the risk, verify all of the shims performed and dismantle the scaffold. This methodology provides a safe work environment, while minimising the risk of damage to the existing structure.
Scaffolding can exist in many forms. In systems engineering, scaffolding can be a documentation set or project management philosophy. In software engineering, scaffolding represents temporary functionality used to support development, while shimming provides an interface that permits the system to function before all of the components are implemented.
A common obstacle in software projects is unforeseen interactions between code segments. Often these can be handled during the development stage long before they risk delaying commissioning of your project on-site.
If you are going to rely on an existing code section to complete a vital action in your upgrade, ensure you know exactly how it works. If there’s anything that appears suspect or convoluted, minimise your risk and avoid building upon an unsuitable or uncertain foundation. The value of this attitude is the shielding you introduce into the system you have assumed responsibility for.
Achieving this shielding is straightforward. First, start by using your scaffold to help you set up your own function in parallel. In doing so, you can be confident that your function performs exactly the task you intended it to. Once you are assured that the upgrade will work using your function, question the need for the old function in the first place. Consider what structures can be streamlined and legacy code removed to provide a safe, robust, maintainable artefact in their place.
Benefits and Outcomes
Building temporary support structures is advantageous for the progress of any project, provided they are planned into the process appropriately. It’s possible to go down an upgrade path without shims and scaffold, however you are making a lot of assumptions when there are a significant number of unknown variables. Therefore, is this basis acceptable to the customer who may be spending significant capital on this project? Definitely not.
By investing the time up front, the risks which pose the greatest opportunity cost can be established and planned for accordingly. By building your structures for resilience in the face of uncertainty, your insight will materialise as your project unfolds, showing what artefacts can stay and those to be removed. In complex projects, concurrent verification provides assessment long before delivery to site. With this you can positively identify where any unknowns exist prior to the first time your code hits your customer’s mission-critical plant. Judicious use of the above tools will save you a lot of time, angst and potentially difficult explanations.