APPROACHES TO SOFTWARE REARCHITECTING

Galal H. Galal‐Edeen, Mohamed Abbas Shouman, Nissreen Abdel-Ghaffar ElSaber · 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. KEYWORDS Software Architecting, Reengineering, Architectural Design, Rearchitecting, Tool Support, Architecture Description Language, Tool Support Framework 1. INTRODUCTION An architecture represents the system components and the relationships among them governing their design, and evolution over time. Architectures are lost or eroded over a system's lifetime due to their intangibility. This results in the need of techniques to recover or extract an architecture from a legacy system. A legacy system is a computer system which continues to be used as a result of the difficulties existed in either of the replacement or the redesign processes. Many people use this term to refer to antiquated systems (McGee, 2005). Legacy systems are considered to be potentially problematic by many software engineers (Bisbal et al., 1999) for several reasons. Legacy systems often run on obsolete hardware, and sometimes spare parts for such computers become increasingly difficult to obtain. These systems are often hard to maintain, improve, and expand. This is due to a general lack of understanding of the system. The system designers may have left the organization, leaving no one know how it works. Such a lack of understanding can be exacerbated by inadequate documentation or manuals getting lost over the years. Integration with new systems may also be difficult as new software may use completely different technologies. This paper introduces an adequate literature in the field of software architecture reconstruction, and analyzing different terms of many authors used to call software rearchitecting, and finally presents an initial framework for software rearchitecting tool support. A brief history of software design and software architecture is presented in section 2. The term software rearchitecting is introduced and compared with many other terms in section 3. Research in software rearchitecting approaches is surveyed and analyzed in section 4. The rearchitecting tools are presented in section 5. Proposed action framework and tool support are introduced in sections 6 and 7. Conclusions and suggested future work in the same area of research are introduced in section 8.

Read the paper · More papers on PaperTik