From an insider report, a modernization company is doing a de-modernization project. They removed advanced architecture elements from rearchitect practice and keep using the legacy mimic.
The reason is unclear yet.
One statistics shows 85%+ software industry activities are about maintenance of existing software. But the frontline of this industry still focuses on pushing out new technologies and methodologies.
This disconnection or contrast creates the tense between IT people and business people in same organization.
Business demands stable and productive IT service as long as they can sustain their daily operation and quickly adapt to their change of business. But software professionals feel either they should sacrifice their career to act more like a business analyst and stay with old technology/methodology or they need fight for some room to apply new stuff on the old platform.
Modernization always be considered similar to code conversion. Starting from the code level looks like be granted.
However, my understanding is top-down is much more effective and practical comparing to bottom-up. The reason is in the code level, there are too many noise blended with physical design tightly coupled with legacy technology. Swimming in the legacy code ocean will not help us too much to understand the business requirement.
My methodology towards SVT is quite simple:
1) Black-box behavior analysis to roughly understand the nature of screen
2) Based on template inventory to build the physical skeleton of the screen, including the best practices of behavior design pattern purely from modern technology perspective.
3) Then we will have a lot of empty placeholders require fill up with detail business logic. This makes the information extraction processes toward legacy source code be objective-driven.
4) After filling up all placeholders with identical business logic translated from legacy, integration test to eliminate code defects is feasible. And the most impressive point up to here is we don’t even need to put legacy software into runtime mode too much.
5) Then we can put modernized and legacy versions side-by-side to compare what other behaviors are missing. In general case, all missing behaviors should be relatively minor and can be addressed one-by-one.
The deviation of this process can take place in step #3. The information extraction process might defeat the behavior analysis result and end up with a different combination of behavior patterns. Then the step needs to go way back to #1 start over.
It won’t be surprise we will encounter the new behavior patterns then we should embrace it to keep building up our template inventory.
I have great confidence this re-architect approach is ‘the best so far’ methodology for 4GL modernization but welcome any criticize.
Essentially when we look at the legacy applications running in an organization, it will face to at least below 5 types of challenges.
- Business Process Sponsor/Owner: Is this application a constraint of my today’s business? What about in the future?
- Daily (regular) Users: Do we feel comfortable and convenient using this application? Especially along with other applications.
- IT Infrastructure Team: How the hardware/software upgrading cycles look like when we need keep using this application? What about the operators? What about our security standard?
- Interfaces with other Applications: Impact analysis when the surrounding applications need some types of change.
- Maintenance and Enhancement Developer Team: Difficult to keep it up? Staffing issue?
For each case, it requires dedicated effort to identify what are the exact challenges. This is part of Application Portfolio Management effort.
This press was released almost 3 years ago. The content is still valid to today’s worldwide institutions.
Two tier Client/Server architecture will usually have below negative impact to organizations operational expense, especially in long-term prospective.
Stronghold of unifying organization IT infrastructure standard:
Will this app run properly if we entirely upgrade to Windows 7?
Will this app break down if we apply this service pack?
Can we go to Linux if we have two major applications written in PowerBuilder 5?
Do these questions sound familiar?
Difficult to leverage Application Portfolio Management:
Duplicated data entry
Uncleanly embedded business regulation
Cannot take advantage of recently implemented service layer or workflow engine
Cannot take advantage of organizational centralized security mechanism (authentication/authorization)
High cost on staffing – Need legacy specialists but resource cannot be used for other modern applications
Struggle of Cloud Computing
IaaS – What’s the business value if we can just visualize two tier client and server into cloud service?
PaaS – Our technology stack is not compatible…
SaaS – Wrapping our application and let it become service?
Security Hole – Cannot be consistent with today’s security standard (privacy, hijack protection etc.)
Difficult to apply new process management and testing methodology
Process of understanding and evolving existing soft ware assets for the purpose of software improvement
- Translation into another language
- Enterprise application integration
- Service-oriented architecture
Modernization starts where existing practices fail to deliver against business objectives
If they cannot:
- Meet new strategic goals
- Support business processes
- Be more cost effective
- Provide good interoperability
They are legacy. You need have a plan to respond.