Affiliation:
1. Universidad Nacional del Centro de la Pcia. de Buenos Aires, Argentina
Abstract
Reverse Engineering is the process of analyzing available software artifacts such as requirements, design, architectures, code or byte code, with the objective of extracting information and providing high-level views on the underlying system. A common idea in reverse engineering is to exploit the source code as the most reliable description both of the behavior of a software system and of the organization and its business rules. However, reverse engineering is immersed in a variety of tasks related to comprehending and modifying software such as re-documentation of programs and relational databases, recovering of architectures, recovering of alternative design views, recovering of design patterns, building traceability between code and designs, modernization of interfaces or extracting the source code or high level abstractions from byte code when the source code is not available. Reverse engineering is hardly associated with modernization of legacy systems that were developed many years ago with technology that is now obsolete. These systems include software, hardware, business processes and organizational strategies and politics. Many of them remain in use after more than 20 years; they may be written for technology which is expensive to maintain and which may not be aligned with current organizational politics. Legacy systems resume key knowledge acquired over the life of an organization. Changes are motivated for multiple reasons, for instance the way in which we do business and create value. Important business rules are embedded in the software and may not be documented elsewhere. The way in which the legacy system operates is not explicit (Brodie and Stonebraker, 1995) (Sommerville, 2004).
Reference25 articles.
1. ADM (2007). ADM Task Force. Architecture Driven Modernization Roadmap. Retrieved on July 20, 2009 from adm.omg.org
2. Aho, A., Sethi, R., & Ullman, J. (1985). Compilers: Principles, Techniques, and Tools (2nd ed.). Reading: Addison-Wesley.
3. ANSI-IEEE. (1984). ANSI/IEEE Software Engineering Standards: Std 729-1983, Std 730-1884, Std 828-1983, 829-1984, 830-1984. Los Alamitos: IEEE/Wiley.
4. Baxter, I., & Mehlich, M. (1997). Reverse Engineering is Reverse Forward Engineering. In Proceedings of Fourth Working Conference on Reverse Engineering, Amsterdam, The Netherlands. Retrieved on July 20, 2009 from www.semdesigns.com/Company/Publications/WCRE97.pdf
5. Booch, G., Rumbaugh, J., & Jacobson, I. (2005). The Unified Modeling Language. User Guide (2nd ed.). Reading: Addison-Wesley.