Reverse Engineering of OO constructs in Object-Relational Database Schemas Jordi Cabot 1 , Cristina Gómez 2 , Elena Planas 1 and M.Elena Rodríguez 1 1 Estudis d'Informàtica, Multimèdia i Telecomunicació, Universitat Oberta de Catalunya {jcabot,eplanash,mrodriguezgo}@uoc.edu 2 Dept. Llenguatges i Sistemes Informàtics, Universitat Politècnica de Catalunya cristina@lsi.upc.edu Abstract. Reverse engineering applied to databases permits to extract a conceptual schema that represents, at a higher level of abstraction, the database implementation. This resulting conceptual schema may be used to facilitate, among others, system maintenance, evolution and reuse. In the last years, the use of object-relational constructs was incorporated into database development. However, reverse engineering techniques for these specific constructs have not been yet provided. In this sense, the main goal of this paper is to present a method that considers these new constructs in the reverse engineering of an existing object-relational database. As a result of the process, our method returns an equivalent conceptual schema specified in UML (extended with a set of OCL integrity constraints) that represents, at a conceptual level, the database schema. We provide a prototype tool that implements our method for the Oracle9i database management system. Keywords: Reverse Engineering, Object-relational database, UML 1 Introduction Software reverse engineering is the process of analyzing a subject system to identify its components and their interrelationships and to create representations of the system in another form or at higher level of abstraction [1]. Reverse engineering applied to databases (DB) permits to obtain a conceptual schema (CS) that represents, at a higher level of abstraction, a DB implementation. This CS may be helpful in several situations. For instance, when documenting the system to ease its maintainance and evolution. Usually, changes on the DB schema (DBS) are poorly documented once the DB has been created. Therefore, reverse engineering of the DBS from time to time is needed to keep its documentation up to date. The CS also facilitates sytem integration and reuse. The integration process requires data understanding of the systems to be integrated. This data understanding is better achieved when we raise its abstraction level to omit all implementation details, as done during the DB-to-CS transformation. Reverse Engineering has received a lot of attention during the last decades in the DB field [2], [3]. For relational databases, several processes have been defined to extract a conceptual object model from a relational one. Concretely, [4] presents a flexible and interactive approach to obtain an OMT model [5] with classes, associations, generalizations and key and referential constraints from a relational DBS. In the same way, [6] states a method for translating a relational DBS to an ORM [7] model instance. Some work has also been done in the context of OODBs. [8] defines a series of transformations to derive an OMT model from the source code of an existing OO system with an underlying OODB. [9] proposes a process of rebuilding an abstract documentation of the