<!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>Knowledge Capitalization in a Component-Based Software Factory: a Semantic Viewpoint</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Francisco-Edgar Castillo-Barrera</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carolina M´edina-Ram´ırez</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hector A. Duran-Limon</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Electrical Engineering, Universidad Auto ́noma Metropolitana</institution>
          ,
          <addr-line>Mexico City, M ́exico</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universidad de Guadalajara</institution>
          ,
          <addr-line>Zapopan, Jalisco, M ́exico</addr-line>
        </aff>
      </contrib-group>
      <fpage>105</fpage>
      <lpage>114</lpage>
      <abstract>
        <p>Recently, Ontologies have boomed as artifacts to represent domain knowledge and as an important component in specific applications helping decision-making. In software engineering domain, ontologies have been employed to manage software components (classifying, retrieving, matching et all), and this approach has been deemed as an effective way for capturing and using the knowledge of the software components on the retrieving system and matching process, before and after it. This knowledge will be used by new developers gaining time in the development of new projects and in consequence it implies a reducing costs for training. In this paper, we describe a software component ontology for knowledge capitalization. We use an example and a prototype (called Chichen Itza) to show the feasibility of our approach.</p>
      </abstract>
      <kwd-group>
        <kwd>Knowledge Capitalization</kwd>
        <kwd>Ontology</kwd>
        <kwd>Software Components</kwd>
        <kwd>Semantic Technique</kwd>
        <kwd>CBSE</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Personnel rotation or departure from the project usually have a big impact in
the time for finishing a project. The time and money required for training new
personnel to acquire experience imply to increase the project costs. The new
Knowledge obtained for each part of the software component assembled, can be
stored in an ontology as artifact. This knowledge can be used by new developers
or new members of the project to reduce time. In consequence, the company
decreases costs. The software component knowledge (company, author, functional
and no-functional, requirements, etc) can be described using the concepts
belonging to the ontology. This description can be stored in a XML file and asociated
to the binary file of the software component. The Ontology written in OWL-DL
can be exchanged among different systems and component-based applications.
Besides, the input domain model is classified and saved using a Meta-Ontology
of domains called MetaDomOnto. When a new input domain model will be
introduce in the system, the developer can check if there is a related model or
the same model in the database. In both of these cases, he can found terms or
atributes in his vocabulary domain and he can use it in his project. This allows
to the company to reduce the costs of the project. Besides, using a reasoner for
checking the consistency of the input domain model, brings an economic added
value to the company by means of an automatic way for verifying its model.
This action is made during the Architectural Design [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] in a high abstraction
level. This action prevent to the company to buy software components that do
not match.
      </p>
      <p>The rest of the paper is structured as follows. In Section 2 we give the state
of the art of capitalization on software component. In Section 3 we briefly
explain Component-Based Software Engineering and component matching for
assembling purposes. Section 4 describes our semantic approach for Knowledge
Capitalization in a Component-Based Software Factory. In Section 5 we show
the feasibility of our technique by describing an example and a prototype called
Chichen Itza. Finally, in Section 6 we conclude our work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>State of the art</title>
      <p>
        The ontologies based on software component and matching is mostly represented
by work of Claus Pahl [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] who wrote an ontology for software component
matching. Pahl’s ontology is oriented for Web Services, our ontology is made for a
software factory framework which support Pipe-and-Filter architecture styles.
Other researchers such as Yutao, Keqing, Liu and Jingbai Tian [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] have
developed ontologies based on a standard (No.19763), which are focus to use a
GridOriented Plataform. The most closely related work was made by Nkambou [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In
this work, the author describes a CBR-Based tool (called CIAO-SI) dedicated
to the capitalization of development experience/knowledge within a software
development company, using tasks ontologies. Another work about Knowledge
Capitalization was made by Rodriguez-Rocha et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Her work is mainly focus
on the Knowledge Capitalization in the Automotive Industry. She developed an
ontology based on the ISO/TS 16949 Standard.
3
      </p>
      <p>
        Component-Based Software Engineering and Software
Components
Crnkovic and Larsson [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] define Component-Based Software Engineering (CBSE)
as an approach to software development that relies on software reuse. The aim of
the CBSE is the rapid assembly of complex software systems using pre-fabricated
software components. CBSE combines elements of software architecture, software
verification, configuration and deployment. CBSE is a process that emphasizes
the Design and Construction of systems using reusable software components.
Reuse is a primary concept to software development, as it reduces development
effort, time and cost. We want to increase the reuse and to decrease the cost
with our proposal. A software component is an existing piece of software which
can be deployed independently and it is subject to composition by third party.
In this work, we consider the following definitions: A software component is a
unit of composition with contractually specified interfaces and explicit context
dependencies [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and A component is a reusable unit of deployment and
composition that is accessed through an interface [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Our semantic viewpoint of a
software component is that it is a software unit consisting of a name, an interface
and code, that can be exploted and reused in order to Knowledge capitalization
purposes.
4
      </p>
      <p>Knowledge Capitalization in a CBSF: a Semantic
Approach
4.1</p>
      <sec id="sec-2-1">
        <title>Semantic Matching and Verification Process</title>
        <p>We define matching among components when all contracts among them have
satisfied the post-conditions and pre-conditions which gives the functionality
expected based on requirements establish in their contracts. Semantic verification
is the process which uses an Ontology and Semantic Technologies (SPARQL
queries) to guarantee compliance with contractual agreements. The semantics
of an operation are described with a contract. An important aspect of
Components to consider during the matchig is Identity and State. A component may
have an identity and state, represented by objects. Component connection and
interaction are based on plugging components When a client requests services
of a provider glue code is needed.
4.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>An Ontology for Software Components</title>
        <p>
          An Ontology [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ][
          <xref ref-type="bibr" rid="ref9">9</xref>
          ][
          <xref ref-type="bibr" rid="ref10">10</xref>
          ][
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] is defined by Gruber as a specification of a
conceptualization [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. In other words, an Ontology defines the terms used to describe
and represent an area of knowledge, also is the model (set of concepts) for the
meaning of those terms, thus defines the vocabulary and the meaning of that
vocabulary, are used by people and applications that need to share domain
information. An Ontology is a formal representation of knowledge which allows us to
obtain information by means of the checking of its consistency, using Reasoners
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. A Software Component Ontology was created for capturing and verifying
information about the input domain models during the Architectural Design [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
This ontology consisted of 50 classes, 19 Object Properties, 15 Data Properties.
The notation n3 is used by the ontology, because is a valid RDFS and OWL-DL
notation. The Ontology use RDFS and OWL-DL language [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. They are
fundamentally based on descriptive logic languages. The Prot´eg´e editor [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], was
used to visualise the ontology and its RDF graph. OWL-DL and Prot´eg´e are
the current recommendation of the W3C [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. The OWL-DL ontologies have the
ability of:
a) Automatic reasoning a) To be distributed through many systems
b) Scalability to the needs of the Web
c) Compatibility with web standards for accessibility and internationalization
d) Opening and extensibility
We proposed an ontology called Kernel Ontology which has the minimum
concepts contained in the software components ontologies analyzed for this work.
Kernel Ontology is built by means of classes and relations among concepts. These
concepts and classes correspond to the specification of an abstract data type and
a set of methods that operate on that abstract data type. Each method is
specified by an interface, type declarations, a pre-condition, and post-condition [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
In addition, there is an explicit class about Contracts and two types of
interfaces (provided and required ). The interface of a method describes the syntactic
specification of the method. The typing information describes the types of input
and output or both parameters and internal (local) variables. All of the above is
represented in our ontology (class Type, class Parameter, etc.). The most
important part to consider in our ontology are the Conditions (Pre and Post). Because
we have to verify that those conditions are met. The Pre-condition describes the
condition of the variables prior to the execution of the method whose behavior
is described by the Post-condition. The Ontology is showed in Fig.2.
4.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Using The Pellet Reasoner</title>
        <p>
          Pellet [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] is an open-source Java based OWL-DL reasoner. In our verification
process we use Pellet for checking the consistency of the ontology and classify
the taxonomy. Pellet gives explanation when an inconsistency was detected.
Restrictions can be expressed into an ontology. For instance, the following code
verify that one component has at least 1 interface.
:Component rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasInterface ;
owl:cardinality 1 ].
        </p>
        <p>An interesting property of the ontology used in this work is a blank node. It is a
node in an RDF graph representing a resource without URI or literal. We used
it as variable. If we put the same blank node, the result for this node has to be
the same. In our example below, :c1, :c2, :c12, :i1 and :i2 are blank nodes
(variables). The example shows How to know about the contract between two
components and their interfaces.
_:c1 :hasContract _:c12 .
_:c2 :hasContract _:c12 .
_:c1 :hasInterface _:i1 .
_:c2 :hasInterface _:i2 .</p>
        <p>A difference with Logic Programming Paradigm, we can check types using
ontologies. Besides, in the matching process subtypes can be accepted as
parameters. See code below.
:Int a owl:Class .
:ShortInt rdfs:subClassOf :Int .</p>
        <p>
          The disjointWith property allow to verify restrictions in the input model. For
example a component made in .Net can not run in the Linux operating system.
Defining disjoint properties is also possible [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ].
:Linux rdfs:subClassOf :OperatingSystem ;
        </p>
        <p>owl:disjointWith :Windows .</p>
        <p>All properties defined in the Ontology and blank nodes are checked by the
reasoner (Pellet) during the consistency verification process.
4.4</p>
      </sec>
      <sec id="sec-2-4">
        <title>Complementing the Verification with Semantic Queries</title>
        <p>
          For more complex checking we can apply anothers actions such as: production
rules [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. We decided to explore semantic queries in SPARQL. The second step
after the reasoner have checked the ontology consistency is to apply a SPARQL
query. We decide to define a specific query which evaluates and verifies certain
information on the input model. Of course, all this process is transparent, for
the user. We have used Jena API [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] and Java language [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] for programming
that and NetBeans IDE 7.0 [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. SPARQL is the version of SQL for ontologies.
But, we can use variables in the queries, constraints, filtering information, logic
operators, if statements and more. In Fig.3 we explain each line by means of
questions. Lines are linking by variables which begin with a question mark. The
same name of variable imply the same value to look for in the query. The Jena
API allowed us to use SPARQL queries in our framework programmed in Java
language.
This process, within the Chichen Itza framework, is done at very high level, using
the ontologies information between one component and the second component to
be matched. Each component is represented in a graphic way. That information
is evaluated and after the system decides if is possible matching or not the
components. In Addition, we capture the new knowledge in this new component,
called ”Capsule”. In our framework, a Capsule has a graphical representation
which is stored as a new component with its own characteristics.
5
        </p>
        <p>ATM verification using Chichen Itza Component-Based
Framework
5.1</p>
      </sec>
      <sec id="sec-2-5">
        <title>Chichen Itza: a Component-Based Software Factory Framework</title>
        <p>
          Chichen Itza is a software factory framework which focuses on maximising the
level of reuse in two dimensions: architectural design and software components.
A special focus is paid on pipe-and-filter architecture styles. The aim of this
framework is allow to develop component-based applications from scratch using
a friendly interface and a graphical arquitectural description language. Chichen
Itza is a component-based software factory framework which focuses on
maximising the level of reuse in two dimensions: architecture design and software
components. Our main contributions are twofold. First, we define a framework
that allows for reusing a single component-based architecture design for
different component platforms. Second, our approach supports the automation of
component composition in multiple component platforms. A prototype of the
framework involves a visual editor of software architectures. See Fig.4. The tool
makes use of the library Flamingo and the Ribbon component [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] implemented
Component Interfaces
Methods
ATM IATM
        </p>
        <p>Printer IPrinter
UserConsole IUserConsole</p>
        <p>Bank IBank
Card ICard
createSession(), locateBank(int CardNo, string Password)</p>
        <p>printReceipt()
readPIN(int CardNo, string Password), setMenu(), setMessages()
Consortium(), Withdrawal(int CardNo, string Password, int Amount)</p>
        <p>readCard(), ejectCard()
in Java. The process to verify a matching among components is very easy for the
user. He introduces his model into the framework by means of a file or by the
menus. Chichen Itza transforms his vocabulary from a text file into an ontology
instances and its relations. The instances are created from classes defined in the
Software Component Ontology. See Fig.1.</p>
        <p>
          In our approach we used an Automated Teller Machine (ATM) example.
ATM is a machine at a bank branch or other location which enables customers
to perform basic banking activities without humans (checking one’s balance,
withdrawing or transferring funds) even when the bank is closed. The component
model used for describe the ATM system was made in Chichen Itza Framework
using its graphical interface of software components, and is shown in figure 4:
One example in the design phase using ATM example [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. The input model
is created by the user who selects classes and relation among concepts and he
create instances. In this case the input model only has 5 software components
and we can create its instances and relations among them using the Chichen
Itza’s menus. In Table 1 Methods, Interfaces and Components are shown.
6
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Conclusions</title>
      <p>Knowledge Capitalization in a Component-Based Software Factory (CBSF) is
possible using ontologies in every part where components are used. Ontologies
are usually expressed in a logic-based language (Description-Logic), enabling
detailed, sound, meaningful distinctions to be made among the classes,
properties and relations. Ontologies give more expressive meaning, but maintains
computability. The use of an ontology permits us to search an specific
component information using intelligent techniques like production rules in comparison
with a classic SQL query. The queries on the ontology are simple and easy to do
for all users whereas a classic SQL query in a database requires computational
knowledge. In this paper we have presented and described an ontology for
Classifying, Searching and Matching Software Components in a Component-Based
Software Factory Framework.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Eden</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kazman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Architecture, design, implementation</article-title>
          .
          <source>In: proceedings of the 25th International Conference on Software Engineering</source>
          , IEEE Computer Society (
          <year>2003</year>
          )
          <fpage>149</fpage>
          -
          <lpage>159</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Pahl</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>An ontology for software component matching</article-title>
          . Volume
          <volume>9</volume>
          . SpringerVerlag, Berlin, Heidelberg (
          <year>2007</year>
          )
          <fpage>169</fpage>
          -
          <lpage>178</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ma</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>He</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tian</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A grid-oriented platform for software component repository based on domain ontology. Volume 0</article-title>
          . IEEE Computer Society, Los Alamitos, CA, USA (
          <year>2007</year>
          )
          <fpage>628</fpage>
          -
          <lpage>635</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Nkambou</surname>
          </string-name>
          , R.:
          <article-title>Capitalizing software development skills using cbr: the ciao-si system</article-title>
          .
          <source>In: IEA/AIE'2004: Proceedings of the 17th international conference on Innovations in applied artificial intelligence</source>
          . Springer Springer Verlag Inc (
          <year>2004</year>
          )
          <fpage>483</fpage>
          -
          <lpage>491</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Rodriguez-Rocha</surname>
            ,
            <given-names>B.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castillo-Barrera</surname>
            ,
            <given-names>F.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lopez-Padilla</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>Knowledge capitalization in the automotive industry using an ontology based on the iso/ts 16949 standard</article-title>
          . Volume
          <volume>0</volume>
          . IEEE Computer Society, Los Alamitos, CA, USA (sep.
          <year>2009</year>
          )
          <fpage>100</fpage>
          -
          <lpage>106</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Crnkovic</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Larsson</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Building reliable component-based software systems</article-title>
          .
          <source>Artech House computing library, Norwood</source>
          , MA (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Szyperski</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gruntz</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Component software: Beyond object-oriented programming</article-title>
          .
          <source>Addison-Wesley</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Gruber</surname>
          </string-name>
          , T.:
          <article-title>Toward principles for the design of ontologies used for knowledge sharing</article-title>
          . (
          <year>1995</year>
          )
          <fpage>907</fpage>
          -
          <lpage>928</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Berners-Lee T.Hendler</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>a.L.O.:</surname>
          </string-name>
          <article-title>The semantic web</article-title>
          . (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Fox</surname>
            ,
            <given-names>M.S.:</given-names>
          </string-name>
          <article-title>The tove project towards a common-sense model of the enterprise</article-title>
          .
          <source>In: IEA/AIE '92: Proceedings of the 5th international conference on Industrial and engineering applications of artificial intelligence and expert systems. SpringerVerlag</source>
          , London, UK (
          <year>1992</year>
          )
          <fpage>25</fpage>
          -
          <lpage>34</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Staab</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Studer</surname>
            <given-names>R</given-names>
          </string-name>
          .,
          <string-name>
            <given-names>S.H.</given-names>
            ,
            <surname>Sure</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          :
          <article-title>Knowledge processes and ontologies</article-title>
          . Volume
          <volume>16</volume>
          .
          <article-title>(Jan-Feb</article-title>
          <year>2001</year>
          )
          <fpage>26</fpage>
          -
          <lpage>34</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sirin</surname>
          </string-name>
          , E.:
          <article-title>Pellet: An owl dl reasoner</article-title>
          .
          <source>In: In Proceedings of the International Workshop on Description Logics</source>
          . (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. W3C:
          <article-title>Owl web ontology language (</article-title>
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Eriksson</surname>
          </string-name>
          , H.:
          <article-title>Document management using protege</article-title>
          .
          <source>In: 10th Intl. Protege Conference</source>
          , Budapest,Hungary (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. W3C: http://www.w3.org/consortium/. (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Antoniou</given-names>
            <surname>Grigoris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.E.</given-names>
            ,
            <surname>Frank</surname>
          </string-name>
          ,
          <string-name>
            <surname>V.H.</surname>
          </string-name>
          :
          <article-title>Introduction to semantic web ontology languages</article-title>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>del R</surname>
          </string-name>
          <article-title>´ıo,</article-title>
          <string-name>
            <given-names>A.C.</given-names>
            ,
            <surname>Gayo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.E.L.</given-names>
            ,
            <surname>Lovelle</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.M.C.</surname>
          </string-name>
          :
          <article-title>A model for integrating knowledge into component-based software development</article-title>
          .
          <source>KM - SOCO</source>
          (
          <year>2001</year>
          )
          <fpage>26</fpage>
          -
          <lpage>29</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Jena:
          <article-title>Jena a semantic web framework for java</article-title>
          . (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Clarke</surname>
            ,
            <given-names>P.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babich</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>King</surname>
            ,
            <given-names>T.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kibria</surname>
            ,
            <given-names>B.M.G.</given-names>
          </string-name>
          :
          <article-title>Model checking and abstraction</article-title>
          .
          <source>ACM Transactions on Programming Languages and Systems</source>
          <volume>16</volume>
          (
          <year>1994</year>
          )
          <fpage>1512</fpage>
          -
          <lpage>1542</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Armstrong</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ball</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bodoff</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carson</surname>
            ,
            <given-names>D.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Evans</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ganfield</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Green</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haase</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jendrock</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , Jullion-ceccarelli, J.,
          <string-name>
            <surname>Wielenga</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The j2ee TM(tm) 1.4 tutorial for netbeans TM(tm) ide 4.1 for sun java system application server platform edition 8.1</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Java</surname>
          </string-name>
          .net: Flamingo. http://java.net/projects/flamingo/ (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22. kiu Lau,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <surname>Z.</surname>
          </string-name>
          :
          <article-title>A survey of software component models</article-title>
          .
          <source>Technical report, in Software Engineering and Advanced Applications</source>
          .
          <year>2005</year>
          . 31 st EUROMICRO Conference: IEEE Computer Socity (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>