Language Support for Changeable Systems by Ivar Jacobson First OOPSLA conference ============================= Below I annotate some of the text in the paper: The paper text starts with: OOPSLA 86: followed by my annotation. All quotes from section 6. What is missing from this paper is a systematic mechanism to define sets of join points as with Demeter's traversal specifications and AspectJ's pointcuts. -- Karl Lieberherr OOPSLA 86: ... system development as a change activity ... This matches well with the intent of AOSD. OOPSLA 86: Let us refer to an existing set of services with their objects by the invented word 'existion', and refer to the extended set of services as an extension. exisition = base program extension = aspect OOPSLA 86: Extensions of existing behaviour, by which we mean that new services are introduced but the existing services are not changed. These changes are called functional extensions. Has flavor of introductions. OOPSLA 86: Existing services are changed, which we simply call functional changes. A new version of an existing service is installed. Has flavor of aspects. OOPSLA 86: The second case means that while an existion is executed atomically, the extension may 'intervene' at specified points. When the extension is executed, the control will be returned to the existion which now continues its atomic action. More than one extension may intervene in the execution of an existion. A probe specifies where the intervention is required in the execution of an existion. points = join points = probes OOPSLA 86: We must provide such constructs so that the extension can be described without changing the existion, i.e. the existing service and object definitions. They must not be changed, since they describe well working existing services which in this case must not change. aspect text is separate base oblivious of aspect OOPSLA 86: The idea is to provide an extension service (or object) with a list of probes (fig.7). A probe specifies an insertion point in the graph of the extended service (or object). During interpretation of a transition path, a service instance or an object instance in the existion allows the desired statements of the extension (service or object) to intervene. list of probes = set of join points = pointcut OOPSLA 86: An extension may itself be treated as an existion and be intervened by another extension. An aspect may advise an aspect. OOPSLA 86: new ideas include: ... the inclusion of source language features for system evolution offering change orientation.