Several aspects of object orientation have been explored by various ADSA group members. Current research involves essentially all aspects of the "distributed" objectbased system environment from applications views to detailed implmentation of the underlying system. Each specific area is briefly detailed below:
A substantial effort has been made at submitting objectbased systems to the same kind of rigorous "data" design undertaken in traditional relational databases. Techniques have been developed to fragment class objects both horizontally and vertically for a wide range of relizable class models that accounts for inheritenace, composition, and method invocation hierarchies. Research has also investigating the best placement of the these fragments on a distributed platform using traditional imperative programming techniques and by exploiting simulated annealing as a heuristic technique.
Concurrency control and reliablity have been investigated. Algorithms and an underlying theory have been defined for both the serializability and recoverability of transaction in an object based environment. Much of this work extends the fundamental work by Hadzilacos and Hadzilacos where a framework using view serializability is explored theoretically. Our work has demonstrated how their's can be restricted to the more realiazable scenario of conflict serializability and provides algorithms describing how the system could be implemented. Reliability has been explored by applying the work developed by Schek, Weikum and Ye (see PODS`93) which argues that a history is reliable if it can be "reduced". Our work has proposed algorithms for implmenting these systems and argued about its applicability in an objectbased system.
Static Analysis to Enhance Concurrency
Exploiting compile time information in a traditional database system is essentially unnessary because the form and kind of operations that can be performed on data is limited to those provided by the DBMS. For example, if you are using the relational model and SQL there is a fixed (small) number of operations that can be performed. Therefore, to optimize accesses to the data the problem can be handled by a query processor that is responsible for optimizing the requests based on a very small set of variables, most of which can be stored in a the data directory. Unfortunately, this is not possible in object oriented systems because the operations can be much more abstract and cannot be reasonably analyzed until compile time. The work performed to date has attempted to apply compiler technology to the very difficult problem of "method analysis" in an attempt to exploit their complex nature to increase the amount of concurrency.