<!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>Empirical comparison of two class model normalization techniques Obstacles and questions ?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>J.-R. Falleri</string-name>
          <email>falleri@lirmm.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>M. Huchard</string-name>
          <email>huchard@lirmm.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>C. Nebut</string-name>
          <email>nebut@lirmm.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LIRMM, CNRS and Universit ́e de Montpellier 2</institution>
          ,
          <addr-line>161, rue Ada, 34392 Montpellier cedex 5</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>21</fpage>
      <lpage>30</lpage>
      <abstract>
        <p>Designing accurate models is a true challenge for model driven engineering approach. We are currently exploring techniques derived from Formal Concept Analysis (FCA) theory for finding possible class, association, attribute or method generalizations in models with the aim of improving their abstraction level. Using four models, we compare classical FCA approach to Relational Concept Analysis (RCA) which allows to discover more subtle generalizations. Interestingly, expected combinatorial explosion does occur in all cases when using RCA, making it a feasible solution in a special range of models. The study highlights several difficulties, including the need for costly and subjective human intervention in assessing or filtering the results.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        We are involved for 11 years in several projects with an industrial partner, France
T´el´ecom R&amp;D, dealing with the general problem of assessing and improving the
quality of the abstraction level of a class model. By class model we refer to
UML structural class models, Ecore models as well as Java or C++ programs.
A small part of our work is dedicated to abstraction metrics [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] while the main
effort is put on developing theory [
        <xref ref-type="bibr" rid="ref2 ref3">2,3</xref>
        ], methodology [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ], algorithms [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and
software tools [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ] for improving abstraction level. We are currently involved in
a project which is concerned with Model Driven Engineering (MDE) approach in
two ways: we use the MDE spirit and technologies for developing a generic tool,
based on data input/output metamodels and on a configuration metamodel; the
purpose of the tool, which is improving abstraction level of models, deals with
the core material of MDE, namely models. Our approach is based on Formal
Concept Analysis (FCA) and a derived data analysis method called Relational
Concept Analysis (RCA). RCA helps discovering more accurate generalizations
in models, unattainable by FCA, but the counterpart is that many non relevant
generalizations can be found at the same time. In this paper, we study four
models, mining generalizations using classical FCA as well as RCA. Results show a
? France T´el´ecom R&amp;D has supported this work (CPRE 5326).
combinatorial explosion for RCA applied to the two Ecore models, but a
reasonable result size for Java models. In the last case, the gain in obtaining relevant,
more subtle, generalizations is not ruined by the necessity of mining these
interesting generalizations into a huge amount of artifacts. In Section 2, we describe
the research problem and the studied solutions. Section 3 presents the
empirical comparison which was conducted, as well as the difficulties encountered. We
conclude by a discussion in Section 4.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Clustering techniques for Class Model Normalization</title>
      <p>Problem description One effect of the lack of abstraction in class models is the
introduction of duplicated elements (e.g. attributes, parts of methods). This
occurs because of the iterative way of building software and its constant evolution.
Table 1 gives an insight of the number of duplicated attributes names (identifiers)
in four class models that will be used in the case study. UML2 and Docbook are
two metamodels designed with Ecore, Apache Common Collections (ACC) and
Minjava are written in Java. Those name duplications do not necessarily imply
redundant declarations since two attributes can have the same name and
different meanings. However, it gives an indication on the actual number of duplicated
attributes. More generally, we would like to improve the level of abstraction of
#Classes
#Attributes
#Attrib. name
duplications
class models: adding generalizations of operations factoring out common code
in their body, adding generalizations of attributes because of common or close
name and compatible types (with a common semantically close super-type) or
adding generalizations of associations in UML because their ends and part of
their description can be generalized. As a consequence of these generalizations,
new classes are introduced, and they often highlight new abstract concepts
useful in next steps of evolution, for reusing and easy maintenance. Among existing
proposals for finding generalizations, we study more precisely derived solutions
from Formal Concept Analysis field.</p>
      <p>
        Studied solutions Formal Concept Analysis [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is a clustering method that
classifies a set of entities described by attributes. More formally, let K = (E, A, R) be
a formal context. E is a set of entities, A is a set of attributes and R the own
relation, with R ⊆ E × A. A sample formal context is shown at the right of Figure 1.
      </p>
      <p>In this context, entities (UML classes) are the rows and attributes (UML
properties) are the columns. A concept is a set of entities that share several attributes.
It can be considered as an abstraction of these entities. More formally, a concept
is a pair (X, Y ) with X ⊆ E, Y ⊆ A and X = {e ∈ E|∀y ∈ Y, (e, y) ∈ R} is the
extent (covered entities), Y = {a ∈ A|∀x ∈ X, (x, a) ∈ R} is the intent (shared
attributes). These definitions ensure maximal factorization of attributes, and in
the context of class model, avoid property and method duplications.</p>
      <p>The concepts can be organized in a specialization lattice: a concept c1 is
lower than a concept c2 if the intent of c2 is included in the intent of c1. The
specialization lattice ensures, in the context of class model normalization, that
inheritance or specialization links respect property/method sets inclusion and
refinement. A sample lattice corresponding to the context of Figure 1 is shown
at the left of Figure 2 (intents are the upper part of the labels, extents are the
lower part).</p>
      <p>
        Three steps are required to apply formal concept analysis on a class model.
First, the class model is converted into a formal context (Figure 1), which
encodes the ownership (by contrast with [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] approach that mainly encodes access
in formal contexts). Second, a concept lattice is built, according to the formal
context. This concept lattice will contain concepts that represent the existing
entities (and thus the classes) of the formal context, and new concepts that will
lead to the creation of new classes. The last step (Figure 2-right) is to build a
class model according to the concept lattice. It is clear that the output class
model is normalized whereas the input class model was not. This normal form
is called attribute lattice factored form in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Formal Concept Analysis is powerful to distribute attributes in a class
hierarchy, but is unable to deal with relational descriptions. As an example, let
us consider the class model in the left of Figure 3. The same conversion and
application of FCA on this model, as previously described, would lead to the
creation of the model shown in the right of Figure 3. The resulting model, even
if it is in normal form, could still be improved with a new property with type
Person, introduced in the class Person, and redefined by the friends and colleagues
properties.</p>
      <p>
        Relational Concept Analysis [
        <xref ref-type="bibr" rid="ref2 ref3">2,3</xref>
        ] is an extension of FCA. It is designed to
take into account entities described by attributes and by inter-entity links. In
RCA, instead of having just one formal context, there is one formal context for
each kind of entities. Then these formal contexts are filled out with other contexts
that show relations between entities coming from one context and entities coming
from another context (which can be the same). More formally, a Relational
Context Family (RCF) is a pair F = (K, L) where K is a set of formal contexts
where Ki = (Ei, Ai, Ri) and L a set of relational contexts, Li = (Ea, Eb, Ri)
with Ri ⊆ Ea × Eb. Figure 5 shows the relational context family corresponding
to the class model at the left of Figure 3.
      </p>
      <p>An iterative lattice construction is applied on the relational context family.
A concept lattice is built for each formal context Ki of the Relational Context
Family. The discovered concepts of these lattices are injected as new entities in
the RCF, and new lattices are built. This iterative construction stops whenever
for each category of entities, the lattices built while performing two successive
steps are isomorphic. The set of lattices produced after each step of the process
is called a Concept Lattice Family (CLF). The class model in Figure 4 has been
produced from the contexts of Figure 5.
3</p>
    </sec>
    <sec id="sec-3">
      <title>An empirical comparison of Class Normalization techniques</title>
      <p>In this section, we develop our view on an empirical study we began to carry
out. We examine four facets: how a precise hypothesis we would like to check
is formulated, how the experiment is prepared, how it is conducted and finally
how results are evaluated.
3.1</p>
      <sec id="sec-3-1">
        <title>Formulating hypothesis</title>
        <p>As presented on small examples, FCA and RCA are very attractive techniques.
From a theoretical point of view, it can be shown that RCA finds relevant
generalizations (abstractions) that are not obtained by FCA. From a practical point
of view, RCA is intrinsically much more combinatorial than FCA and it seems
more difficult to fine-tune and control the huge set of produced generalizations.
When the initial model contains long paths of associations, some inferred
generalizations can have poor semantics and often mean something like (for a class)
”class whose instances are linked to instances that are linked to instances that
are linked .... to instances of” a given initial class of the model.</p>
        <p>The question we would like to answer is formulated as follows: ”Comparing
generalizations produced by RCA versus those produced by FCA, and
considering the effort needed for parameterizing and using results of FCA/RCA, is RCA
an interesting improvement in practice?”. This question is still too general, as
several parameterizations are possible for FCA and RCA, depending of what
we decide to encode in the tables (formal contexts for FCA and relational
context family for RCA). This can be considered as part of the preparation of the
experiment (reducing the hypothesis).
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Preparation of the experiment</title>
        <p>Preparing the experiment in our context involved choosing class models on which
we could test, choosing some procedures to make the data usable or more
relevant, choosing the part of models to consider because many elements can be
abstracted, and choosing the gauges for evaluating results.</p>
        <p>In previous experiments with industrial models from France Telecom R&amp;D,
data were confidential and it was impossible even for us to see them and we just
could access to partial informations: partial examples of built abstractions and
partial results. Now, after several years, these models are no more confidential
but people who designed the models are no more in charge of the projects and
have no time to devote to new experiments. The problem we face here is the
obsolescence of data.</p>
        <p>
          Choosing data To evaluate our class model normalization approach, we carried
out an experiment on four open source class models. Two of them, UML [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]
and Docbook [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], are design models written in Ecore. The two others, Apache
Commons Collections (ACC) [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] and Minjava [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] (author: J.R. Falleri), are
implementation models, obtained by reverse-engineering on Java code. UML
stands for the UML 2.0 meta-model. Docbook is a meta-model of the Docbook
language. Apache Commons Collections is a Java library that extends the Java
collections. Minjava is a Java reverse engineering tool that analyses Java
bytecode and produces an Ecore compliant Java model conforming to a simple Java
meta-model. Open source class models have the advantage of being available by
everyone. Designers may change or may be too busy to discuss with
experimentalists about the models, but at last, in industrial context this is often the same
situation.
        </p>
        <p>
          Choosing configurations We restricted the experiment, for a first study, to parts
of models composed of classes and attributes (properties in UML terms):
1. Basic FCA configuration (FCA1 ): it corresponds to the one in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], that
generates a class and a property context and analyses the attribute ownership
to discover super-classes, based on attribute names.
2. Enhanced FCA configuration (FCA2 ): same as the previous configuration,
but using information specific to the input language (e.g. static keyword in
Java, cardinality in Ecore) to avoid incorrect generalizations.
3. Enhanced Properties configuration (RCA): a RCA configuration that
generates a class and a property context and analyses the attribute ownership
and the attribute type to discover super-classes and redefined properties.
Choosing gauges To understand the results of the application of FCA (resp.
RCA) to our sample models, we use the produced lattice (resp. Concept
Lattices Family). We classify the concepts of these lattices into three disjoint
categories. ExistingConcepts: for elements that were already present in the
input class model; N ewConcepts: for elements created during the RCA process;
M ergeConcepts: for the merge of existing elements from the input model.
        </p>
        <p>The ExistingConcepts set is not really interesting since it contains only
concepts representing the input entities. The N ewConcepts set is very interesting.
It contains the concepts that may introduce new useful elements (abstractions
of existing ones) in the class model. The M ergeConcepts set is also interesting,
since it contains the elements from the source model that have been considered
similar and therefore have led to the creation of the new elements. To present
the result of our case study, we choose to use the two following quantities: N ,
the number of new elements i.e. |N ewConcepts|; M , the number of merges i.e.
|M ergeConcepts|.</p>
        <p>
          Of course, the previous quantities show how the different configurations of
the RCA process behave, but are unable to show the quality of these results.
Metrics are a way of assessing quality, but they are not so easy to use: based
on current inheritance metrics from [
          <xref ref-type="bibr" rid="ref15 ref16">15,16</xref>
          ], it has been shown in [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] that
inheritance metrics (associated with size metrics) are useful in measuring software
stability, but don’t really help in detecting concrete design problems.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], the case study uses a structural metric to analyze the result of FCA
application on real world class hierarchies. The chosen metric, called M2 is
derived of the M1 metric introduced in [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. This metric measures redundancy and
inheritance quality. Basically, M2 is a weighted sum of the number of attributes
and the number of inheritance links. To defavor the use of multiple inheritance,
for a given class the inheritance links count as double after the first one. The
lower metric M2 is, the better the class model is designed.
        </p>
        <p>Unfortunately, this metric can lead to wrong analysis of the class model. If
we imagine an output class model where a super-class has been found but is not
correct (for instance because of homographs), the M2 metric will still consider
this output model as better than the input one. Moreover, this metric is not
compatible with the use of redefined properties or methods. If we use the class
model shown in Figure 3, the metric M2 will be 24 for the input model, 22
for the output model without attribute redefinition and 26 for the output class
model with attribute redefinition. This clearly shows that this metric is unable to
correctly measure the quality of a class model design when attribute redefinition
is used.</p>
        <p>
          Results from FCA/RCA on class model could be assessed using recent
proposals and results on specialization quality measurement [
          <xref ref-type="bibr" rid="ref1 ref20">1,20</xref>
          ]. But in this first
experiment, four simple, specific metrics have been introduced based on human
analysis:. cn: number of concepts included in the NewConcepts set that are
considered as correct; a rate is obtained with cnr = cn/|N ewConcepts|; cm: number
of concepts included in the MergeConcepts set that are considered as correct; a
rate is obtained with cmr = cm/|M ergeConcepts|.
3.3
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Experimenting</title>
        <p>During Java model building, we faced to the presence of the standard Java API
library and had to decide whether looking for abstraction in the model combined
with the Java API, or inside the model only. When building our sample models,
we finally chose to restrict the extraction of Java entities to the program itself,
and blocked the extraction of the Java standard library (except base types).
So when a Java class introduces an attribute typed by a class included in the
standard Java API (for instance a LinkedList ), the attribute appears as not
typed in the resulting Java model. The output of this phase is the set of results,
in the expected form if no problems for measuring have been found. For our
experiments, results are presented in Figures 6, 7, 8, 9 and Tables 10, 11.
Quantitative results shown in Figures 6, 7, 8, 9 are not sufficient to conclude on
quality and relevancy of FCA/RCA, but they confirm that in some data (Java
software here: ACC, MinJava) feasibility of FCA and RCA is assessed,
combinatorial explosion does not occurs and results can be manually explored; in
other cases (Ecore models: Docbook, UML2) the number of abstractions created
by FCA remains reasonable, while abstractions created by RCA explodes, e.g.
1534 new classes are created by RCA for the UML2 metamodel using 246
initial classes and 615 initial properties. This last result is rather depressing and
highlights the need for adapted filters. Because we face to the problem of the
gold-seeker: looking for a nugget in a heap of uninteresting rocks.</p>
        <p>Results of cn and cm metrics on Minjava are shown in Tables 10 and 11.
Concept correction has been assessed by the designer of Minjava. These results
confirm what was expected from the quantitative results. FCA1 is the
configuration that produces most incorrect merges and RCA produces most incorrect
new concepts. On the other hand, new concepts produced by RCA could not
have been created using a FCA configuration and can contain useful concepts.
However it is necessary to find a way to analyse those new concepts in a
semiautomatic way, because they are too numerous to be analysed by hand.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Discussion</title>
      <p>We have shown several facets of an on-going empirical study about FCA and
RCA techniques. Now we would like to open the discussion, based on the lessons
learned during this first approach and the raised questions.</p>
      <p>Place of humans is crucial: to decide which data are used, to evaluate quality
of results. For three models we have only quantitative results which, at the end,
only give indications of the number of built abstractions. For the (small-size)
MinJava model, we have an evaluation which takes into account the judgment of
one of us who is the designer of MinJava. This allows us to give a precision
measure as it is commonly used in the information retrieval field: the fraction of the
relevant retrieved abstractions among the retrieved abstractions. This interesting
measure is difficult to compute for large models and when we do not have good
knowledge of their semantics. It is also a subjective question. A second measure
coming from information retrieval field is the recall measure which gives the
fraction of the relevant retrieved abstractions among the relevant abstractions.
This is even more difficult to obtain because finding all relevant abstractions in
a model needs many different designers to have a kind of consensus.</p>
      <p>
        Reproducibility of the study is always a challenge: in our case, it is ensured by
the use of open source software MinJava for Java models, Ecore tools for Ecore
models, the declarative configuration of which entities are taken into account, in
available files thanks to a Model Driven Engineering approach [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>Concerning evaluation, besides precision and recall measure, we could use
comparisons between the number of duplications (Fig. 1) and the number of
added abstractions. But, beyond these technical considerations, we are aware of
the fact that we have (partially) evaluated a first level of quality. A more difficult,
second level, of evaluation would consist of measuring: The effort achieved to
build the abstractions and (manually) filtering them; What we gained in terms
of software quality (readability, extensibility, maintainability).</p>
      <p>To conclude, what could help us in our quest:
– sharing problems: organizing challenges like other domains do as the KDD
Cup (http://www.sigkdd.org/kddcup/); This could guarantee relevancy of
problems themselves;
– sharing data: stable benchmarks, different versions of models; an example of
that in MDE domain is the zoo of metamodels (http://www.eclipse.org/gmt/
am3/zoos/atlantEcoreZoo/); simulation (randomly generated data) can also
be a solution in some special cases but is difficult to control; What is still
missing is a benchmark of models, because in our experiment we had to build
some of them by transforming source code, thus adding an interpretation
step;
– sharing methodologies: Using metrics, using human skills, defining filtering
techniques to restrict evaluation in relevant zones, etc.
– sharing results: repositories of results for given benchmarks to confront
experiences; making possible the publications of negative results to avoid bias
and begin again unuseful experiences.</p>
      <p>Acknowledgments The authors would like to thank the anonymous referees
for their suggestions and comments that helped to improve the paper.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Dao</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Libourel</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roume</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leblanc</surname>
          </string-name>
          , H.:
          <article-title>A New Approach to Factorization - Introducing Metrics</article-title>
          . In: IEEE METRICS. (
          <year>2002</year>
          )
          <fpage>227</fpage>
          -
          <lpage>236</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Dao</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hacene</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roume</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valtchev</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Improving Generalization Level in UML Models Iterative Cross Generalization in Practice</article-title>
          .
          <source>In: ICCS</source>
          . Volume
          <volume>3127</volume>
          of LNCS., Springer (
          <year>2004</year>
          )
          <fpage>346</fpage>
          -
          <lpage>360</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hacene</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roume</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valtchev</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Relational concept discovery in structured datasets</article-title>
          .
          <source>Ann. Math. Artif. Intell</source>
          .
          <volume>49</volume>
          (
          <issue>1-4</issue>
          ) (
          <year>2007</year>
          )
          <fpage>39</fpage>
          -
          <lpage>76</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Ar´evalo, G.,
          <string-name>
            <surname>Falleri</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Building abstractions in class models: Formal concept analysis in a model-driven approach</article-title>
          . In: MoDELS. Volume
          <volume>4199</volume>
          of LNCS., Springer (
          <year>2006</year>
          )
          <fpage>513</fpage>
          -
          <lpage>527</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Falleri</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , Ar´evalo, G.:
          <article-title>A Model Driven Engineering approach for making generic FCA/RCA tools</article-title>
          .
          <source>In: Proceedings of the Fifth International Conference on Concept Lattices and Their Applications (CLA'07)</source>
          . (
          <year>2007</year>
          )
          <fpage>229</fpage>
          -
          <lpage>252</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Ar´evalo, G.,
          <string-name>
            <surname>Berry</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perrot</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sigayret</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Performances of Galois Sub-hierarchy-building Algorithms</article-title>
          . In: ICFCA. Volume
          <volume>4390</volume>
          of LNCS., Springer (
          <year>2007</year>
          )
          <fpage>166</fpage>
          -
          <lpage>180</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Ganter</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wille</surname>
          </string-name>
          , R.:
          <source>Formal Concept Analysis: Mathematical Foundations</source>
          . Springer-Verlag New York, Inc. Secaucus, NJ, USA (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Snelting</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tip</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Understanding class hierarchies using concept analysis</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst</source>
          .
          <volume>22</volume>
          (
          <issue>3</issue>
          ) (
          <year>2000</year>
          )
          <fpage>540</fpage>
          -
          <lpage>582</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Falleri</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>A generic approach for class model normalization</article-title>
          .
          <source>In: Proc. of ASE'08</source>
          , short paper. (to appear)
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Godin</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valtchev</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Formal concept analysis-based class hierarchy design in object-oriented software development</article-title>
          .
          <source>In: Formal Concept Analysis. Volume 3626 of LNCS</source>
          ., Springer (
          <year>2005</year>
          )
          <fpage>304</fpage>
          -
          <lpage>323</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Eclipse</surname>
          </string-name>
          <article-title>: UML2 EMF Plugin</article-title>
          . http://www.eclipse.org/modeling/mdt/?project=uml2 (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Triskell:
          <article-title>Docbook metamodel</article-title>
          . http://www.kermeta.org (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. : Apache Foundation:
          <article-title>Apache Commons Collections</article-title>
          . http: //commons.apache.org/ collections (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Falleri</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          : Minjava. http://code.google.com/p/minjava/ (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Chidamber</surname>
            ,
            <given-names>S.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kemerer</surname>
            ,
            <given-names>C.F.</given-names>
          </string-name>
          :
          <article-title>A Metrics Suite for Object Oriented Design</article-title>
          .
          <source>IEEE Trans. Software Eng</source>
          .
          <volume>20</volume>
          (
          <issue>6</issue>
          ) (
          <year>1994</year>
          )
          <fpage>476</fpage>
          -
          <lpage>493</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Lorenz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kidd</surname>
          </string-name>
          , J.:
          <string-name>
            <surname>Object-Oriented Software Metrics</surname>
            :
            <given-names>A Practical</given-names>
          </string-name>
          <string-name>
            <surname>Guide. Prentice-Hall</surname>
          </string-name>
          (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Demeyer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ducasse</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : Metrics, Do They Really Help? In: LMO, Herm`es (
          <year>1999</year>
          )
          <fpage>69</fpage>
          -
          <lpage>82</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Godin</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mili</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mineau</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Missaoui</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arfi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chau</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Design of class hierarchies based on concept,(Galois) lattices</article-title>
          .
          <source>Theory and Practice of Object Systems</source>
          <volume>4</volume>
          (
          <issue>2</issue>
          ) (
          <year>1998</year>
          )
          <fpage>117</fpage>
          -
          <lpage>134</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Lieberherr</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bergstein</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Silva-Lepe</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>From objects to classes: algorithms for optimal object-orienteddesign</article-title>
          .
          <source>Software Engineering Journal</source>
          <volume>6</volume>
          (
          <issue>4</issue>
          ) (
          <year>1991</year>
          )
          <fpage>205</fpage>
          -
          <lpage>228</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Breesam</surname>
            ,
            <given-names>K.M.</given-names>
          </string-name>
          :
          <article-title>Metrics for Object-Oriented Design Focusing on Class Inheritance Metrics</article-title>
          . In: DepCoS-RELCOMEX, IEEE Computer Society (
          <year>2007</year>
          )
          <fpage>231</fpage>
          -
          <lpage>237</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>