Research in the Computer Systems Group at the University of Waterloo is directed toward understanding the processes by which object-oriented highly interactive and reactive systems are designed, implemented, and maintained. Members of the group are particularly interested in developing abstractions that will make these processes more manageable, specifically in the context of adaptability and reuse.
We have devised an approach to object-oriented software design that creates software systems from two types of components called objects and object views. Objects are the usual artifacts of object-oriented design. Object views are also objects which can query and update objects, and represent interfaces between objects, or between objects and external media, such as is represented by a user interface or a network connection.
The approach using object views is supported by two types of abstractions called Abstract Data Objects (ADOs) and Abstract Data Views (ADVs), that allow formal specification of software systems. ADVs and ADOs are intended to augment object-oriented analysis and design methods, and we have found that specification of interfaces separate from the other objects that constitute a design, strongly supports both adaptability and reuse.
ADV and ADO components are specified through schema expressed in various types of logic, and are joined together using interconnection languages. With this approach we can reason about both the individual components and the system composed of the interconnected components. We wish to determine if a design and its components satisfy both the specifications and various interconnection properties such as those found in safety-critical systems. We are using two different frameworks for reasoning about designs, one where the components are described using temporal logic and an interconnection language based on category theory, and a second one which uses higher-order logic and a simple interconnection language to specify the system structure.
Choosing an interconnection pattern that assembles design components into adaptable software systems is a significant challenge. In this context, we are investigating design patterns as approaches to assembling components at both the design and architectural levels. Design patterns have been re-defined in terms of ADVs and ADOs and have been expressed in a formal notation, where the objectives are to understand the process of assembly of designs from objects and object views, and then to construct tools to assist the designer in applying design patterns and generating implementations. We have built one tool called a Designer’s Assistant that uses World Wide Web technology and helps the designer in creating a design and partially automates the process of mapping it into an implementation. The tool "hides" many of the implementation details which make it difficult to produce adaptable software with object-oriented technology.
In addition to supporting design and implementation of adaptable and reusable software, we have found that objects and object views provide a formal foundation for other implementation and modeling techniques including subjectivity and roles.
An integral component of the research program in highly interactive and reactive systems is directed toward using the software engineering processes previously described. We are experimenting with the design and creation of processes for the building of software toolkits in specific application domains. The current focus is the support of client applications for an Environmental Information System (EIS). Specific classes of applications will be characterized by pattern languages which will be used to guide the construction of application templates that can be completed by a domain expert.
We have already built a number of interactive applications in order to understand the implementation processes. These applications combine graphical user interfaces (GUIs), modeling tools and databases. One of the key GUIs is in the form of a map that allows the user to select an area for analysis and to locate all the relevant data. Using the map interface, the toolkit will provide local and remote access to more detailed maps and environmental databases, and provide complementary support including data analysis, scientific visualization, and data and resource discovery. Data and resource discovery techniques allow the user to locate new sources of data, knowledge, and expertise that may be related to the current investigation, but are currently unknown to the user of the EIS. The EIS will support connections to external geographic information systems, and the databases internal to the EIS will support maps, structured data, documents and hybrid collections of data. Automatic generation of filters to transform between internal and external database formats will form part of the EIS.