TERM PAPER 2002 : Clarke, S.; Walker, R.J. Composition patterns: an approach to designing reusable software, Page(s): 5 -14
Proceedings of the 23rd International Conference on Software Engineering, 2001. ICSE 2001


Abstract

            Besides enabling early assessment of the technical feasibility, correctness, and completeness of requirement of a project, software design also allows greater for reuse, management of complexity, enhance comprehension and even improve evolvability. However, when there is an operation may impact every class of a system during operation, the danger of scattering and tangling is very high. Improper design may lead to difficulties in maintaining and reusing the programme.

 

Motivation

                When designing elements to support the operation that may impact every operation in every class, there may be a need to separate them into a class, however this separation is not quite possible to maintain and would need to be designed analogously.

                A composition pattern supports the design a cross-cutting requirement independently from any design it may potentially cross-cut to solve the problem of supporting the separate design of reusable, cross cutting requirements.

 

Composition Patterns: The Model

Composition patterns is a part of the subject-oriented design model, formed based on a combination of the subject oriented design for composing and decomposing separate, potentially overlapping design, and UML templates.

                To represent the composition pattern, all template parameters for all pattern classes is put together in a single box and placed on the subject box.

In allowing a designer to identify operations in different design subjects that correspond and should be merged, the subject-oriented design model supports merging of operation by the generation of an interaction model realizing the composed operation as delegating to each of the corresponding input operations.

The subject oriented design enables the specification of different subjects to be integrated to a composed output while the UML defines the binding relationship between template specifications. By extending standard composition relationships with an attachment that defines the elements that are to replace those templates, the composition patterns model combines the two notions.

A composition relationship’s attachment may specify multiple replacements for pattern classes and template operation within those classes. In this case, multiple replacements are added to each of the replacement classes in the output subject.

Separation at the design level is possible to maintain at the code phase using an appropriate implementation model. Conceptually, subject-oriented design evolved from the work of subject-oriented programming. There are advantages in doing this: firstly, it ensure separation is maintained and secondly, the existence of a design approach that supports separation of cross-cutting behaviour makes the design phase more relevant to this kind of programming

AspectJ is an aspect-oriented extension to Java that supports programming cross-cutting code as separate aspect programs.

 

 

Keyword: UML, Object-oriented Design and Subject-oriented Design.

 

3.     Read the paper and find out the new contribution that has been made to the field of software engineering. (1 week)

The primary contribution of this paper is the specification of means to capture reusable patterns of cross-cutting behaviour at the design level: composition patterns. The article introduces us to a new method of designing a programme which will help in reducing scattering and tangling. This way it will help programmers make a programme that is more reusable.

The secondary contribution is an introduction to how one programming model that supports cross-cutting behaviour is supported at the design level by composition patterns. Aspect-oriented programming is introduced in this article. Aspect oriented programming is a new programming technique that allows programmers to modularize crosscutting concerns.

4.     Elaborate the technique(s) explained in half-page. (1 week)

As compared to the subject-oriented design model, the object-oriented design models have been less useful throughout the lifetime of software systems than these benefits suggest. Object-oriented model may cause structural mismatch due to scattering its support across those multiple classes and tangling support for multiple requirements with the core responsibilities of that class. This can be removed with subject-oriented design with decomposition capabilities that support the separation of the design for each requirement into different design models.

                This is the technique discussed in the paper described briefly for clearer description please refer to the summary.

 

6. Do you see a relation of the techniques to your lab project? Do you think that this article that you have read will help you in your lab project in any way? If so please explain that.
( 1 week)

                The technique used here is an extension of the design part of the lab project. In the design part of our project we are asked to design our project, using UML diagram. In our analysis we us the object-oriented design modeling. In a way the techniques discussed would help us in the designing part of my lab project, it would help in making the software more reusable, i.e. other software engineer would be able to improve our software more effectively. However, due to insufficient knowledge and time, we would not be able to implement it. The idea of subject-oriented design modeling is something very new to us. Moreover, the project is rather small so it would have very little or no scattering and tangling.

7.    If you are asked to extend the ideas and improve on this article, list the possible  extensions. ( 1 week)

                One of the way to improve this article is to provide us with examples to show how scattering and tangling can happened in real life. This way we would be able to visualize better the problem that he is trying to solve.

We have been learning to design programmes based on Object-oriented programming, so it will be rather difficult for us to accept his idea and throw out what we have been learning over the pass 2 years. Therefore the writer has to elaborate on the problems with object-oriented design. Case studies and experience reports on using aspect-oriented programming and separation of concerns would also be helpful on convincing us the benefits of aspect-oriented programming.

Also, the writer can also elaborate on how the template for the composition pattern is formed. The writer does not show us how we can implement this idea on a whole programme design, how do we integrate this portion of the programme to the other part of the programme.

 

8.     Critical comments on the notations/diagrams used in the article for representing the different artifacts of software.

The notation [number] used in this article is quite confusing as we does not know what it is referring to. The writer should explain what this notation is referring to.

I would say that the diagram used in the article is quite well done. The diagrams help to understand better the concept the writer is trying to explain, without the diagrams, the concept would be quite a hard one to grasp.

The UML diagram used in this article is using the same concept that we have learnt from the 207 lecture. They are not contradicting to what we have learnt.

9.     How would you validate and expand on the ideas specified in this article. Can you modify and come up with a new procedure/algorithm? Can you modify the diagrams to capture the extensions that you would like to propose? ( 2 weeks)

The concept of subject-oriented design is being widely discussed by a lot of programmers. The advantages that they are raving about, when using subject oriented design, is clearly discussed in this article.

However through my further reading from various website, not many of them provided UML diagrams for further understanding. The writer of this article put up a diagram that is of a very good standard that there is little or no need to modify it.

10.     Specific comments on the Software Project, Process, Platform, People, Product specified in the article.

AspectJ is introduced here as a programming language that supports programming cross-cutting code as separate aspects of programme.

AspectJ is an aspect-oriented extension to Java. It enables the clean modularization of crosscutting concerns such as: error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, multi-object protocols.

11.  Your comments on the results presented in the paper and its relevance to the immediate future.

                The paper provides ideas on how to make a software project more reusable through proper design. This would be very useful for future programmer as they would be able to extend from the programme made by their predecessor. This in turn will help to boost the advancement in computer science. The article here gives us an introduction on aspect-oriented programming. Already there are a lot of discussions on the aspect oriented programming. For me, as a future software engineer, the discussion will surely help me in future when I am faced with a large programme.

12.  References: List all related articles/books that you have read to successfully write this term paper.

Xerox Corporation. AspectJ 0.7b3 Design notes http://www.aspectj.org

S.Clarke, “Composing Design Models: An Extension to the UML”. In Proc. Of international Conference on the UML, pp 338-352, 2000.

Dunsmore, A. The Role of Comprehension and Defects in OO Inspection, Technical Report, Department of Computer Science, Strathclyde University, August 1999,

http://www.cs.strath.ac.uk/research/EFOCS/reports.html

 

http://www-106.ibm.com/developerworks/java/library/j-aspectj/?loc=dwmain

Sc207  Lecture notes

13.  Acknowledgements if any: (For all those who helped in this term paper!)

Ass. Prof Edmond C. Prakash for providing Sc207 lecture notes

 

Chong Yaw Kent for helping in locating the term paper

 

Author(s)

Year

Article

Some Description

How does it relate to your main article

A Dunsmore

1999

The Role of Comprehension and Defects in OO Inspection

Gives information about defects in OO code

Better understanding of defects in OO code. Other improvement on OO code.

Nicholas Lesiecki

2002

AspectJ brings AOP to the Java language

How to and why use aspectJ

Further discussion on aspect oriented programming.

S. Clarke

2000

Composing Design Models: An extension to the UML

Ways to improve the UML

Just like my main article, this article discuss about how a UML diagram can be improved.

Dunsmore, A.; Roper, M.; Wood, M.

2000

Object-oriented inspection in the face of delocalization. Page(s): 467 –476

The difficulties of understanding the OO code.

Better understanding of defects in OO code. Other improvement on OO code.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

related work that has been published in the related work