This is a short article that deals with artifact life cycle through obsolescence and modernization. It also gives some hints when designing artifacts to delay obsolescence and anticipate modernization.
Artifact life cycleThe following diagram illustrates the life cycle of any artifact:
Artifact life cycle starts with the implementation of a modern artifact.
But time goes on, and leads inevitably to a software erosion :
- the artifact does not match technology standards,
- users experience is degraded because of too old user interfaces,
- huge technical debt,
- security vulnerabilities,
- insufficient features,
- high TCO
At this moment, there is 2 possible choices: modernize the artifact or build a new one that meet the standards and finally end the cycle with the process of decommissioning of the artifact.
Modernization will be realized through rewriting code, replacing frameworks, platforms and designing new architectures. It is preferable to automate the process of modernization.
To prevent obsolescence to occur too soon, you can try to:
- carefully build your software stack to rely on proven frameworks that will last for at least several years
- set up a continuous inspection platform to measure the software code quality and keep a high maintainability of the source code
- rely on an efficient software factory to build, assemble and deploy. That way, it is easy to evolve and maintain your artifacts.
- standardize your practices and architecture choices to avoid the maintenance of a too heterogeneous set of technologies across your artifcats.
To simplify the process of modernization, you can:
- favor simple design to ease the reverse engineering activity when modernization team works on artifacts
- design by abstraction to easily replace one specific part, without rewriting the whole artifact
- abuse of automated tests to lower the cost of testing changes induced by modernization and spot with ease any regression that modernization could introduce
- choose frameworks that can be evolved easily