<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Using an Ontology to Suggest Software Design Patterns Integration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>IRIT - MACAO</string-name>
          <email>bouhours@irit.fr</email>
          <email>harb@irit.fr</email>
          <email>leblanc@irit.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <addr-line>Université Paul Sabatier 118 Route de Narbonne F-31062 TOULOUSE CEDEX 9</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>To give a consistent and more valuable feature on models, we propose that model-driven processes should be able to reuse the expert knowledge generally expressed in terms of patterns. In order to formalize and use them, some design pattern ontologies have been developed. To share them on the Web they have been implemented using the OWL language. They can be easily interrogated with dedicated query languages. Our work has consisted in extending a design pattern intent ontology with “alternative model” and “strong points” concepts, which partially refers “anti-patterns”. We validate this approach in tooling a step of a design review activity, we have proposed. This activity, directed by design patterns, is adapted to a model driven process, for the need to improve object-oriented architecture quality.</p>
      </abstract>
      <kwd-group>
        <kwd>OWL</kwd>
        <kwd>SPARQL</kwd>
        <kwd>Software Design Pattern</kwd>
        <kwd>Design Review Activity</kwd>
        <kwd>MDE</kwd>
        <kwd>MDA</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        The emergent MDE community, aiming at giving a productive feature on models, has
proposed model-driven process development. However, to obtain guarantees on
model relevance at the end of each activity, these processes should promote the reuse
of the knowledge of experts generally expressed in terms of analysis [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], design [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] or
architectural [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] patterns approved by the community. Given the existence of “code
review” activities [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] in some development processes, we have specified a “design
review” activity [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] directed by design patterns and oriented to model quality. In this
activity, we propose to parse models to find fragments substitutable with software
design patterns and to replace them if the intent of the designer matches with the
intent of the pattern and if the architectural qualities of the pattern are needed. Our
activity is situated after the design stage, and its purpose is to urge and to help the
designer to integrate design pattern in his design.
      </p>
      <p>
        Thanks to their Design Pattern Intent Ontology (DPIO), Kampffmeyer et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
have developed a wizard enabling designers to efficiently retrieve software design
patterns applicable for their design problems, during the design stage. Our approach
has not the same timing. It is situated after the design stage, and it verifies if there is
no known bad design practices in a model. So, the designer is not in need of
identifying design problems, it is the activity which finds the lacks in his models and
suggests design patterns integrations instead. However, the DPIO [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is an interesting
start point for the formalization of our concepts because it links software design
pattern to some problem concepts. So, in reusing this ontology backwards (from the
pattern to the design problems), and in adding our concepts, we are able to establish a
dialog with the designer.
      </p>
      <p>
        In this paper, after presenting the design review activity, we explain how we have
reused and extended the DPIO [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. We illustrate the execution of our activity on a
“file system management” example.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2 The Design Review Activity</title>
      <p>
        The design review activity, presented in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], may be decomposed into four steps (see
Fig. 1).
      </p>
      <p>Designer Model to review
IN or OUT
element
for a step</p>
      <p>step
sequence</p>
      <p>Model to review</p>
      <p>[checked]
Pattern integration</p>
      <p>[propositions]
Pattern integration</p>
      <p>Model to review</p>
      <p>[improved]</p>
      <p>In order to work with models in a “sufficient” quality, the first step checks good
basic object-oriented design practices.</p>
      <p>
        When the model to review is checked in a “sufficient” quality state, the second step
consists in an automatic research of model fragments which are candidate to a
substitution with a pattern. This research is based on structural similarities detection
with “alternative models”. An “alternative model” is a model which solves
inadequately the same problem as a pattern [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. That means there is a better solution
to solve this problem. Our work hypothesis is that a software design pattern is the
best solution for a given design problem. According to the taxonomy proposed by
Chikofsky and Cross [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], our detection technique can be connected to a
redocumentation technique as to permit model restructuring. Our “alternative
models” catalog is presented in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], with the experiments used to constitute it.
      </p>
      <p>Each “alternative model” detected in the model represents propositions of
fragments substitutable with a design pattern. Since we need the designer opinion in
the third step, our ontology will help him determine if his intent matches with the
suggested pattern intent and whether the propositions are needed in the model to
review.</p>
      <p>With the designer authorization, the last step consists in integrating the validated
propositions into the model. This integration is done thanks to an automatic model
refactoring.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Reusing and extending an existing ontology</title>
      <p>In order to improve the design of object oriented models, our work relies on detecting
all instances of alternative models in UML design models and substituting them, if
necessary, with appropriate design patterns. Each class of the instances detected is
connected in the same manner as the classes of the alternative model. So, since the
detection is only structural, the instances detected must be checked by the designer
before any substitution with a pattern. Therefore, after the detection step, propositions
of patterns integration consist of sets of model fragments representing a possible
substitution. These sets may be large where some fragments may not be relevant with
a substitution. So, to help the designer in filtering the fragments, we need an ontology
that formalizes intent of design patterns (is the substitution have a sense?) and our
characterizations of “alternative models” in terms of quality features (is the effort of
the substitution balanced by improved architectural qualities?).</p>
      <p>
        For this purpose, we choose OWL, the Web Ontology Language [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], to import an
existing ontology on design patterns intent and extend it by adding our knowledge on
“alternative models”. We validated our new knowledge base using a specific query
language to interrogate it and filter out the pertinent information.
3.1
      </p>
      <sec id="sec-3-1">
        <title>Requirements</title>
        <p>
          Our catalogue is composed with “alternative models”, introduced in Section 2, and
their characterization. We have constituted our catalog in asking students to solve
some design problems. These problems were simply solvable with designs patterns,
but, as the students chosen have no knowledge on design patterns, they solve the
problems without using design patterns. In following our work hypothesis, their
solutions were not the best solution for the problem, and so, the models produced had
some design defects. The characterization of these defects consists in a valuation of
the “strong points” of the pattern. “Strong points” are criteria of object-oriented
architecture or software engineering quality, partially deduced from the
“consequences” section of the GoF [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] catalogue and from our study on the design
defects of “alternative models”. As pattern injection may alter some object-oriented
metrics [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], “strong points” allow us to compute dedicated pattern metrics to classify
the “alternative models” and to help the estimation of the pertinence of pattern
injection in a design model. Each “alternative model” perturbs the “strong points” of
its associated pattern.
        </p>
        <p>Since we need to formally describe design patterns, “alternative models” and
“strong points” in a machine readable format, we start with the DPIO ontology. These
concepts must be constructed in a way that allows querying based on the “alternative
model” detected.</p>
        <p>Intent: Compose objects into tree structures to represent part-whole hierarchies.
Composite lets clients treat individual objects and compositions of objects uniformly.
Applicability: Use the Composite pattern when:
you want to represent part-whole hierarchies of objects.
you want clients to be able to ignore the difference between compositions of
objects and individual objects. Clients will treat all objects in the composite
structure uniformly.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Structure:</title>
        <p>Component</p>
        <p>* +children
Leaf</p>
        <p>Composite
Strong points:
1 Decoupling and extensibility
1.1 Maximal factorization of the composition
1.2 Addition or removal of a Leaf does not need code modification
1.3 Addition or removal of a Composite does not need code modification
2 Uniform processing
2.1 Uniform processing on operations of composed object
2.2 Uniform processing on composition managing
2.3 Unique access point for the client</p>
        <p>In Fig. 2, we present one of the GoF patterns, named Composite. The intent, the
applicability and the structure are provided directly from the GoF book while the
“strong points” are deduced from our experiments by comparing solutions to specific
design problem implemented by the Composite pattern and its “alternative models”.
Fig. 3 shows the structure and the design defect valuation of an “alternative model” to
the Composite pattern. We have named it “Development of the composition on
Composite with process conformance” in reference of its design defects. Then an
“alternative model” can be considered as a “chipped pattern”.</p>
        <p>So we have made two major hypotheses about “alternative models”. First, each
“alternative model” is attached by the valuation of their design defects to a unique
design pattern. Second, each “alternative model” has one or more strong points
perturbed. We assume that the same structure of an “alternative model” can be
duplicated in our catalog, but with a different name, a different valuation and some
different components.</p>
      </sec>
      <sec id="sec-3-3">
        <title>Name:</title>
        <p>Development of the composition on Composite with process conformance</p>
      </sec>
      <sec id="sec-3-4">
        <title>Alternative model:</title>
        <p>Component</p>
        <sec id="sec-3-4-1">
          <title>Strong points perturbations 1.1 2.1 1.2 2.2 1.3 2.3</title>
          <p>Leaf
*
Composite
*</p>
        </sec>
      </sec>
      <sec id="sec-3-5">
        <title>3.2 Existing ontology: the Design Pattern Intent Ontology</title>
        <p>
          Design patterns have been used successfully in recent years in the software
engineering community in order to share knowledge about the structural and
behavioural properties of software. Most of the existing approaches to formalizing
design patterns are based on structural aspects. For example, the work of Dietrich et
al. [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] uses the OWL to formally describe the structure of design patterns and then
transform it in first-order logic predicates which are reuse as an entry for a scanner
pattern. However, there is more lightly approaches concentrated in the usability of
design patterns according to the design problems they solve. Kampffmeyer and
Zschaler [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] define the intent of the 23 GoF design patterns [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] using OWL. Their
work was based on the work of Tichy [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], who developed a catalogue of more than
hundred design patterns classified according to the problems patterns solve.
        </p>
        <p>
          The core structure of the DPIO, provided from the paper [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], is presented in Fig. 4
by UML classes and associations. Kampffmeyer and Zschaler chose to represent their
ontology with UML diagram because they consider that is easily to understand. To
read the diagram, they indicate: “The relations between DesignPattern, DPProblem
and ProblemConcept classes are depicted using UML-notations. UML classes
symbolize OWL classes and UML associations symbolize OWL object properties.
Each DesignPattern is a solution to one or more design pattern problem DPProblem.
The association between them indicates an object property isSolutionTo which is an
inverse property of isSolvedBy. DPProblem is defined that is the root node for more
specific problems. The association class Constrains indicates an OWL object property
that can be specialized also by subproperties. DPProblem is a set of classes that
describe a problem by constraining a ProblemConcept”. The DPIO contains the
vocabulary for describing the intent of design patterns.
        </p>
        <p>All the 23 GoF patterns inherit from the DesignPattern class. DPProblem and
ProblemConcept are the root classes of the other hierarchies.</p>
        <p>
          Based on the work of [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], and instead of finding the design pattern for a given
problem, we retrieve the intent of a design pattern. It is much like reversing the query
to get the pertinent data from the same ontology. So we can benefit from their existing
work and their published ontology.
        </p>
      </sec>
      <sec id="sec-3-6">
        <title>3.3 Method and Results</title>
        <p>
          Now to determine the scope of our new ontology, there are kinds of questions called
“competency questions” the ontology should be able to answer [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Our work could
be defined in 3 steps: first, when an “alternative model” is detected, we need to
interrogate our knowledge base to know which design pattern could replace it.
Second, we will verify with the designer if his “alternative model” detected has a
similar intent as the corresponding design pattern. Last, in this case, we will show him
the lack in his model by displaying the perturbed “strong points”. Then, if the
designer finds the need to improve his model, his fragment will be substituted with
the design pattern. Therefore, the three competency questions are as follow:
1. Which design pattern could replace a given “alternative model”?
2. What is the intent of the corresponding design pattern?
3. Which are the “strong points” perturbed using this “alternative model”?
In designing the structure of the new ontology, we took into consideration all the
possible relations between the classes in the DPIO model and the classes we want to
add:
1. Each”alternative model” could be replaced by one and only one Design
Pattern. But a Design Pattern will replace one to many “alternative
models”.
2. An “alternative model” perturbs at least one “strong point” of the Design
        </p>
        <p>Pattern that can replace it.</p>
        <p>From this analysis, we extend the DPIO by adding our new concepts.</p>
        <sec id="sec-3-6-1">
          <title>2. Four new OWL properties:</title>
          <p>a. isReplacedBy: links an AlternativeModel to his corresponding</p>
          <p>DesignPattern.
b. Replace: the inverse of isReplacedBy.
c. Perturbes: links an AlternativeModel to the valuation of the
corresponding pattern “strong points” (StrongPoint).</p>
          <p>d. hasRule: links a DesignPattern class to one of its StrongPoint.
OWL Classes
Composite_AM_5</p>
        </sec>
        <sec id="sec-3-6-2">
          <title>Composite_Rule_1 Composite_Rule_2 Composite_Rule_1.1 Composite_Rule_1.2</title>
        </sec>
        <sec id="sec-3-6-3">
          <title>Composite_Rule_1.3</title>
        </sec>
        <sec id="sec-3-6-4">
          <title>Composite_Rule_2.1 Composite_Rule_2.2 Composite_Rule_2.3</title>
          <p>rdfs:comment
Development of the composition on “Composite” with
protocol conformance
Decoupling and Extensibility
Uniform processing
Maximal factorization of the composition
Adding or removing a Leaf does not need a code
modification
Adding or removing a Composite does not need a code
modification
Uniform processing on operations of composed objects
Uniform processing on compositions management</p>
          <p>Unique access point for the client</p>
          <p>For presentation reasons, we have omitted the name of the design pattern in each
sub feature.</p>
          <p>
            We used Protégé [
            <xref ref-type="bibr" rid="ref15">15</xref>
            ], an open source ontology editor and knowledge-base
framework, to load the existing ontology and add our new classes, properties,
property characteristics, and interrogate it using queries. We referred to a user guide
[
            <xref ref-type="bibr" rid="ref14">14</xref>
            ] on how to develop an ontology using Protégé and the OWL Plug-in. We created
our OWL classes, linked them by OWL properties, and interrogated the knowledge
base by generating SPARQL (SPARQL Protocol and RDF Query Language) [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ]
queries to answer our competency questions.
          </p>
          <p>SPARQL is a W3C Candidate Recommendation towards a standard query language
for the Semantic Web. Its focus is on querying RDF graphs at the triple level.
SPARQL can be used to query an RDF Schema or OWL model to filter out
individuals with specific characteristics.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Illustration on a “File System Management” Design</title>
      <p>After adding our new concepts to the DPIO, the knowledge base could now be
interrogated according to the competency questions we mentioned earlier. Standard
ontology reasoning is used to retrieve the results responding to queries. In order to
illustrate the use of the ontology, we execute the whole activity on an example. It was
found in a subject of an object-oriented programming supervised practical work. It
aims to implement a file management system represented in the Fig. 7 below.
-subdirectory
*</p>
      <p>Directory
+open()
+delete()
+getSize(): int
+getAbsolutePath(): String
+add(e: FileSystemElement)
+remove(e: FileSystemElement)
+get(): FileSystemElement[*]
+searchDir(name: String)
+searchFile(name: String)
-root
Fig. 7. Model to Review: File System Management</p>
      <p>This static UML model represents a basic architecture for a File System
Management. Authors of this model are interested in the presentation of some object
concepts:</p>
      <p>Inheritance between classes and abstract classes. A uniform protocol for
every FileSystemElement is encapsulated by a corresponding abstract
class. Directories and Files must respect this protocol via inheritance
relationship. We can note that all concrete classes are derived directly or
indirectly from an abstract class. This rule enforces the emergence of
reusable protocols.</p>
      <p>Management of references, here composition links, between container and
components. A Directory object manages some references to Files and
Directories objects.</p>
      <p>Nevertheless, this model contains a misconception. Although there is a uniform
protocol owned by the class FileSystemElement, the management of composite links
along a hierarchical structure is duplicated. Indeed, Directory class manages
independently links on Files and Directories. Now, we consider two evolution
scenarios. The first is adding new Terminal types in the tree structure, for example,
symbolic links in UNIX systems. This evolution requires the management of this
new type of links by the Directory class and then requires code modification and code
duplication in this class. The second is adding new non Terminal types in the tree
structure, for example archive files in UNIX or in Java environment. We can
consider that an archive file has the same functionalities as a Directory. This
evolution requires a reflexive link on an archive file class and the duplication of all
links that represent composition links in the tree structure. Then it requires
duplication of management of composition and modification in the Directory class, it
must manage another type on FileSystemElement. These two scenarios show a
decoupling problem (each container manages a part of the composite structure) and an
extensibility limitation (it requires existing code modification for adding new type of
terminal or non terminal element of the composition hierarchy). Therefore, this
model can be improved. Furthermore, when the authors have implemented this
model, they realized that there were defects, and they adapted their code to improve it.
4.1</p>
      <sec id="sec-4-1">
        <title>Object-Oriented Quality Checking</title>
        <p>Visually, there is no design mistake: each class of the model presents a reusable
protocol. Composition links are used here as delegation between Directory and File.
And messages sent between them have the same selector.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2 “Alternative Models” Detection</title>
        <p>This step consists in the execution of all queries corresponding at each “alternative
model” of the base. In this example, the query of the fifth Composite “alternative
model” returns theses matching classes:
1. The Directory class is able to play the role of the Composite class.
2. The File class is able to play the role of the Leaf Class.
3. The FileSystemElement is able to play the role of the Component class.</p>
        <p>Using an Ontology to Suggest Software Design Patterns Integration 11</p>
        <p>This means that we detected an “alternative model” for the Composite pattern
because they have the same structural features (cf. Fig. 8).</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3 Designer/Machine dialog</title>
        <p>At this step, the designer must verify the substitutability of the detected fragment.
Firstly, he must verify if the intent of the fragment matches with the proposed design
pattern. To do so, we build a question thanks to a SPARQL query we have coded (cf.
Listing 1). This query retrieves the intent of the design pattern in using the
“alternative model” detected (here Composite_AM_5). Indeed, we consider that the
intent of the pattern is described with a list of couples (constraint – ProblemConcept)
in the ontology (see Fig. 5).</p>
        <p>SELECT ?DesignPattern ?constrains ?ProblemConcept
WHERE{
?DesignPattern rdfs:subClassOf ?x.
?x rdf:type owl:Restriction.
?x owl:onProperty :replace.
?x owl:someValuesFrom: Composite_AM_5.
?DesignPattern rdfs:subClassOf ?y.
?y rdf:type owl:Restriction.
?y owl:onProperty :isSolutionTo.
?y owl:someValuesFrom ?pbconcept.
?pbconcept rdfs:subClassOf ?z.
?z rdf:type owl:Restriction.
?z owl:onProperty ?constrains.</p>
        <p>?z owl:someValuesFrom ?ProblemConcept.</p>
        <p>}
Listing 1 SPARQL query to retrieve the intent of the Composite pattern that could replace the
“alternative model” Composite_AM_5</p>
        <p>Based on the results (cf. Fig. 9) of this query, we will proceed in dialoguing the
designer with the first question: We have detected in your design an alternative model
of the CompositeDesignPattern. Is the fragment {FileSystemElement, File,
Directory} composes Object, builds TreeStructure and nests Objects?</p>
        <p>We can note that the intent of {FileSystemElement, File, Directory} is a recursive
composition: “Directories are composed with Files or Directories which are
composed with…”. So the answer to the previous question is positive.</p>
        <p>Now, we must check the interest to replace the fragment with the pattern. Thanks
to the perturbation of the “strong points”, we can present to the designer the
advantage to use the pattern. We retrieve the perturbed “strong points” with a
SPARQL query (Listing 2):</p>
        <p>SELECT ?Strong_Points ?Sub_Features
WHERE{
:Composite_AM_5 rdfs:subClassOf ?x.
?x rdf:type owl:Restriction.
?x owl:onProperty :perturbs.
?x owl:someValuesFrom ?SF.
?SF rdfs:subClassOf ?SP.
?SP rdfs:comment ?Strong_Points.</p>
        <p>?SF rdfs:comment ?Sub_Features.</p>
        <p>} ORDER BY ASC(?Strong_Points)
Listing 2 SPARQL query to retrieve the “strong points” perturbed by COMPOSITE_AM_5</p>
        <p>The second question is built with the results (cf. Fig. 10) of the previous query:
Our analysis shows that you have problems of “Decoupling and Extensibility”; your
model is unable to satisfy those points:
1. Maximal factorization of the composition.
2. Addition or removal of a leaf does not need code modification.</p>
        <p>3. Addition or removal of a composite does not need code modification.</p>
        <p>In injecting the CompositeDesignPattern, you will improve all of these points. Do
you want to refactor the identified fragment {FileSystemElement, File, Directory} ?</p>
        <p>As we consider that the model may evolve, it is useful to guarantee that there are
extensibility and decoupling possibilities.</p>
        <sec id="sec-4-3-1">
          <title>Therefore, the fragment must be</title>
          <p>At this step, the identified fragment is replaced by the suggested design pattern like
substituted with the pattern.</p>
        </sec>
      </sec>
      <sec id="sec-4-4">
        <title>4.4 Patterns Integration</title>
        <p>the Fig. 11 below:
&lt;&lt;Composite&gt;&gt;</p>
        <p>Directory</p>
        <p>To do so, a suite of simple model refactoring suffices to integrate the pattern.</p>
        <sec id="sec-4-4-1">
          <title>Remove composition link between Directory and File.</title>
          <p>Move the end of the recursive composition link from</p>
        </sec>
        <sec id="sec-4-4-2">
          <title>Directory to</title>
        </sec>
        <sec id="sec-4-4-3">
          <title>FileSystemElement.</title>
          <p>These inter-classes refactorings can be automatically deduced with an operation of
“differentiation” between the “alternative model” and the pattern structure.</p>
          <p>At the end of the activity, we can say that this model is improved, because we have
substituted a fragment (with “weak points”) with a pattern (with “strong points”).
This transformation may appear as non fundamental in the model, but at the code
level, the implications are substantial. Every hierarchy traversal methods are simpler
to implement, and there is less code to write. Moreover, in case of extensions, there is
no code modification of existing classes.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion and Perspectives</title>
      <p>The approach of reusing and extending an existing ontology corresponding to our
requirements was successfully applied. From the existing DPIO ontology, we have
plugged our concepts on “alternative models” and “strong points”. These concepts are
fundamental for tooling our Design Review Activity. Accurately, at the step named
validation of substitution propositions, we have simulated a dialog with a designer by
interrogating the extended base using queries. These queries will be generated
automatically by a template process. The integration of this work into a tool
dedicated to the design review activity is envisaged.</p>
      <p>Finally, we conclude with some perspectives:</p>
      <p>Take into consideration the relationships between patterns. For example,
the Decorator pattern can be applied to the Composite pattern structure.
Take into consideration the applicability of each pattern. For example,
referring to the GoF book, one of the applicability of the Composite
pattern is: you want clients to be able to ignore the difference between
compositions of objects and individual objects. We notice that this
sentence cannot be part of the pattern intention but can be considered as a
“strong point”.</p>
      <p>Optimize our knowledge base by sharing common “strong points”
between patterns. For example, the Composite, the Decorator and the
Bridge pattern have a same “strong point” concerning the maximal
factorization between specific classes.</p>
      <p>Use inference rules to find new concepts when adding new “alternative
models” or “strong points”. This could help us improving our knowledge
on patterns and particularly, our knowledge on the good practices on
object oriented architecture.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>We are grateful to Mrs. Nathalie Aussenac-Gilles for her precious advices during
this work.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Fowler</surname>
            <given-names>M.</given-names>
          </string-name>
          , “
          <article-title>Analysis patterns: reusable objects models”, Addison Wesley Longman Publishing Co, Inc</article-title>
          .,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Gamma</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helm</surname>
            <given-names>R.</given-names>
          </string-name>
          , Johnson R., Vlissides J., “Design Patterns:
          <article-title>Elements of Reusable Object-Oriented Software”</article-title>
          ,
          <source>Addison Wesley Professional</source>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Buschmann</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meunier</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rohnert</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sommerlad</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stal</surname>
            <given-names>M.</given-names>
          </string-name>
          , “
          <string-name>
            <surname>Pattern-Oriented Software</surname>
            <given-names>Architecture”</given-names>
          </string-name>
          , John Wiley &amp; Sons,
          <year>August 1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Dunsmore</surname>
            <given-names>A.P.</given-names>
          </string-name>
          , “
          <article-title>Comprehension and Visualisation of Object-Oriented code for Inspections”</article-title>
          ,
          <source>Technical Report</source>
          , EFoCS-33-
          <issue>98</issue>
          , Computer Science Department, University of Strathclyde,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bouhours</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leblanc</surname>
            <given-names>H..</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Percebois</surname>
            <given-names>C.</given-names>
          </string-name>
          , “
          <article-title>Alternative Models for a Design Review Activity”</article-title>
          .
          <source>In : Workshop on Quality in Modeling - ACM/IEEE International Conference on Model Driven Engineering Languages and Systems</source>
          , NASHVILLE,
          <string-name>
            <surname>TN</surname>
          </string-name>
          (USA),
          <volume>30</volume>
          /09/2007-05/10/2007,
          <string-name>
            <surname>Ludwig</surname>
            <given-names>KUZNIARZ</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jean-Louis</surname>
            <given-names>SOURROUILLE</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miroslaw</surname>
            <given-names>STARON</given-names>
          </string-name>
          <source>(Eds.)</source>
          , Springer, p.
          <fpage>65</fpage>
          -
          <lpage>79</lpage>
          ,
          <year>October 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kampffmeyer</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zschaler</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Engels</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Opdyke</surname>
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            <given-names>D. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weil</surname>
            <given-names>F.</given-names>
          </string-name>
          ,
          <article-title>“Finding the Pattern You Need: The Design Pattern Intent Ontology”</article-title>
          , in MoDELS, Springer,
          <year>2007</year>
          , volume
          <volume>4735</volume>
          , pages
          <fpage>211</fpage>
          -
          <lpage>225</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Guéhéneuc</surname>
            <given-names>Y. G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Albin-Amiot</surname>
          </string-name>
          . H.,
          <article-title>“Using Design Patterns and Constraints to Automate the Detection and Correction of Inter-Class Design Defects”</article-title>
          ,
          <source>in Proceedings conference TOOLS</source>
          ,
          <year>July 2001</year>
          , pages
          <fpage>296</fpage>
          -
          <lpage>305</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Chikofsky</surname>
            <given-names>E. J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cross</surname>
            <given-names>J. H.</given-names>
          </string-name>
          , “
          <article-title>Reverse engineering and design recovery: A taxonomy”</article-title>
          ,
          <source>in IEEE Software</source>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ), page
          <fpage>13</fpage>
          -17,
          <year>January 1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Bouhours</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leblanc</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Percebois</surname>
            <given-names>C.</given-names>
          </string-name>
          , “
          <article-title>Alternative Models for Structural Design Patterns”, research report</article-title>
          , IRIT/RR--2007-1
          <string-name>
            <surname>--</surname>
            <given-names>FR</given-names>
          </string-name>
          , IRIT,
          <year>December 2007</year>
          , http://www.irit.fr/recherches/DCL/MACAO/docs/AlternativeModelsForStructuralDesignPa tterns.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>D.L. McGuinness</surname>
            and
            <given-names>F. van Harmelen: OWL</given-names>
          </string-name>
          <string-name>
            <surname>Web Ontology Language Overview</surname>
          </string-name>
          ,
          <year>2004</year>
          .http://www.w3c.org/TR/owl-features/
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Huston</surname>
            <given-names>B.</given-names>
          </string-name>
          , “
          <article-title>The effects of design pattern application on metric scores”</article-title>
          ,
          <source>in Journal of Systems and Software</source>
          ,
          <volume>58</volume>
          (
          <issue>3</issue>
          ), Elsevier Science,
          <source>September</source>
          <volume>15</volume>
          ,
          <year>2001</year>
          , pages
          <fpage>261</fpage>
          -
          <lpage>269</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Dietrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Elgar</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>A formal description of design patterns using OWL</article-title>
          ,
          <source>in: Australian Software Engineering Conference (ASWEC'05)</source>
          , pp.
          <fpage>243</fpage>
          -
          <lpage>250</lpage>
          . IEEE Computer Society, Los Alamitos,
          <year>2005</year>
          . http://doi.ieeecomputersociety.
          <source>org/10</source>
          .1109/ASWEC.
          <year>2005</year>
          .6
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Tichy</surname>
            ,
            <given-names>W.F.</given-names>
          </string-name>
          :
          <article-title>A catalogue of general-purpose software design patterns</article-title>
          .
          <source>In: TOOLS'97. Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems</source>
          , IEEE Computer Society, Washington, DC, USA,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Noy</surname>
            ,
            <given-names>N.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          :
          <article-title>Ontology development 101: A guide to creating your first ontology</article-title>
          .
          <source>Technical Report KSL-01-05</source>
          , Knowledge Systems Laboratory, Stanford University, Stanford, CA,
          <year>94305</year>
          , USA, March
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <article-title>Protégé ontology editor and knowledge acquisition system (</article-title>
          <year>2006</year>
          ). http://protege.stanford.edu/
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Prud</surname>
          </string-name>
          <article-title>'hommeaux E., Seaborne: SPARQL Query Language for RDF</article-title>
          ,
          <year>January 2008</year>
          . http://www.w3.org/TR/rdf-sparql-query/
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>