Modernizing Enterprise Software Applications: What is a Modernization Project? (part 5 of 7)
At its purest, a modernization effort is a discrete ROI based undertaking whose primary goal is to solve technical deficits caused by obsolescence, technical inflexibility or other forms of outlived solution. Unlike ordinary endeavors, where the functional dependency and end-user value has primacy, the infrastructural maintainability and other non-functional requirements may take first priority, again based on demonstrated ROI.
Understanding what a modernization project can mean in this pure form can also help when incorporating elements of modernization into other projects. Engineering often mandates that the functional requirements take priority over non-functional aspects, and this can result in their being excluded from scoping. If the ideal modernization project is understood and contemplated correctly, it may then become possible to envisage ways to deliver incremental pieces of these during other projects. However, as situations change over the course of multiple project lifespans, gaining the final ROI by piecemeal approaches contains its own risks.
Different Modernization Endeavors
Modernization projects may span the back-end only, or the front-end or both. Common front-end navigation code may be used to allow two solutions to be temporarily bridged from a visual standpoint. Likewise, code “bridges” may be created in both front-end and back-end code to allow application code to be used in a DRY fashion inside legacy and target frameworks at the same time.
Examples of modernization project might be:
Reworking to remove a specific list of technologies from a solution
Making RESTful endpoints from a server-side rendered solution, to facilitate a modern front-end
Adding a modern security solution to an insecure solution
Collapsing two of more frameworks down to one
Moving business code from a legacy or home-grown solution to a supported framework
Adding multi-tenancy to a single tenant-based solution
Replacing legacy or ad hoc front-end solutions with a modern, supported software direction, potentially utilizing bridging code and a shared navigation structure while disparate technologies exist.