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,
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
Chong Yaw
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