Meaning
Software re-engineering describes the transition of an embedded software project from one set of compilers, builders and debuggers to another. Undertaking a toolchain migration allows a development team to adopt more modern compiler optimization techniques, resolve compiler bugs or support new processor architectures. The process must be carefully managed to prevent the introduction of compilation errors and software regression.
Compiler Transition
Build tools translate high-level source code into the machine instructions executed by the processor. When an organization performs a toolchain migration, developers must resolve compiler-specific warnings, modify makefiles and re-verify the compiled binary’s behavior. This transition requires extensive testing to ensure that the code’s behavior remains identical to the original version.
Re-engineering Cost
Development contracts and licensing agreements must account for the engineering hours and tool licensing fees associated with software build changes. If a toolchain becomes obsolete, the software must be migrated, which can delay the product’s release and increase development costs. These costs can be shared between the developer and the customer if the software maintenance agreement covers tool updates.
Contractual Alignment
Supply agreements often define the specific version of the toolchain that must be used to compile the product’s software. Any change to this toolchain requires mutual agreement and official re-certification of the software. This requirement prevents unexpected code discrepancies.