From the Book: Software systems become legacy systems when they begin to resist modification and evolution. However, the knowledge embodied in legacy systems constitutes significant corporate assets. Assuming these system still provide significant business value, they must then be modernized or replaced. This book describes a risk-managed approach to legacy system modernization that applies a knowledge of software technologies and an understanding of engineering processes within a business context. Audience Modernizing Legacy Systems: Software Technologies, Engineering Processes and Business Practices should be useful to anyone involved in modernizing a legacy system. As a software engineer, it should help you understand some of the larger business concerns that drive a modernization effort. As a software designer, this book should help you understand the impact of legacy code, coupled with incremental development and deployment practices, on design activities. As a system architect, this book explains the processes and techniques that have failed or succeeded in practice. It should also provide insight into how you can repeat these successes and avoid the failures. As an IT manager, this book explains how technology and business objectives influence the software modernization processes. In particular, it should help you answer the following questions: When and how do I decide if a modernization or replacement effort is justified How do I develop an understanding of the legacy system How do I gain an understanding of, and evaluate the applicability of, infsystem technologies that can be used in the modernization of my system When do I involve the stakeholders and how can I reconcile their conflicting needs What role does architecture play in legacy system modernization How can I estimate the cost of a legacy system modernization How can I evaluate and select a modernization strategy How can I develop a detailed modernization plan Organization and Content Modernizing Legacy Systems: Software Technologies, Engineering Processes and Business Practices shows how legacy systems can be incrementally modernized. It uses and extends the methods and techniques described in Building Systems from Commercial Components Wallnau, 2001 to draw upon engineering expertise early in the conceptual phase to ensure realistic and comprehensive planning. This book features an extensive case study involving a major modernization effort. The legacy system in this case study consists of nearly 2 million lines of COBOL code developed over 30 years. The system is being replaced with a modern system based on the Java 2 Enterprise Edition (J2EE) architecture. Additional challenges include a requirement to incrementally develop and deploy the system. We look at the strategy used to modernize the system; the use of Enterprise JavaBeans, message-oriented middleware, Java, and other J2EE technologies to produce the modern system; the supporting software engineering processes and techniques; and the resulting system. Chapters 1 of this book provides an introduction to the challenges and practices of software evolution and Chapter 2 introduces the major case study in the bo introduces the Risk-Managed Modernization (RMM) approach which is elaborated in Chapters 4 through 17 and illustrated by the case study. Throughout Chapters 4 through 17 we provide an activity diagram of RMM as a road map to each chapter. Chapter 18 provides some recommendations to help guide your modernization efforts (although these recommendations cannot be fully appreciated without reading the main body of the book).Throughout this book we use the Unified Modelling Language (UML) to represent architecture drawings and design patterns. A brief introduction to UML is provided in Chapter 6.
Cited By
- Assunção W Keynote on Software Modernization: From Industry Needs to Developers' Perception Proceedings of the 1st IEEE/ACM Workshop on Software Engineering Challenges in Financial Firms, (21-22)
- Li H, Liu Y, Qi X, Yu X and Guo S (2023). Structuring meaningful bug‐fixing patches to fix software defect, IET Software, 17:4, (566-581), Online publication date: 27-Jul-2023.
- Yan A, Zhong H, Song D and Jia L (2023). How do programmers fix bugs as workarounds? An empirical study on Apache projects, Empirical Software Engineering, 28:4, Online publication date: 1-Jul-2023.
- Tufano M, Watson C, Bavota G, Penta M, White M and Poshyvanyk D (2019). An Empirical Study on Learning Bug-Fixing Patches in the Wild via Neural Machine Translation, ACM Transactions on Software Engineering and Methodology, 28:4, (1-29), Online publication date: 31-Oct-2019.
- Tufano M, Watson C, Bavota G, Di Penta M, White M and Poshyvanyk D An empirical investigation into learning bug-fixing patches in the wild via neural machine translation Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, (832-837)
- Bermdez Ruiz F, Garca Molina J and Daz Garca O (2017). On the application of model-driven engineering in data reengineering, Information Systems, 72:C, (136-160), Online publication date: 1-Dec-2017.
- López-Sanz M, de Castro V, Marcos E and Moratalla J Modernization of Information Systems at Red.es: An Approach Based on Gap Analysis and ADM Service-Oriented Computing, (490-498)
- Bermdez Ruiz F, Snchez Ramn s and Garca Molina J (2017). A tool to support the definition and enactment of model-driven migration processes, Journal of Systems and Software, 128:C, (106-129), Online publication date: 1-Jun-2017.
- Méndez M and Tinetti F (2017). Change-driven development for scientific software, The Journal of Supercomputing, 73:5, (2229-2257), Online publication date: 1-May-2017.
- Knoche H Sustaining Runtime Performance while Incrementally Modernizing Transactional Monolithic Software towards Microservices Proceedings of the 7th ACM/SPEC on International Conference on Performance Engineering, (121-124)
- Sridhara G Automatically Detecting the Up-To-Date Status of ToDo Comments in Java Programs Proceedings of the 9th India Software Engineering Conference, (16-25)
- Lessa I, F. Carneiro G, Monteiro M and Brito E Abreu F On the Use of a Multiple View Interactive Environment for MATLAB and Octave Program Comprehension Proceedings, Part IV, of the 15th International Conference on Computational Science and Its Applications -- ICCSA 2015 - Volume 9158, (640-654)
- Cherukupalli P and Reddy Y Reengineering Enterprise Wide Legacy BFSI Systems Proceedings of the 8th India Software Engineering Conference, (40-49)
- Cuadrado J, Cánovas Izquierdo J and Molina J (2014). Applying model-driven engineering in small software enterprises, Science of Computer Programming, 89:PB, (176-198), Online publication date: 1-Sep-2014.
- Khadka R, Batlajery B, Saeidi A, Jansen S and Hage J How do professionals perceive legacy systems and software modernization? Proceedings of the 36th International Conference on Software Engineering, (36-47)
- Fast E, Steffee D, Wang L, Brandt J and Bernstein M Emergent, crowd-scale programming practice in the IDE Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, (2491-2500)
- Le Goues C, Forrest S and Weimer W (2013). Current challenges in automatic software repair, Software Quality Journal, 21:3, (421-443), Online publication date: 1-Sep-2013.
- Merten M and Steffen B (2013). Simplicity Driven Application Development, Journal of Integrated Design & Process Science, 17:3, (9-23), Online publication date: 1-Jul-2013.
- Hao D, Lan T, Zhang H, Guo C and Zhang L Is this a bug or an obsolete test? Proceedings of the 27th European conference on Object-Oriented Programming, (602-628)
- Ponzanelli L, Bacchelli A and Lanza M Seahawk: stack overflow in the IDE Proceedings of the 2013 International Conference on Software Engineering, (1295-1298)
- Schulte E, DiLorenzo J, Weimer W and Forrest S (2013). Automated repair of binary and assembly programs for cooperating embedded devices, ACM SIGPLAN Notices, 48:4, (317-328), Online publication date: 23-Apr-2013.
- Schulte E, DiLorenzo J, Weimer W and Forrest S (2013). Automated repair of binary and assembly programs for cooperating embedded devices, ACM SIGARCH Computer Architecture News, 41:1, (317-328), Online publication date: 29-Mar-2013.
- Schulte E, DiLorenzo J, Weimer W and Forrest S Automated repair of binary and assembly programs for cooperating embedded devices Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems, (317-328)
- Neamtiu I, Xie G and Chen J (2013). Towards a better understanding of software evolution, Journal of Software: Evolution and Process, 25:3, (193-218), Online publication date: 1-Mar-2013.
- Chénard G, Khriss I and Salah A Towards the automatic discovery of platform transformation templates of legacy object-oriented systems Proceedings of the 6th International Workshop on Models and Evolution, (51-56)
- Bhattacharya P, Neamtiu I and Shelton C (2012). Automated, highly-accurate, bug assignment using machine learning and tossing graphs, Journal of Systems and Software, 85:10, (2275-2292), Online publication date: 1-Oct-2012.
- Fry Z, Landau B and Weimer W A human study of patch maintainability Proceedings of the 2012 International Symposium on Software Testing and Analysis, (177-187)
- Le Goues C, Weimer W and Forrest S Representations and operators for improving evolutionary software repair Proceedings of the 14th annual conference on Genetic and evolutionary computation, (959-966)
- Normantas K, Sosunovas S and Vasilecas O An overview of the knowledge discovery meta-model Proceedings of the 13th International Conference on Computer Systems and Technologies, (52-57)
- Vetro' A Using automatic static analysis to identify technical debt Proceedings of the 34th International Conference on Software Engineering, (1613-1615)
- Buse R and Zimmermann T Information needs for software development analytics Proceedings of the 34th International Conference on Software Engineering, (987-996)
- Bhattacharya P, Iliofotou M, Neamtiu I and Faloutsos M Graph-based analysis and prediction for software evolution Proceedings of the 34th International Conference on Software Engineering, (419-429)
- Le Goues C, Dewey-Vogt M, Forrest S and Weimer W A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each Proceedings of the 34th International Conference on Software Engineering, (3-13)
- Qi D, Roychoudhury A, Liang Z and Vaswani K (2012). DARWIN, ACM Transactions on Software Engineering and Methodology, 21:3, (1-29), Online publication date: 1-Jun-2012.
- Xiaofan Chen and Grundy J Improving automated documentation to code traceability by combining retrieval techniques Proceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering, (223-232)
- Vasilecas O and Normantas K Deriving business rules from the models of existing information systems Proceedings of the 12th International Conference on Computer Systems and Technologies, (95-100)
- Bhattacharya P and Neamtiu I Assessing programming language impact on development and maintenance Proceedings of the 33rd International Conference on Software Engineering, (171-180)
- Kumar S, Khoo S, Roychoudhury A and Lo D Mining message sequence graphs Proceedings of the 33rd International Conference on Software Engineering, (91-100)
- Le Goues C, Forrest S and Weimer W The case for software evolution Proceedings of the FSE/SDP workshop on Future of software engineering research, (205-210)
- Chen X Extraction and visualization of traceability relationships between documents and source code Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, (505-510)
- Sridhara G, Hill E, Muppaneni D, Pollock L and Vijay-Shanker K Towards automatically generating summary comments for Java methods Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, (43-52)
- Buse R and Weimer W Automatically documenting program changes Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, (33-42)
- Brennan A, Greer D and McDaid K Adaptability performance trade-off Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement, (1-4)
- Fast E, Le Goues C, Forrest S and Weimer W Designing better fitness functions for automated program repair Proceedings of the 12th annual conference on Genetic and evolutionary computation, (965-972)
- Weimer W, Forrest S, Le Goues C and Nguyen T (2010). Automatic program repair with evolutionary computation, Communications of the ACM, 53:5, (109-116), Online publication date: 1-May-2010.
- Tee S (2009). Eliminating method redundancy for the improvement of inner class design, ACM SIGSOFT Software Engineering Notes, 34:6, (1-3), Online publication date: 3-Dec-2009.
- Cui B, Chen X, Song P and Liu R An extensible scientific computing resources integration framework based on grid service Proceedings of the 6th international conference on Cooperative design, visualization, and engineering, (224-231)
- Qi D, Roychoudhury A, Liang Z and Vaswani K Darwin Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, (33-42)
- Rul S, Vandierendonck H and De Bosschere K Towards automatic program partitioning Proceedings of the 6th ACM conference on Computing frontiers, (89-98)
- Weimer W, Nguyen T, Le Goues C and Forrest S Automatically finding patches using genetic programming Proceedings of the 31st International Conference on Software Engineering, (364-374)
- Şavga I, Rudolf M, Götz S and Aßmann U Practical refactoring-based framework upgrade Proceedings of the 7th international conference on Generative programming and component engineering, (171-180)
- Buse R and Weimer W Automatic documentation inference for exceptions Proceedings of the 2008 international symposium on Software testing and analysis, (273-282)
- Mazón J and Trujillo J A model driven modernization approach for automatically deriving multidimensional models in data warehouses Proceedings of the 26th international conference on Conceptual modeling, (56-71)
- Witte R, Li Q, Zhang Y and Rilling J Ontological text mining of software documents Proceedings of the 12th international conference on Applications of Natural Language to Information Systems, (168-180)
- Koskinen J, Sivula H, Tilus T, Kankaanpää I, Ahonen J and Juutilainen P Assessing software replacement success Proceedings of the 13th European conference on Software Process Improvement, (183-194)
- Tibermacine C, Fleurquin R and Sadou S On-Demand quality-oriented assistance in component-based software evolution Proceedings of the 9th international conference on Component-Based Software Engineering, (294-309)
- de Souza S, Anquetil N and de Oliveira K A study of the documentation essential to software maintenance Proceedings of the 23rd annual international conference on Design of communication: documenting & designing for pervasive information, (68-75)
- Andrade L, Gouveia J, Antunes M, El-Ramly M and Koutsoukos G Forms2Net – migrating oracle forms to microsoft .NET Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering, (261-277)
- Voinea L, Telea A and van Wijk J CVSscan Proceedings of the 2005 ACM symposium on Software visualization, (47-56)
- Hess H (2005). Aligning technology and business, IBM Systems Journal, 44:1, (25-45), Online publication date: 1-Jan-2005.
- Ye T, Shen-Sheng Z, Lei L and Jing-Yi Z OITASSF Proceedings of the 5th international conference on Parallel and Distributed Computing: applications and Technologies, (332-336)
- O'Brien L, Hansen F, Seacord R and Smith D Mining and Managing Software Assets Proceedings of the 10th International Workshop on Software Technology and Engineering Practice
Index Terms
- Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
Recommendations
Modernizing Legacy Systems: A Re-Engineering Approach
Cloud computing is a paradigm which has changed the way organizations develop, manage, and deploy their applications. Most of the resources are available at low costs in this technology and it creates new opportunities for organizations to move their ...
Reengineering of Legacy Systems into Supply Chain Systems: Traditional Data Oriented versus Process Oriented Approaches
The paper presents data oriented and process oriented models of legacy systems. It discusses the details of systems development and evolution models mainly aiming at an ongoing reengineering of legacy systems into supply chain systems. It proposes few ...
Are we speaking the industry language? The practice and literature of modernizing legacy systems with microservices
SBCARS '21: Proceedings of the 15th Brazilian Symposium on Software Components, Architectures, and ReuseMicroservice architecture has gained much attention in the last few years in both industry and academia. Microservice is an architectural style that enables developing systems as a suite of small loosely coupled, and autonomous (micro)services that ...