Generating three-tier applications from relational databases: a formal and practical approach

Abstract This article describes a method for building applications with a three-tier structure (presentation, business, persistence) from an existing relational database. The method works as a transformation function that takes the relational schema as its input, producing three sets of classes (which depend on the actual system being reengineered) to represent the final application, as well as some additional auxiliary classes (which are ‘constant’ and always generated, such as an ‘About’ dialog, for example). All the classes generated are adequately placed along the three-tiers. The method is based on (1) the formalization of all the sets involved in the process, and (2) the mathematical formulation of the required functions to get the final application. For this second step, we have taken into account several well-known, widely used design and transformation patterns that produce high quality designs and highly maintainable software. The method is implemented in a tool that we have successfully used in several projects of medium size. Obviously, it is quite difficult for the obtained software to fulfill all the requirements desired by the customer, but the uniformity and understandability of its design makes very easy its modification.

[1]  Sandro Morasca,et al.  Property-Based Software Engineering Measurement , 1996, IEEE Trans. Software Eng..

[2]  Stephen R. Schach,et al.  A maintenance-oriented approach to software construction , 2000 .

[3]  Veda C. Storey,et al.  Reverse Engineering of Relational Databases: Extraction of an EER Model from a Relational Database , 1994, Data Knowl. Eng..

[4]  Reinder J. Bril,et al.  Maintaining a legacy: towards support at the architectural level , 2000 .

[5]  Neal Leavitt,et al.  Whatever Happened to Object-Oriented Databases? , 2000, Computer.

[6]  Jos Warmer,et al.  The object constraint language , 1998 .

[7]  Neal Leavitt Will WAP Deliver the Wireless Internet? , 2000, Computer.

[8]  Craig Larman,et al.  Applying UML and patterns , 1997 .

[9]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem , 1994, CACM.

[10]  J. Glenn Brookshear,et al.  Theory of Computation: Formal Languages, Automata, and Complexity , 1989 .

[11]  Robert S. Arnold Software Reengineering , 1993 .

[12]  P.R.J. Asveld,et al.  Review of J.G.Brookshear: Theory of computation - Formal languages, automata and complexity (1989), Benjamin/Cummings, Redwood city, CA , 1991 .

[13]  Christian Soutou,et al.  Relational Database Reverse Engineering: Algorithms to Extract Cardinality Constraints , 1998, Data Knowl. Eng..

[14]  Manfred Broy Toward a Mathematical Foundation of Software Engineering Methods , 2001, IEEE Trans. Software Eng..

[15]  Peretz Shoval,et al.  Database Reverse Engineering: From the Relational to the Binary Relationship model , 1993, Data Knowl. Eng..

[16]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture: A System of Patterns: John Wiley & Sons , 1987 .

[17]  Mimoun Malki,et al.  Extraction of Object-oriented Schemas from Existing Relational Databases: a Form-driven Approach , 2002, Informatica.

[18]  Joachim Biskup,et al.  Transforming an Entity-Relationship Schema into Object-Oriented Database Schemas , 1995, ADBIS.

[19]  William J. Premerlani,et al.  An approach for reverse engineering of relational databases , 1993, [1993] Proceedings Working Conference on Reverse Engineering.