|M.Sc Student||Shapiro Constantine|
|Subject||Object-Oriented Implementation of Reconciliations|
|Department||Department of Computer Science||Supervisor||Professor Shmuel Katz|
Reconciled fields provide a new concept of class data members that have properties of both class and instance variables. Each class instance has its own incarnations of such fields, but for each reconciled field declared in the class, a class-wide reconciliation of the corresponding instance variables can occasionally be performed. Reconciliation here is an as‑if‑atomic operation on a set of variables that calculates their combined “agreed” value and assigns it back to the variables. This approach captures the scenario of a global shared data entity, which has local private versions that are occasionally brought to a consistent state.
A reconciled field can only be of a reconcilable type, which has a reconciliation method defined for it. These types are classes having a property of reconcilability that implies exposing a specific interface. Such a class can produce a combined state when provided a collection of the class instances.
The reconciliation-based software engineering technique presented here is particularly suitable for the design of concurrent and distributed systems. Namely, independent agents use their working copies locally and some global mechanism interrupts their work to create a temporary “master” value as a combination of local values, which is then distributed back to the agents. This way, from an agent's point of view, there are sporadic atomic update operations on its working copy, which, however, take the local value into account.
This work not only adapts the reconciliation concept to the object-oriented paradigm, but also proposes an appropriate extension (“JArVA”) to the Java programming language. A prototype preprocessor, which produces standard Java code from syntactically extended “JArVA” source code, and a class library extension were designed, implemented and tested on the provided example programs.