Software Reengineering at the Architectural Level: Transformation of Legacy Systems (original) (raw)
Related papers
Reengineering Legacy Systems Towards New Technologies
A book chapter in Encyclopedia of Information Science and Technology, Fifth Edition, edited by Mehdi Khosrow-Pour D.B.A., IGI Global, 2021, pp. 1214-1230., 2021
Software reengineering is an important area of the software engineering. The quest to maintain and understand operational legacy systems has always been a challenge for software practitioners. This chapter presents a compilation of notions and techniques covering major areas namely, reverse engineering, program understanding, software maintenance, migration and evolving. Our objective is not to create new terms, but to introduce the terms already in use with different perspectives.
A perspective on architectural re-engineering
Science of Computer Programming, 2014
Continuous evolution towards very large, heterogeneous, highly dynamic computing systems entails the need for sound and flexible approaches to deal with system modification and re-engineering. The approach proposed in this paper combines an analysis stage, to identify concrete patterns of interaction in legacy code, with an iterative re-engineering process at a higher level of abstraction. Both stages are supported by the tools CoordPat and Archery, respectively. Bi-directional model transformations connecting code level and design level architectural models are ask defined. The approach is demonstrated in a (fragment of a) case study.
Approaches to Software Re-architecting
37th Internationan Conference on Computers and Industrial Engineering - CIE37, 2007
ABSTRACT: Reverse engineering of program code is the process of constructing a higher level of abstraction of an implementation in order to facilitate the understanding of a software system. Reverse architecting code has been advocated to identify the current software architecture of existing software; to assess its quality, and to determine improvement areas. There are several reverse engineering tools built upon several methodologies for analyzing object oriented source code. These approaches are addressed and evaluated to focus on their capabilities with the aim of applying selection approaches to JAVA source code. A framework for software rearchitecting and rearchitecting tool support is proposed. Recommendations and remarks have been highlighted.
Requirements for integrating software architecture and reengineering models: CORUM II
Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261), 1998
This paper discusses the requirements and a generic framework for the integration of architectural and codebased reengineering tools. This framework is needed because there is a large number of stand-alone reengineering tools that operate at different levels of abstraction ranging from "code-level" to software architecture. For the purposes of reengineering a complete system however, these tools need to be able to share information so that not only can the code be updated or corrected, but also so the system's software architecture can be simultaneously rationalized or modernized. To this end, we have built upon the CORUM model of reengineering tool interoperation to include software architecture concepts and tools. This extended frameworkcalled CORUM II-is organized around the metaphor of a "horseshoe", where the left-hand side of the horseshoe consists of fact extraction from an existing system, the right hand side consists of development activities, and the bridge between the sides consists of a set of transformations from the old to the new.
Software Architecture Transformations
2000
In order to understand and improve software, we commonly examine and manipulate its architecture. For example, we may want to examine the architecture at different levels of abstraction or zoom-in on one portion of the system. We may discover that the extracted architecture has deviated from our mental model of the software and hence we may want to repair it. This paper identifies the commonality between these architectural transformation actions -that is, by manipulating the architecture in order to understand, analyze, and modify the software structure, we are in fact performing graph transformations. We categorize useful architectural transformations and describe them within the framework of graph transformations. By describing them in a unified way, we gain a better understanding of the transformations and thus, can work towards modeling, specifying and automating them. We have adopted the terms concrete and conceptual architectures from Tran .
Using restructuring transformations to reengineer object-oriented systems
Submitted to WCRE
Applying object-oriented design methods and languages does not guarantee that the resulting software systems will be flexible and adaptable. The industrial partners in the FA-MOOS project have learned this lesson the hard way: they are now faced with large and rigid software systems that hamper them in meeting a diverse and evolving set of customer requirements. Object-oriented frameworks are touted as a promising solution, but it is unclear how to transform object-oriented legacy systems into frameworks. This paper proposes an approachi.e, a methodology and tools-for re-engineering object-oriented systems towards frameworks by means of high-level and low-level restructuring transformations that detect and resolve architectural and detailed design anomalies, and improve application flexibility and adaptability.
Reengineering Techniques for Object Oriented Legacy Systems
Today’s software development is defined by continuous evolution of software products. These products are regularly updated during their usage. In most of the cases systems grow inevitably by adding new features or by changing the system architecture due to new technologies or business plans. It is more than a decade; objects oriented paradigm is adopted as the most efficient passage to build flexible software, and promptly supported by industry. Though, the benefits of object oriented paradigm are supported by many, but its usage does not necessarily result in general, adaptable systems. These huge systems are often suffering from improper use of object oriented techniques, like inheritance and the lack of object oriented methods being regulated towards the building of families of systems instead of developing single applications. These growing technologies make the systems more difficult to maintain and improve. So, there is growing demand for reengineering of object-based systems. The main intention of this paper is to discover important research directions in the area of reengineering of object oriented legacy systems, which necessitate further attention in order to build more effective and efficient reengineering technique for these systems. The paper first discusses the state of art in reengineering of legacy system and its need. Paper also discuss the benefits of component based system over object oriented system and later outlines the techniques for reengineering of object oriented legacy system. In this paper we presented statistical analysis based on more than a decade data.
Refinement of Software Architectures by Recursive Model Transformations
2006
The main aim of this paper is to present how to refine software logical architectures by application of a recursive model-based transformation approach called 4SRS (four step rule set). It is essentially based on the mapping of UML use case diagrams into UML object diagrams. The technique is based on a sequence of steps that are inscribed in a tabular representation that is used to derive the software architecture for a focused part of the global system.