[Universität Ulm ] [Fakultät für Informatik ]
In this project we were concerned with improving programming language support for the practical software development process and so making that process more efficient. Some important aims are the support for:
The following represent some of the main areas on which the research focused. We implemented several Java-based languages (Genja, Collja, Tau) which have allowed us to gain experience with each of the ideas separately. This experience has been used in the design of our new programming language Timor.
Class-based object-oriented languages traditionally fuse the notions of type and implementation in the class construct. Software engineering methods, on the other hand, clearly separate type specifications from their possible implementations. In connection with inheritance the fusion of types and implementations results in either subtyping problems or restricted code reuse and forces type abstraction to be modelled with inheritance. Java has taken a step in the direction of supporting type abstraction by providing 'interface types' and an explicit 'implements' relation. We propose a more radical model for programming languages: classes never define types and interfaces, called type definitions, are the only entities valid for typing. We introduce the concept of late implementation binding via implementation pragmas. These ideas have been realised in a Java-based language called Tau.
Evered, M., Schmolitzky, A., Menger, G. and Keedy, J.L. "A Strict Approach to Information Hiding in Object-Oriented Languages", IASTED Intl. Conference on Software Engineering, San Francisco, 1997.
The term 'inheritance' is heavily overloaded. It can be used to mean inheritance of behaviour, of an interface description or of an implementation and can refer to a particular language mechanism or to one of many different programming and design concepts. Existing classifications of inheritance fail to distinguish adequately between the different semantics and different aims of the many possible variants. Inheritance mechanisms are used to express many different programming concepts. We have analysed inheritance concepts to determine the requirements for an inheritance mechanism which is to support the concepts well. On the basis of this analysis we can identify weaknesses in current mechanisms, particularly in the areas of modelling and signature modification and show how an inheritance mechanism can better fulfil the requirements while remaining type-safe.
We introduce a distinction between object types and attribute types, showing that there are advantages in treating them as separate constructs of an object-oriented programming language. The use of a technique called bracket routines for generalized attribute types, such as "synchronized" or "protected", can lead to clearly modeled and cleanly implemented programs.
Evered, M., Keedy, J.L., Menger, G. and Schmolitzky, A. "How Well Do Inheritance Mechanisms Support Inheritance Concepts?", Lecture Notes in Computer Science, 1204, Springer-Verlag, 1997, pp. 252-266.
Keedy, J.L.,.Evered, M., Schmolitzky, A. and Menger, G. "Attribute Types and Bracket Implementations" Proc. Conf. on Technology of Object-Oriented Languages and Systems, 25, Melbourne, 1997, pp.325-337.
Keedy, J.L., Espenlaub, K., Menger, G., Schmolitzky, A. and Evered,
M. "Software Reuse in an Object Oriented
Framework: Distinguishing Types from Implementations and Objects from Attributes",
6th International Conference on Software Reuse, Vienna, 2000, pp. 420-435.
Schmolitzky, A., Evered, M., Keedy, J.L. and Menger, G. "Late-Bound Pragmatical Class Methods", Journal of Object-Oriented Programming, 13, 7, 2000, pp.25-33.
Generic classes and especially generic collection libraries can be of great benefit for efficient software production. Constrained genericity is used to guarantee that the type provided as a parameter to a generic class such as a sorted list will offer the methods that class requires. We argue that constrained genericity is not really the appropriate mechanism for this purpose since it restricts a generic class to one kind of use for each element type. We introduce the concept of 'generic procedure parameters' which allow the properties of a collection class to be specified in the instantiation rather than via the properties of the elements. The concept is very efficiently implementable, more powerful than constrained genericity and more useful for the practical construction of complex data collections. These ideas have been implemented in a Java-based language called Genja.
Evered, M. "Unconstraining Genericity" , Proc. Conf. on Technology of Object-Oriented Languages and Systems, 24, Beijing, 1997, pp. 423-431.
Evered, M., Keedy, J.L., Menger, G. and Schmolitzky, A. "Toward Zero-Overhead Genericity in Java", 3. Fachkongreß, Smalltalk und Java in Industrie und Ausbildung, Erfurt, 1997, pp. 62-67.
Evered, M., Keedy, J.L., Menger, G. and Schmolitzky, A. "Genja - A New Proposal for Genericity in Java" , Proc. Conf. on Technology of Object-Oriented Languages and Systems, 25, Melbourne, 1997, pp.181-193.
Collection classes such as sets and lists are ideal candidates for software reuse and can therefore play an important role in object-oriented class libraries. Ideally their use can lead to a higher-level and therefore more efficient style of programming. Collection class libraries have been criticised as being too unwieldy, too inflexible and generally difficult to use. We havedeveloped a generic collection framework which improves usability by placing more emphasis on the user's (i.e. the client programmer's) point of view and by distinguishing concepts often confused in other collection libraries. We have developed a Java-based language called Collja which provides not only a standard collection framework but also a concise and convenient syntax for their use.
Evered, M., Keedy, J.L., Menger, G. and Schmolitzky, A. "A Useable Collection Framework for Java", 16th IASTED Intl. Conf. on Applied Informatics, Garmisch-Partenkirchen, 1998, pp.115-118.
Menger, G., Keedy, J.L., Evered, M. and Schmolitzky, A. "Collection Types and Implementations in Object-Oriented Software Libraries", Proc. Conf. on Technology of Object-Oriented Languages and Systems, 26, Santa Barbara, 1998, pp.97-109.
Evered, M. and Menger, G. "Eine Evaluierung des Java JDK 1.2 Collections Framework aus Sicht der Softwaretechnik", Proc. Java-Informations-Tage, Frankfurt, 1998.
Evered, M. and Menger, G. "Very High Level Programming with Collection Components", Proc. Conf. on Technology of Object-Oriented Languages and Systems, 29, Nancy, 1999, pp.361-370.