Research Report - 2001
C S M
Centre for Software Maintenance
Director
Prof Paul Bailes
Academic Staff
Prof Paul Bailes
Dr Cristina Cifuentes
Mr Dan Johnston
Mr Ian Peake
Research Staff
Mr Mike Van Emmerik
Mr Trent Waddington
Research Students
Mr Colin Kemp
Mr David Ung
Mr Barry Wilks
Ms Vien Yu Sien
Webpages
www.itee.uq.edu.au/csm/
The Centre for Software Maintenance focuses on the development and application of software reengineering tools to assist in the recovery of information from computer programs, both in high-level language (source) form and low-level (assembler and machine-code) form. The recovered information varies from high-level design information to alternative representations in high- or low-level languages. Within this focus there are distinct research and development efforts in the areas of: enabling technology for software reengineering; process model for software reengineering project management; and actual software reengineering projects, as often as possible oriented toward industrial needs. These efforts however complement each other to produce an integrated R&D program as follows: actual reengineering projects provide experience upon which to base a reengineering process model; the process model identifies functions and relationships among functional components that need to be supported by enabling technologies; and the technologies are validated by application in industrial projects.
These efforts group into major R&D themes which as outlined below are:
Information Systems Reengineering
Binary Translation
Software Reengineering Process and Enabling Technology
Additional R&D and service themes of the CSM include:
Functional Language Debugging
Procedural Language Design Recovery (e.g. Ada83, Ada95, Java)
C Cifuentes and P Bailes (editors), Annals of Software Engineering, Volume 9 - Software Maintenance, J.C. Baltzer AG, Science Publishers, 2000.
Information Systems Reengineering
Information Systems Reengineering addresses the reengineering and reverse engineering of software systems that include database technology. The semantics of an application's data, legacy database management system and 4GL development environments introduce complexities into the reengineering process. These complexities must be addressed to ensure a satisfactory result. Recent work has addressed 4GL-4GL conversion (Ingres ABFTM to Oracle Forms 3TM), 4GL-CASE design recovery (Ingres ABFTM 4GL to Oracle Designer 2000TM) and 3GL- 4GL reengineering (COBOL-Ingres ABFTM).
4GL - CASE Design Recovery
Most contemporary fourth-generation languages (4GLs) are tightly coupled with the relational database and other subsystems provided by the vendor. As a result, organisations wishing to change database vendors are typically forced to rewrite their applications using the new vendor's 4GL. The anticipated cost of this redevelopment can deter an organisation from changing vendors, hence denying it the benefits that would otherwise result, for example, the exploitation of more sophisticated database technology. If tools existed that could reduce the rewriting effort, the option of changing database vendors would become more economically feasible. Efforts to develop reengineering tools to assist in the migration of 4GL information system applications include the Ingres to Oracle CASE ("ITOC") project. A tool resulting from the ITOC project has been utilised to recover design information from several deployed commercial Ingres ABF 6.0 applications and then populate the Oracle Designer 2000 CASE repository. The project has provided insight into the development of "industrial strength" re-engineering tools. The work was sponsored by Oracle Corporation, USA. Experience gained from the ITOC project is being used on a related project to develop a tool to assist in design recovery from Progress 4GL applications. The work is being sponsored by Software Engineering Australia (Queensland).
John V. Harrison, Wie Ming Lim, Anna Andrusiewicz, Anthony Berglas, "Evaluation of the ITOC Information System Design Recovery Tool: A Case Study", Journal of Systems and Software, special issue, 1999. pp. 229-240.
Binary Translation
Binary translation makes it possible to run code compiled for source platform S on destination platform D. Unlike an interpreter or emulator, a binary translator makes it possible to approach the speed of native code. Translated code may run more slowly than native code because low-level properties of machine S must often be modelled on machine D. For example, the Digital Freeport Express translator simulates the byte order of SPARC, and the FX!32 translator simulates the calling sequence of the source x86 machine. Because code for decoding, analyzing, translating, and emitting machine instructions is highly machine-dependent and is written by hand, existing binary translators are limited to one or two platforms. Our research makes it much easier to build binary translators for new platforms. It also lays a foundation for the development of new analyses that can improve the performance of translated code; for example, by making it possible to use native byte order or calling sequences in many cases.
UQBT (The University of Queensland Binary Translator)
We have developed a retargetable machine-independent framework for translating binary code. The framework includes register transfer lists (RTLs) - a machine-independent, machine- level representation of the effects of instructions - together with machine-independent analyses of code in a higher-level format called HRTL form. We make use of specification languages to describe properties of machine instruction sets, such as their syntax and semantics, as well as operating system conventions, such as those used for parameter passing, stack frames, and the like. Specification languages aid in the retargetability of a binary translator, as well as in the creation of reusable components. We are currently working with machine code for the SPARC and Pentium hardware platforms, running under the Solaris operating system, and also generate Linux binaries. We have also experimented with a Java Bytecode backend, for the translator, and a dynamic translator, all using the same framework. Internships in this area have been sponsored by Sun Microsystems, Inc. This project has been funded by the Australian Research Council and Sun Microsystems, Inc.
D Ung and C Cifuentes, Optimising Hot Paths in a Dynamic Binary Translator, Second Workshop on Binary Translation, Oct 19, 2000, Philadelphia, Pennsylvania.
C Cifuentes and M Van Emmerik, UQBT: Adaptable Binary Translation at Low Cost, Computer, Vol 33, No 3, March 2000, IEEE Computer Society Press, pp 60-66.
C Cifuentes and D Simon, Procedural Abstraction Recovery from Binary Code, Proceedings of the European Conference on Software Maintenance and Reengineering, 1-3 March 2000, Zurich, Switzerland, IEEE Computer Society Press.
Software Reengineering Process and Enabling Technology
Enabling software technology exists to serve the development processes that are demonstrably useful in the production of real-world software tools. Our reengineering tool development experiences have led to process model (the "Generic Reengineering Architecture") and to a consequent development environment, the Software Refinery-based "Language Extension Workbench" (LXWB).
"Bahasa" _ an Open Reengineering Environment
As well as satisfying the key technical requirements (expressiveness, persistence, extensibility), an enabling technology for reengineering tool development needs to satisfy essential pragmatic requirements. These pragmatics focus on improved access to enabling technology and its products, and include: portability (the need to be able to develop and use reengineering tools on a variety of platforms); reusability (the need to be able to assemble reengineering tools from components); and interoperability (the need to be able to integrate components written in different languages). "Bahasa" re-creates the best of proprietary reengineering environments using "open" technologies to achieve expressiveness, persistence and extensibility. Java is used as the programming language basis in view of its potential for development. Building on other developments of Java to improve expressiveness (polymorphism, higher- order functions), we add further extensions to achieve the expressiveness of our earlier LXWB. Persistence is achieved through CORBA binding, extensibility by self-imple- mentation and inheriting anticipated developments of Java. So far, a prototype has been implemented, and is being trialled in its self- implementation. A by-product will be a tool for the reengineering of Software Refinery applications into Bahasa.
Peake, I. and Salzman, E., "Support for modular parsing in software reengineering", Proc. 8th Intl. W'shop on Software Technology and Engineering Practice, pp. 58-66, IEEE-CS, 1997.
Bailes, P.A., Atkinson, S., Chapman, M., Johnston, D. and Peake, I., "Towards an open software conversion architecture", International Journal of Knowledge Engineering and Software Engineering, 5(3), pp.423-444, 1995.
<%-- end content --%><%@ include file="/include/footer.inc.jsp" %>
