Software modernization

Last updated

Legacy modernization, also known as software modernization or platform modernization, refers to the conversion, rewriting or porting of a legacy system to modern computer programming languages, architectures (e.g. microservices), software libraries, protocols or hardware platforms. Legacy transformation aims to retain and extend the value of the legacy investment through migration to new platforms to benefit from the advantage of the new technologies. [1]

Contents

As a basis and first step of software modernization initiatives, the strategy, the risk management, the estimation of costs, and its implementation, lies the knowledge of the system being modernized. The knowledge of what all functionalities are made for, and the knowledge of how it has been developed. [2] As the subject-matter experts (SMEs) who worked at the inception and during all evolutions of the application are no-longer available or have a partial knowledge, and the lack of proper and up-to-date documentation, modernization initiatives start with assessing and discovering the application using Software intelligence. [3]

Strategies

Making of software modernization decisions is a process within some organizational context. “Real world” decision making in business organizations often has to be made based on “bounded rationality”. [4] Besides that, there exist multiple (and possibly conflicting) decision criteria; the certainty, completeness, and availability of useful information (as a basis for the decision) is often limited.

Legacy system modernization is often a large, multi-year project. Because these legacy systems are often critical in the operations of most enterprises, deploying the modernized system all at once introduces an unacceptable level of operational risk. As a result, legacy systems are typically modernized incrementally. Initially, the system consists completely of legacy code. As each increment is completed, the percentage of legacy code decreases. Eventually, the system is completely modernized. A migration strategy must ensure that the system remains fully functional during the modernization effort.

Modernization strategies

There are different drivers and strategies for software modernization:

Modernization risk management

Software modernization is a risky, difficult, long, and highly intellectual process involving multiple stakeholders. The software modernization tasks are supported by various tools related to Model-driven architecture from the Object Management Group and processes such as ISO/IEC 14764:2006 or Service-Oriented Migration and Reuse Technique (SMART). [12] Software modernization implies various manual and automated tasks performed by specialized knowledge workers. Tools are supporting project participants' tasks and help organize the collaboration and sequencing of the work.

A general software modernization management approach [13] taking risks (both technological and business objectives) explicitly into account consists of:

Modernization costs

Challenges in legacy modernization

Primary issues with a legacy system include very old systems with lack of documentation, lack of SMEs/ knowledge on the legacy systems and dearth of technology skills in which the legacy systems have been implemented. Typical legacy systems have been in existence for more than two decades. Migrating is fraught with challenges:

Last but not least, there is no one-stop solution-fits all kind of option in modernization. With a multitude of commercial and bespoke options available for modernization, it’s critical for the customers, the sellers and the executors to understand the intricacies of various modernization techniques, their best applicable implementations, suitability in a particular context, and the best practices to follow before selecting the right modernization approach.

Modernization options

Over the years, several different options have come into being for legacy modernization – each of them met with varying success and adoption. Even now, there is a range of possibilities, as explained below, and there is no “the option” for all legacy transformation initiatives.

A legacy code is any application based on older technologies and hardware, such as mainframes, that continues to provide core services to an organization. Legacy applications are frequently large and difficult to modify, and scrapping or replacing them often means re-engineering an organization’s business processes as well. However, more and more applications that were written in so called modern languages like java are becoming legacy. Whereas 'legacy' languages such as COBOL are top on the list for what would be considered legacy, software written in newer languages can be just as monolithic, hard to modify, and thus, be candidates of modernization projects.

Re-implementing applications on new platforms in this way can reduce operational costs, and the additional capabilities of new technologies can provide access to functions such as web services and integrated development environments. [7] Once transformation is complete and functional equivalence has been reached the applications can be aligned more closely to current and future business needs through the addition of new functionality to the transformed application. The recent development of new technologies such as program transformation by software modernization enterprises have made the legacy transformation process a cost-effective and accurate way to preserve legacy investments and thereby avoid the costs and business impact of migration to entirely new software.

The goal of legacy transformation is to retain the value of the legacy asset on the new platform. In practice this transformation can take several forms. For example, it might involve translation of the source code, or some level of re-use of existing code plus a Web-to-host capability to provide the customer access required by the business. If a rewrite is necessary, then the existing business rules can be extracted to form part of the statement of requirements for a rewrite.

Software migration

Software migration is the process of moving from the use of one operating environment to another operating environment that is, in most cases, is thought to be a better one. For example, moving from Windows NT Server to Windows 2000 Server would usually be considered a migration because it involves making sure that new features are exploited, old settings do not require changing, and taking steps to ensure that current applications continue to work in the new environment. Migration could also mean moving from Windows NT to a UNIX-based operating system (or the reverse). Migration can involve moving to new hardware, new software, or both. Migration can be small-scale, such as migrating a single system, or large-scale, involving many systems, new applications, or a redesigned network. [22]

One can migrate data from one kind of database to another kind of database. This usually requires the data into some common format that can be output from the old database and input into the new database. Since the new database may be organized differently, it may be necessary to write a program that can process the migrating files.

When a software migration reaches functional equivalence, the migrated application can be aligned more closely to current and future business needs through the addition of new functionality to the transformed application.

The migration of installed software from an old PC to a new PC can be done with a software migration tool. Migration is also used to refer simply to the process of moving data from one storage device to another.

Articles, papers and books

Creating reusable software

Due to the evolution of technology today some companies or groups of people don’t know the importance of legacy systems. Some of their functions are too important to be left unused, and too expensive to reproduce again. The software industry and researchers have recently paid more attention towards component-based software development to enhance productivity and accelerate time to market. [23]

Risk-managed modernization

In general, three classes of information system technology are of interest in legacy system modernization: Technologies used to construct the legacy systems, including the languages and database systems. Modern technologies, which often represent nirvana to those mired in decades-old technology and which hold (the often unfulfilled) promise of powerful, effective, easily maintained enterprise information systems. Technologies offered by the legacy system vendors – These technologies provide an upgrade path for those too timid or wise to jump head-first into the latest wave of IT offerings. Legacy system vendors offer these technologies for one simple reason: to provide an upgrade path for system modernization that does not necessitate leaving the comfort of the “mainframe womb.” Although these technologies can provide a smoother road toward a modern system, they often result in an acceptable solution that falls short of the ideal. [24]

See also

Related Research Articles

<span class="mw-page-title-main">Legacy system</span> Old computing technology or system that remains in use

In computing, a legacy system is an old method, technology, computer system, or application program, "of, relating to, or being a previous or outdated computer system", yet still in use. Often referencing a system as "legacy" means that it paved the way for the standards that would follow it. This can also imply that the system is out of date or in need of replacement.

<span class="mw-page-title-main">Software architecture</span> High level structures of a software system

Software architecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.

Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Software development is the process used to conceive, specify, design, program, document, test, and bug fix in order to create and maintain applications, frameworks, or other software components. Software development involves writing and maintaining the source code, but in a broader sense, it includes all processes from the conception of the desired software through the final manifestation, typically in a planned and structured process often overlapping with software engineering. Software development also includes research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

The following outline is provided as an overview of and topical guide to software engineering:

Model Driven Architecture (MDA) is a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. Model Driven Architecture is a kind of domain engineering, and supports model-driven engineering of software systems. It was launched by the Object Management Group (OMG) in 2001.

<span class="mw-page-title-main">Information management</span> Organisational activity concerning information lifecycle

Information management (IM) is the appropriate and optimized capture, storage, retrieval, and use of information. It may be personal information management or organizational. IM for organizations concerns a cycle of organizational activity: the acquisition of information from one or more sources, the custodianship and the distribution of that information to those who need it, and its ultimate disposal through archiving or deletion and extraction.

<span class="mw-page-title-main">Requirements analysis</span> Engineering process

In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating and managing software or system requirements.

Brownfield development is a term commonly used in the information technology industry to describe problem spaces needing the development and deployment of new software systems in the immediate presence of existing (legacy) software applications/systems. This implies that any new software architecture must take into account and coexist with live software already in situ.

Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.

Data migration is the process of selecting, preparing, extracting, and transforming data and permanently transferring it from one computer storage system to another. Additionally, the validation of migrated data for completeness and the decommissioning of legacy data storage are considered part of the entire data migration process. Data migration is a key consideration for any system implementation, upgrade, or consolidation, and it is typically performed in such a way as to be as automated as possible, freeing up human resources from tedious tasks. Data migration occurs for a variety of reasons, including server or storage equipment replacements, maintenance or upgrades, application migration, website consolidation, disaster recovery, and data center relocation.

Business analysis is a professional discipline focused on identifying business needs and determining solutions to business problems. Solutions may include a software-systems development component, process improvements, or organizational changes, and may involve extensive analysis, strategic planning and policy development. A person dedicated to carrying out these tasks within an organization is called a business analyst or BA.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

A software factory is a structured collection of related software assets that aids in producing computer software applications or software components according to specific, externally defined end-user requirements through an assembly process. A software factory applies manufacturing techniques and principles to software development to mimic the benefits of traditional manufacturing. Software factories are generally involved with outsourced software creation.

Knowledge Discovery Metamodel (KDM) is a publicly available specification from the Object Management Group (OMG). KDM is a common intermediate representation for existing software systems and their operating environments, that defines common metadata required for deep semantic integration of Application Lifecycle Management tools. KDM was designed as the OMG's foundation for software modernization, IT portfolio management and software assurance. KDM uses OMG's Meta-Object Facility to define an XMI interchange format between tools that work with existing software as well as an abstract interface (API) for the next-generation assurance and modernization tools. KDM standardizes existing approaches to knowledge discovery in software engineering artifacts, also known as software mining.

Architecture-driven modernization in computing and computer science, is the name of the initiative of the Object Management Group related to building and promoting standards that can be applied to modernize legacy systems. The objective of this initiative is to provide standard representations of views of existing systems, in order to enable common modernization activities, such as code analysis and comprehension, and software transformation.

In information systems, applications architecture or application architecture is one of several architecture domains that form the pillars of an enterprise architecture (EA).

<span class="mw-page-title-main">Business rule mining</span>

Business rule mining is the process of extracting essential intellectual business logic in the form of business rules from packaged or legacy software applications, recasting them in natural or formal language, and storing them in a source rule repository for further analysis or forward engineering. The goal is to capture these legacy business rules in a way that the business can validate, control and change them over time.

In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.

<span class="mw-page-title-main">William M. Ulrich</span> American business architecture consultant

William M. Ulrich is an American business architecture consultant, consultant at Cutter Consortium, director and lecturer, known for development of 'The Systems Redevelopment Methodology' (TSRM) in the 1990s, on legacy systems in the 2000s and more recently on his work on business architecture.

References

  1. 1 2 Gardner, D: "Not just a nip and tuck, application modernization extends the lifecycle of legacy code assets", ZDNet, October 24, 2006
  2. Wolfart, Daniele; Assunção, Wesley; da Silva, Ivonei; Domingos, Diogo; Schmeing, Ederson; Villaca, Guilherme; Paza, Diogo (June 2021). "Modernizing Legacy Systems with Microservices: A Roadmap". Evaluation and Assessment in Software Engineering. pp. 149–159. doi:10.1145/3463274.3463334. ISBN   9781450390538. S2CID   235474042.
  3. Bartoszuk, Cezary; Dąbrowski, Robert; Stencel, Krzysztof; Timoszuk, Grzegorz (June 2013). "On quick comprehension and assessment of software". Proceedings of the 14th International Conference on Computer Systems and Technologies. pp. 161–168. doi:10.1145/2516775.2516806. ISBN   9781450320214. S2CID   17034416.
  4. Simon’s Bounded Rationality. Origins and use in Economic Theory
  5. Stefan Van Der Zijden; Thomas Klinect. "Building a Multiplatform Application Modernization Business Case".{{cite journal}}: Cite journal requires |journal= (help)
  6. 1 2 Menychtas, Andreas; Santzaridou, Christina; Kousiouris, George; Varvarigou, Theodora; Orue-Echevarria, Leire; Alonso, Juncal; Gorronogoitia, Jesus; Bruneliere, Hugo; Strauss, Oliver; Senkova, Tatiana; Pellens, Bram; Stuer, Peter (2013), "ARTIST Methodology and Framework: A Novel Approach for the Migration of Legacy Software on the Cloud" (PDF), 2013 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (PDF), 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), IEEE, pp. 424–431, doi:10.1109/SYNASC.2013.62, ISBN   978-1-4799-3036-4, S2CID   8150975
  7. 1 2 Menychtas, Andreas; Konstanteli, Kleopatra; Alonso, Juncal; Orue-Echevarria, Leire; Gorronogoitia, Jesus; Kousiouris, George; Santzaridou, Christina; Bruneliere, Hugo; Pellens, Bram; Stuer, Peter; Strauss, Oliver; Senkova, Tatiana; Varvarigou, Theodora (2014), "Software modernization and cloudification using the ARTIST migration methodology and framework", Scalable Computing: Practice and Experience, 15 (2), CiteSeerX   10.1.1.675.6225 , doi: 10.12694/scpe.v15i2.980
  8. The ARTIST research project
  9. Ian Warren; Jane Ransom (2002). "Renaissance: A Method to Support Software System Evolution". 26th Annual International Computer Software and Applications Conference. pp. 415–420. CiteSeerX   10.1.1.137.7362 . doi:10.1109/CMPSAC.2002.1045037. ISBN   978-0-7695-1727-8. S2CID   16563177.
  10. Izzet Sahin; Fatemeh ‘Mariam’ Zahedi (2001). "Policy analysis for warranty, maintenance, and upgrade of software systems". Journal of Software Maintenance: Research and Practice. 13 (6): 469–493. doi:10.1002/smr.242.
  11. Jussi Koskinen; Jarmo Ahonen; Heikki Lintinen; Henna Sivula; Tero Tilus. "Estimation of the Business Value of Software Modernizations".{{cite journal}}: Cite journal requires |journal= (help)
  12. Lewis, G.; Morris, E.; Smith, D.; O'Brien, L. (2005). "Service-Oriented Migration and Reuse Technique (SMART)". 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05). pp. 222–229. doi:10.1109/step.2005.24. hdl:10344/2208. ISBN   0-7695-2639-X. S2CID   18912663.
  13. Lewis, Grace A.; Plakosh, Daniel; Seacord, Robert C. (2003). Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices. Addison-Wesley Professional. pp. 27–37. ISBN   0321118847.
  14. Mobilize.Net. "A Fast Track to Software Modernization | Mobilize.Net". www.mobilize.net. Retrieved 2021-03-19.
  15. Andrea De Lucia; Eugenio Pompella & Silvio Stefanucci (July 2002). "Effort Estimation for Corrective Software Maintenance" (PDF). Proceedings of the 14th international conference on Software engineering and knowledge engineering - SEKE '02. SEKE '02 Ischia, Italy. p. 409. doi:10.1145/568760.568831. ISBN   978-1581135565. S2CID   10627249.{{cite book}}: CS1 maint: location (link) CS1 maint: location missing publisher (link)
  16. De Lucia, A.; Fasolino, A.R.; Pompelle, E. (2001). "A decisional framework for legacy system management". Proceedings IEEE International Conference on Software Maintenance. ICSM 2001. pp. 642–651. doi:10.1109/ICSM.2001.972781. ISBN   0-7695-1189-9. S2CID   32184332.
  17. Koskinen, Jussi; Lintinen, Heikki; Sivula, Henna; Tilus, Tero. "Evaluation of Software Modernization Estimation Methods Using NIMSAD Meta Framework". Publications of the Information Technology Research Institute. CiteSeerX   10.1.1.106.2633 .
  18. Santhosh G. Ramakrishna; V. V. (May 2007). "Logistics Legacy Modernization" (PDF). Infosys Technologies Limited.
  19. C. Ghezzi (2018). "Supporting Dependable Evolution". In Gruhn, Volker; Striemer, Rüdiger (eds.). The Essence of Software Engineering. pp. 32–33. doi:10.1007/978-3-319-73897-0. ISBN   978-3-319-73897-0. S2CID   49187426.
  20. "Mainframe Modernization in a Nutshell". Modernization Hub. Retrieved 2017-08-23.
  21. Series, A. S. (ISO 9001:2008). Legacy Modernization – Transformation into an Agile Enterprise. A whitepaper on Legacy Modernization
  22. SearchCIO.com
  23. S.K. Mishra; D.S. Kushwaha; A.K. Misra (July–August 2009). "Creating Reusable Software Component from Object-Oriented Legacy System through Reverse Engineering". The Journal of Object Technology. 8 (5): 133–152. doi: 10.5381/jot.2009.8.5.a3 .
  24. Moltke, H. v. (Wednesday, January 22, 2003 9:55 PM). Risk-Managed Modernization. Jawaharlal Nehru, Speech to Parliament New Delhi,: Seacord.book.