Subjectivity and ownership : a perspective on software reuse

Construction of software from existing components is a long standing goal of software engineering. Cost is an important factor distinguishing a component created for reuse from a component built for a particular application. Construction of reusable components requires investment that the developer...

Full description

Bibliographic Details
Main Author: Batenin, Adam
Published: University of Bath 2005
Subjects:
Online Access:https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.420874
Description
Summary:Construction of software from existing components is a long standing goal of software engineering. Cost is an important factor distinguishing a component created for reuse from a component built for a particular application. Construction of reusable components requires investment that the developer can recoup only by reuse or by marketing the component for reuse by others. Much of today's software construction is not aimed at markets but to fulfill specific objectives set out in requirements. This thesis proposes a means of constructing more reusable software, including software that is not destined for component markets, by combining subjectivity and ownership. Subjectivity, in the form of Subject-Oriented Programming, is a software development technology in the area of Aspect-Oriented Software Development that enables software decomposition into partially overlapping modules known as subjects. Subjects enable the creation of modular implementations of use cases, features and systemic requirements, all within the familiar environment of object-oriented programming. Anomalous interactions during stateful inter-subject interactions are an acute problem in reuse and for modular subject development. In the worst cases, they require either patching or invasive modifications. To tackle this problem, we propose annotations in the form of ownership types. In object-oriented programming, Ownership Types have been proposed as a solution to the endemic problem of aliasing. Structured use of aliases facilitates the construction of robust software that ensures representation encapsulation and supports modular reasoning. The subject-oriented approach to problems previously modelled using object-oriented idioms requires a novel solution to the concept of ownership. Subjects do not have a representation; instead, ownership types annotate the ownership structure of object collaborations implemented by subjects. In this thesis we propose the Subjective Alias Protection System or SAPS. It is a tool both for subject design and reuse. At a small syntactic overhead, SAPS supports the design of well structured subjects whose classes ensure representation containment. SAPS improves the reusability of subjects: Subjective Ownership Types are per-object annotations of the places an object may be referenced or modified. Our extensions to subject composition rules constrain subject and class reuse to meaningful cases and can prevent compositions leading to anomalous interactions. SAPS facilitates modular development of subjects because aspects of subject effect on state can be observed from the points of inter-subject interaction. Finally, Subject-Oriented Programming with SAPS can address more concerns than is possible without it.