Looking at the Relations Among Software Objects

What kinds of tools should we build to give software engineers better ways of designing, maintaining, and generally understanding large software systems? We claim that software engineers need (among other things) database facilities that support query, exploration, and visualization of software system structure and behaviour. Furthermore, we believe these facilities should be visual, they should be based on formalisms with precise semantics, and they should concentrate on relationships among software objects not on the objects themselves. In recent years, much attention has been paid to the virtues of object-oriented databases to support software engineering and other new applications of database technology (see e.g. [LH91]). The object paradigm emphasizes encapsulation: hiding implementation details behind inviolable interfaces. However, object-oriented systems tend to de-emphasize relationships among objects. Relationships among objects are inherently non-local and non-encapsulated, and therefore they are a strong source of complexity in system design. This high degree of interconnectivity happens both in the large, as interrelations among components of large systems, and in the small, where complex data structures are needed to describe object relationships. Therefore, instead of looking to the OO world for inspiration, we base our approach on the relational model, where relationships are the central concept, and where a universally understood formal model already exists, unlike the chaotic situation in the OO world. Our approach will be to represent software structures with mathematical relations or predicates and to use a formal language to define new predicates and to query the collection of predicates of interest. We impose Department of Computer Science, Univeristy of Waterloo, Waterloo, Ontario, Canada N2L 3G1, mconsens@uwaterloo.ca. (Work done while the author was at the Computer Systems Research Institute,University of Toronto.) yComputer Systems Research Institute, University of Toronto, 6 King’s College Road, Toronto, Ontario, Canada M5S 1A1, mendel@db.toronto.edu. zIBM Canada Laboratory, 1150 Eglinton Avenue East, North York, Ontario, Canada M3C 1H7, ryman@vnet.ibm.com.

[1]  Arthur G. Ryman Constructing Software Design Theories and Models , 1993, ICSE Workshop on Studies of Software Design.

[2]  Hiroaki Nakamura,et al.  Architecture of the XL C++ browser , 1992, CASCON.

[3]  Mariano P. Consens,et al.  Creating and filtering structural data visualizations using hygraph patterns , 1994 .

[4]  Perry S. Plexico,et al.  Data abstraction and object-oriented programming in C++ , 1990 .

[5]  Alberto O. Mendelzon,et al.  GraphLog: a visual formalism for real life recursion , 1990, PODS '90.

[6]  Alberto O. Mendelzon,et al.  Visualizing and querying software structures , 1992, International Conference on Software Engineering.

[7]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

[8]  Arthur G. Ryman,et al.  Foundations of 4Thought , 1992, CASCON.

[9]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[10]  V. S. Subrahmanian,et al.  Maintaining views incrementally , 1993, SIGMOD Conference.

[11]  Per-Åke Larson,et al.  Updating derived relations: detecting irrelevant and autonomously computable updates , 1986, VLDB.

[12]  Erich Gamma,et al.  ET++ - An Object-Oriented Application Framework in C++ , 1988, OOPSLA.

[13]  Alberto O. Mendelzon,et al.  Hy+: a Hygraph-based query and visualization system , 1993, SIGMOD '93.

[14]  Arthur G. Ryman Illuminating software specifications , 1993, CASCON.

[15]  David Harel,et al.  On visual formalisms , 1988, CACM.

[16]  Alberto O. Mendelzon,et al.  Low Complexity Aggregation in GraphLog and Datalog , 1990, Theor. Comput. Sci..

[17]  David Alex Lamb,et al.  Software engineering - planning for change , 1988 .

[18]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.