<!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>
      <journal-title-group>
        <journal-title>May</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Mining Software Repositories to Support OSS Developers: A Recommender Systems Approach</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Phuong T. Nguyen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juri Di Rocco</string-name>
          <email>C@N</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Davide Di Ruscio</string-name>
          <email>davide.dirusciog@univaq.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Information Engineering</institution>
          ,
          <addr-line>Computer Science and Mathematics Universita` degli Studi dell'Aquila Via Vetoio 2 - 67100 L'Aquila</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <volume>2</volume>
      <fpage>8</fpage>
      <lpage>30</lpage>
      <abstract>
        <p>To facilitate the development activities, software developers frequently look up external sources for related information. Consulting data available at open source software (OSS) repositories can be considered as their daily routine. Nonetheless, the heterogeneity of resources and their corresponding dependencies are the main obstacles to the effective mining and exploitation of the data. Given the context, the manual search for every single resource to find the most suitable ones is a daunting and inefficient task. Thus, equipping developers with techniques and tools to accelerate the search process as well as to improve the search results will help them enhance the work efficiency. Within the scope of the EU funded CROSSMINER project, advanced techniques and tools are being conceived for providing open software developers with innovative features aiming at obtaining improvements in terms of development effort, cost savings, developer productivity, etc. To this end, cutting-edge technologies are applied, such as information retrieval and recommender systems to solve the problem of mining the rich metadata available at OSS repositories to support software developers. In this paper, we present the main research problems as well the proposed approach together with some preliminary results.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>During the development phase, software programmers need to tackle various issues,
such as mastering different programming languages, reusing source code, or choosing
suitable external third-party libraries. By exploiting existing well-defined artifacts from
open source software (OSS) repositories, such as code snippets and API usage patterns,
one can avoid coding from scratch. Nevertheless, as illustrated in Fig. 1, the available
information is huge and heterogeneous as it comes from different sources, e.g. source
code, Q&amp;A systems, or API documentations. Given the circumstances, even
experienced and skilled developers might face difficulties in searching for suitable resources.</p>
      <p>
        Over the last years, considerable effort has been devoted to data mining and
knowledge inference techniques to provide automated assistance to developers in navigating
large information spaces and giving recommendations [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], for instance, API
documentation recommendation [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], mining Q&amp;A systems [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], API usages recommendation
[
        <xref ref-type="bibr" rid="ref17 ref30">17,30</xref>
        ], and third-party library recommendation [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] just to mention a few.
      </p>
      <p>
        CROSSMINER1 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is a research Source code
project funded by the EU Horizon 2020 Q&amp;A systems
Research and Innovation Programme
and aims at extending the EU OSS- Bug Reports
METER FP7 project [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] by
supporting the development of complex soft- API
ware systems by facilitating the com- Documentation
ipnagrisoopnenansdouardcoeptsioofntwoafrealcroeamdpyoneexnistst-. Developer Tutorials
To this end, CROSSMINER is
conceiving techniques for knowledge extraction Configuration
from large open source software reposi- Management Systems
tories. Being equipped with cutting-edge Fig. 1. Developers are overwhelmed by huge and
technologies, developers can make use of miscellaneous sources of supporting materials
existing similar modules, instead of
reimplementing them. Thus, many traditional
development tasks become semi- or fully- automated by means of meaningful
recommendations. Thus, the job of developers is expected to be more effective and efficient.
      </p>
      <p>The work in CROSSMINER differs from other existing studies in the sense that
it brings in a completely new paradigm for the representation of OSS artifacts so as
to pave the way for various computations. Further than extending state-of-the-art
approaches in the field of automated analysis and measurement of open source
software, we develop advanced techniques to investigate relationships among different OSS
projects and properly organize them in a dedicated knowledge base. The knowledge
base fosters the deployment of recommender systems to present users with interesting
items previously unknown to them.</p>
      <p>In this paper, we describe our ongoing work with the focus on the mining of cross
relationships among OSS projects to provide developers with helpful
recommendations. To this end, the paper is organized as follows: an overview of the CROSSMINER
project and of the envisioned recommendations is given in Section 2. Section 3 presents
the main constituting elements of the proposed approach to realize such
recommendations. Section 4 recalls popular metrics used for evaluating recommendation outcomes.
Section 5 introduces some preliminary results and finally, Sect. 6 concludes the paper.
2</p>
      <p>Overview of the envisioned CROSSMINER recommendations
CROSSMINER aims at supporting software developers by means of an advanced
Eclipse-based IDE providing intelligent recommendations that go far beyond the current
“code completion-oriented” practice. To this end, data retrieved from different sources
has to be collected and processed so to properly feed the recommendation component.
In particular, as shown in Fig. 2, four high-level modules compose the CROSSMINER
platform.
1 https://www.crossminer.org</p>
      <p>The Data
Preprocessing module contains tools Real-time recommendations that serve productivity and quality increase
trhepatoseixtotrraicets.mDeatatadactaanfbroemofOdSifS- Developer DevIeDloEper recomqmueenrydations KnowledgeBase StDoaratage
ferent types, such as: source
cporodjee,ct cornefilagtuiornatsihoinp,s. orNactruorsasl Data Preprocessing Capturing Context RecoPmromdeuncdinagtions RecoPmremseenntdinagtions
language processing (NLP) tools
are also deployed to analyze KnowledgeBase
tsdoieovnpesol.opTpuehlraetecfooalrluemkcntseodwadlneaddtagdiesisubcsauessde- CSoonuMMMfricgiieiunnnreeCairrnotidgoenandAnloaolkyuspCi/ssrtoATosMornesNoaipLnllyPrseosrijsect mine SCooudrcee OlcaNShnSaagtnfuunoareraglgleses ConSficgruiprtastion
which serves as the core for
the mining functionalities. By Fig. 2. A high-level view of CROSSMINER
capturing developers’ activities
(see Capturing Context),
the IDE is able to generate and display recommendations (see the module
Producing Recommendations and Presenting Recommendations).</p>
      <p>
        To provide developers with useful support, we concentrate on working with the use
cases depicted in Fig. 3. The knowledge base takes the developer context as input and
returns recommendations as discussed below:
– GetProjectAlternatives: we implement novel clustering and similarity mechanisms
being able to suggest OSS projects that can be alternatively used instead of OSS
components, which have been previously selected and integrated in the software
being developed. Based on designated similarity functions, we are able to detect
projects that are similar because of: Provided APIs
(GetProjectAlternativesWithSimilarAPIs) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; Size (GetProjectAlternativesWithSimilarSize); Application
domain (GetProjectAlternativesWithSimilarTopics); and Comparable quality
(GetProjectAlternativesWithSimilarQuality);
– GetProjectsByUsedComponents: depending on the used components, the
knowledge base is able to identify and suggest further components that, according to what
other developers have done in the past, should be also included in the system being
implemented. Two prominent examples are recommendation of third-party libraries
[
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] and code snippets [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ];
– GetAPIUsageSupport: The knowledge base provides developers with
recommendations on how to use a given API and to manage the migration of the system in
case of deprecated methods. This use case consists of:
      </p>
      <p>
        GetAPIUsageDiscussions: given an API the developer has already included,
it is possible to retrieve messages from communication channels (like forums,
bug reports, and Stack Overflow posts) that are useful for understanding how
to properly use it [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ];
GetAPIUsagePatterns: in case of deprecated API methods, the knowledge base
recommends code examples that can be considered as a reference for migrating
the system and to make it work with the new version of the used API [
        <xref ref-type="bibr" rid="ref20 ref30">20,30</xref>
        ].
– GetRecommendedDeps: starting from a given configuration and by considering
similar projects developed by other developers, the knowledge base recommends
other additional third-party libraries that should be further included [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ];
– GetRecommendedDocs: by considering the documentation examined by other
developers that used similar APIs and frameworks, the knowledge base suggests
additional sources of information, e.g. technical documents, tutorials, etc., that are
useful for solving the development problem at hand [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ];
– GetAPIBreakingUpdates: the knowledge base implements the notion of API
evolution with the aim of identifying backward compatibility problems affecting source
code that uses evolving APIs;
– GetRequiredChanges: given a changed API and a project using it, the knowledge
base provides an overview of the impact that the changes have on the depending
project. Communication channel items discussing about such API changes will be
also shown.
      </p>
      <p>
        It is worth noting that the recommendations previously summarized have been
identified during the first 6 months of the CROSSMINER project to satisfy the requirements
of the industrial partners that work in the domains of IoT, multi-sector IT services, API
co-evolution, software analytics, software quality assurance, and OSS forges [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Proposed recommendation approach</title>
      <p>
        Our approach is built based on the notation of recommender systems [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. In the context
of mining software repositories, those are systems that can provide recommendations to
developers with regards to their development context. For recommender systems in
general, the ability to measure the similarity between items plays an important role in
obtaining relevant recommendations [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Intuitively, for software mining recommender
systems, the measurement of similarities between artifacts, e.g. projects, dependencies,
code snippets, or even developers shall also be a critical factor. Nevertheless, the
computation of similarities between software systems/open source projects in particular has
been identified as a thorny issue [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Furthermore, considering the miscellaneousness
of artifacts in OSS repositories, similarity computation becomes more complicated as
many artifacts and several cross relationships prevail.
      </p>
      <p>OSS forges
mine</p>
      <p>Similarity computator
feed /
use</p>
      <p>Knowledge</p>
      <p>base
Recommender systems</p>
      <p>
        OSS ecosystem representer
To enable both the representation of different OSS projects and the calculation of their
similarity, a graph-based model has been conceived [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. We consider the community
of developers together with OSS projects and other artifacts as an ecosystem. Graphs
are then used for representing different types of relationships in the OSS ecosystem.
      </p>
      <p>
        The adoption of the graph-based representation allows for the transformation of the
relationships among various artifacts in the OSS ecosystem into a mathematically
computable format. The following relationships are used to construct graphs representing
the OSS ecosystem and eventually to calculate similarity using graph algorithms.
– includes Dependency Project: according to [
        <xref ref-type="bibr" rid="ref15 ref26">15,26</xref>
        ], the similarity between two
projects relies on the dependencies they have in common because they aim at
implementing similar functionalities.
– develops Developer Project: we assume that there exists a certain level of
similarity between two projects if they are built by same developers [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ];
– stars User Project: this relationship models the star event to represent GitHub
projects that a given user has starred.
– develops User Project: this relationship is used to represent the projects that a
given user contributes in terms of source code development;
– implements File File: it depicts a specific relation that can occur between the
source code given in two different files, e.g. a class specified in one file
implementing an interface given in another file;
– hasSourceCode Project File: it represents the source files in an OSS project.
3.2 Similarity computator
Nodes, links, and the mutual relationships among them allow for the computation of
similarity [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. To the best of our knowledge, there are several techniques for computing
develops
hsoreoe
d
cC
aSu
includes
hasSourceCode
stars
      </p>
      <p>dev#3</p>
      <p>Socket.java
implements implements
develops</p>
      <p>dev#2
HttpSocket.java</p>
      <p>
        FtpSocket.java
includes
includes
lib#1
lib#2
project#1
project#2
similarity in graph [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. SimRank is among the most notable algorithms for computing
graph similarity [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Given two nodes, SimRank computes the similarity by
considering their neighbours: the more shared nodes point to them, the more similar the two
nodes are. Besides SimRank, there are many other algorithms for calculating
similarities in graph that cannot be recalled in this paper due to space limitation [
        <xref ref-type="bibr" rid="ref11 ref14">11,14</xref>
        ].
      </p>
      <p>
        In Fig. 5, we can compute the similarity between project#1 and project#2
using related semantic paths, e.g. the hasSourceCode and implements two-hop
path, or the one-hop path includes. This assumption relies on the fact that the
projects are implementing common functionalities by using common libraries [
        <xref ref-type="bibr" rid="ref15 ref26">15,26</xref>
        ].
The graph also allows to compute the similarity between two developers, e.g. dev#1
and dev#2 as they are indirectly connected by the develops and implements. In
summary, by transforming various OSS artifacts into a graph, using different similar
algorithms, we are able to perform similarity calculation for different artifacts which
then serves as a base for other computations.
3.3 Recommender system
We derive recommendation techniques from the mechanisms implemented for
e-commerce systems [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. There, given a customer, products that have been purchased by
similar customers are recommended to her [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. Similarly, given a software project we
recommend artifacts that exist in projects that are similar to it. A content-based
recommender system works by recommending to a developer various artifacts, e.g. code
snippets, API method invocations, external libraries in projects that are similar to the
ones being developed. Whereas, a collaborative-filtering recommender system gives to
a developer recommendations that are based on the artifacts used by developers with
similar behaviors [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>
        By referring to the example shown in Fig. 5, we see that project#1 is similar to
project#2 in terms of the functionalities [
        <xref ref-type="bibr" rid="ref15 ref26">15,26</xref>
        ]: they contain classes
HttpSocket.java and FtpSocket.java which implement the same interface
Socket.java. Furthermore, both projects share the third-party library lib#1. Thus, it is
sensible to recommend lib#2 to project#2 since lib#2 is being used by project#1.
With this recommendation, the developers of project#2 are able to save the time
spent on manual searching for lib#2. Analogously, since the two projects are similar,
it is also worthwhile to suggest developer dev#3 starring project#1 since she
already starred project#22. In practice, the recommendation of OSS artifacts is much
well-defined with the incorporation of several similar projects instead of only one.
      </p>
      <p>By following this design, we implemented the first prototype of a recommender
system that is able to recommend similar projects and third-party libraries. Before going
to present some initial results in Section 5, we recall some popular metrics for evaluating
recommendation outcomes in Section 4.
4</p>
    </sec>
    <sec id="sec-3">
      <title>Evaluation metrics</title>
      <p>
        Given a query, the outcome of the recommendation process is a ranked list of items
that are considered to be relevant for the query. For instance, a system that
recommends third-party libraries for a given project returns a list in descending order of real
similarity scores corresponding to libraries [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. To validate the performance of a
recommender system, we perform cross validation using a training and a testing dataset
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Training data is used to build the model whereas testing data is used to validate the
outcome. Considering a project that needs library recommendation, the graph model is
used to compute similarities and then to find most k similar projects. The outcome of
the recommendation is a ranked list of libraries. Normally, a developer pays attention
only to the top-N items. We use k and N as parameter for the evaluation later on.
      </p>
      <p>We recall the following metrics that can be used to evaluate the performance of a
recommender system in the context of mining software repositories given the presence
of training and testing datasets. First, for a clear presentation of the metrics considered
during the outcome evaluation, the following notations are defined:
– N is the cut-off value for the list of recommended items and k is the number of
neighbour projects considered for the recommendation process;
– For a testing project p, the ground-truth dataset is named as GT(p);
– REC(p) is the top-N items recommended to p. It is a ranked list in descending
order of real scores, with RECr(p) being the library in the position r;
– If a recommended item i 2 REC(p) for a testing project p is found in the ground
truth of p (i.e., GT(p)), hereafter we call this as a library match or hit.</p>
      <p>
        Using these notations, the metrics utilized to measure the recommendation
outcomes are explained in the following. Among others, we consider success rate [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ],
accuracy [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], sales diversity, and novelty [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] the most suitable metrics for evaluating
a recommender system in mining OSS repositories [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
4.1
      </p>
      <p>
        Success rate
Given a set of P testing projects, this metric measures the rate at which a recommender
system can return at least a match among top-N recommended items for every project
p 2 P [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. The metric is formally defined as follows:
2 Starring is used by GitHub developers as a means to bookmark an OSS repository and to thank
its contributors. The GitHub star has nothing to do with ratings as by TripAdvisor or YouTube
jP j
where the function count() counts the number of times that the boolean expression
specified in its parameter is true.
      </p>
      <p>1
iDCG</p>
      <p>N
X</p>
      <p>2rel(p;i)
countp2P ( GT (p) T([rN=1RECr(p)) &gt; 0)
i=1 log2(i + 1)
where iDCG is used to normalize the metric to 1 when an ideal ranking is reached.
Given a list of top-N items, precision@N, recall@N, and normalized discounted
cumulative gain are utilized to measure the accuracy of the recommendation results.
Precision@N is the ratio of the top-N recommended items belonging to the
groundtruth dataset:</p>
      <p>PN
precision@N (p) = r=1 jGT (p) T RECr(p)j</p>
      <p>
        N
Recall@N is the ratio of the ground-truth items appearing in the N items [
        <xref ref-type="bibr" rid="ref19 ref7 ref8">7,8,19</xref>
        ]:
(2)
      </p>
      <p>
        PN
recall@N (p) = r=1 jGT (p) T RECr(p)j (3)
jGT (p)j
Normalized Discounted Cumulative Gain Precision and recall reflect well the accuracy,
however they neglect ranking sensitivity [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. nDCG is an effective way to measure if a
system can present highly relevant items on the top of the list:
(1)
(4)
(6)
4.3
      </p>
      <p>
        Sales Diversity
In e-commerce systems, sales diversity is the ability to improve the coverage as also
the distribution of products across customers [
        <xref ref-type="bibr" rid="ref19 ref29">19,29</xref>
        ]. In the context of mining software
repositories, sales diversity means the ability of the system to suggest to projects as
much items, e.g. libraries, code snippets, as possible, as well as to disperse the
concentration among all, instead of focusing only on a specific set of items [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
Catalog coverage measures the percentage of items recommended to projects:
N
coverage@N = [p2P [r=1 RECr(p) (5)
jIj
Entropy evaluates if the recommendations are concentrated on only a small set or spread
across a wide range of items [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]:
entropy =
      </p>
      <p>X
i2I
#rec(i)
total
ln
#rec(i)
total
where I is the set of all items available for recommendation, #rec(i) is the number of
N
projects getting i as a recommendation, #rec(i) = countp2P ( ([r=1RECr(p)) 3 i ),
i 2 I, total denotes the total number of recommended items across all projects.</p>
      <p>P
p2P</p>
      <p>PN</p>
      <p>r=1
P
p2P
rel(p;r) [1 pop(RECr(p))]</p>
      <p>log2(r+1)
PN rel(p;r)
r=1 log2(r+1)
where rel(p; r) = jGT (p) T RECr(p)j represents the relevance of the item at the r
position of the top-N list to project p; pop(RECr(p)) is the popularity of the item
at the position r in the top-N recommended list. It is computed as the ratio between
the number of projects that receive RECr(p) as recommendation and the number of
projects that receive the most ever recommended items as recommendation. Equation 7
implies that the more unpopular items a system recommends, the higher the EPC value
it obtains and vice versa.
5</p>
    </sec>
    <sec id="sec-4">
      <title>Preliminary results</title>
      <p>
        For explanatory purpose, we introduce an example of how the CROSSMINER
recommender system can be applied to assist OSS developers in a specific context. During
the software development phase, among other tasks, programmers regularly search for
and reuse third-party libraries [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. A third-party library is an interface to a reusable
source code and can be embedded in external software projects independently from
environment code [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. To help developers quickly locate suitable dependencies, in the
context of the CROSSMINER project we implemented CrossRec, a framework that
exploits Cross Projects Relationships in Open Source Software Repositories to build
a Recommender System. CrossRec employs a collaborative-filtering technique based
on the similar model applied in e-commerce systems [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Instead of recommending
products to customers, we recommend third-party libraries to projects using exactly the
same mechanism: “given a project, libraries come from similar projects.” To be precise,
in this section we address the use case GetRecommendedDeps outlined in Section 2.
      </p>
      <p>
        To evaluate CrossRec, we considered a well-established tool as baseline. In
particular, to the best of our knowledge, LibRec [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] is one the most advanced techniques
for library recommendation. Based on the set of third-party libraries that a project has
already included, LibRec searches for relevant libraries with a high success rate (see
Section 4.1). Using the available implementation3, we conducted an evaluation on
LibRec and CrossRec with the same dataset consisting of 5:200 GitHub Java projects to
see how well they can search for suitable third-party libraries.
      </p>
      <p>
        Since success rate was used as the only evaluation metric for LibRec [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], we
exploited it as a means to compare directly the performance of both systems. Table 1
shows success rate@5 for k=f5, 10, 15, 20, 25g. As can be seen, the success rates
obtained by CrossRec are always superior to those of LibRec. The maximum success
rate@5 of LibRec is 0:8780, whereas CrossRec obtains success rates that are always
greater than 0:9073 for all configurations, with 0:9286 being the maximum value. For
3 We would like to thank Ferdian Thung and David Lo at the School of Information Systems,
Singapore Management University for providing us with the original LibRec implementation
N = 10 both LibRec and CrossRec get a considerable improvement in their
performance success rate@10 compared to the case with N = 5. It is evident that in all test
configurations, CrossRec gains a better performance than that of LibRec.
      </p>
      <p>Next we investigate success rate with respect to the length of the recommendation
list N , i.e. N = f1; 3; 5; 7; 10g. In the first experiment, k is fixed to 10 and the outcomes
are depicted in Table 2. For N = 1, LibRec gets a success rate of 0:6248 which is
much lower than 0:7482, the corresponding value by CrossRec. The value of 0:7482
shows that CrossRec is able to provide relevant recommendations to the developer at
an encouraging match rate, even when she expects only an extremely brief list. Starting
from N = 5, CrossRec gains a quick increase in its performance as the success rates
are always greater than 0:9286.</p>
      <p>In the second experiment, k is changed to 20 and both systems have a slight increase
in their success rate, however the change is marginal. By conducting more experiments
with an increasing k, we noticed that incorporating more similar projects for
recommendation does not improve success rate (the outcomes of these experiments are omitted
from the paper due to space limitation).</p>
      <p>In summary, by considering the results depicted in Table 1 and Table 2, we come
to the conclusion that CrossRec obtains a better success rate in comparison to LibRec
in all cases. This confirms our hypothesis that the collaborative-filtering technique is a
profitable deployment for recommendation of third-party libraries, and consequently it
deserves to be further investigated in the context of the CROSSMINER project.
6</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>We presented our proposed framework to assist software developers in mining OSS
repositories. We exploit the graph model to represent the semantic relationships of the
OSS ecosystem. Afterwards, a knowledge base with metadata curated from OSS
repositories has been populated to serve for various mining techniques. We built our first
prototype of a recommender system using the collaborative-filtering technique. A
preliminary evaluation on a dataset of 5:200 GitHub Java projects shows that our system
for recommending third-party libraries outperforms a well-known baseline. For future
work, we are going to address all the recommendations mentioned in Section 2
following the model proposed in this paper.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>The research described in this paper has been carried out as part of the CROSSMINER
Project, EU Horizon 2020 Research and Innovation Programme, grant agreement No.
732223</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>A.</given-names>
            <surname>Bagnato</surname>
          </string-name>
          et. al.
          <article-title>Developer-centric knowledge mining from large open-source software repositories (crossminer)</article-title>
          .
          <source>In Software Technologies: Applications and Foundations</source>
          , pages
          <fpage>375</fpage>
          -
          <lpage>384</lpage>
          . Springer International Publishing,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>V.</given-names>
            <surname>Bauer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Heinemann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Deissenboeck</surname>
          </string-name>
          .
          <article-title>A structured approach to assess third-party library usage</article-title>
          .
          <source>In Proceedings of the 2012 IEEE International Conference on Software Maintenance (ICSM)</source>
          ,
          <source>ICSM '12</source>
          , pages
          <fpage>483</fpage>
          -
          <lpage>492</lpage>
          . IEEE Computer Society,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>A.</given-names>
            <surname>Bellog</surname>
          </string-name>
          <article-title>´ın, I. Cantador, and</article-title>
          <string-name>
            <given-names>P.</given-names>
            <surname>Castells</surname>
          </string-name>
          .
          <article-title>A comparative study of heterogeneous item recommendations in social systems</article-title>
          .
          <source>Inf. Sci.</source>
          ,
          <volume>221</volume>
          :
          <fpage>142</fpage>
          -
          <lpage>169</lpage>
          , Feb.
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>V. D.</given-names>
            <surname>Blondel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gajardo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Heymans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Senellart</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P. V.</given-names>
            <surname>Dooren</surname>
          </string-name>
          .
          <article-title>A measure of similarity between graph vertices: Applications to synonym extraction and web searching</article-title>
          .
          <source>SIAM Rev</source>
          .,
          <volume>46</volume>
          (
          <issue>4</issue>
          ):
          <fpage>647</fpage>
          -
          <lpage>666</lpage>
          , Apr.
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>N.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. C.</given-names>
            <surname>Hoi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and X.</given-names>
            <surname>Xiao</surname>
          </string-name>
          .
          <article-title>Simapp: A framework for detecting similar mobile applications by online kernel learning</article-title>
          .
          <source>In Proceedings of the Eighth ACM International Conference on Web Search and Data Mining, WSDM '15</source>
          , pages
          <fpage>305</fpage>
          -
          <lpage>314</lpage>
          . ACM,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>P.</given-names>
            <surname>Cremonesi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Turrin</surname>
          </string-name>
          , E. Lentini, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Matteucci</surname>
          </string-name>
          .
          <article-title>An evaluation methodology for collaborative recommender systems</article-title>
          .
          <source>In Proceedings of the 2008 International Conference on Automated Solutions for Cross Media Content and Multi-channel Distribution, AXMEDIS '08</source>
          , pages
          <fpage>224</fpage>
          -
          <lpage>231</lpage>
          . IEEE Computer Society,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>J.</given-names>
            <surname>Davis</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Goadrich</surname>
          </string-name>
          .
          <article-title>The relationship between precision-recall and roc curves</article-title>
          .
          <source>In Proceedings of the 23rd International Conference on Machine Learning, ICML '06</source>
          , pages
          <fpage>233</fpage>
          -
          <lpage>240</lpage>
          . ACM,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>T.</given-names>
            <surname>Di</surname>
          </string-name>
          <string-name>
            <surname>Noia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Mirizzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. C.</given-names>
            <surname>Ostuni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Romito</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Zanker</surname>
          </string-name>
          .
          <article-title>Linked open data to support content-based recommender systems</article-title>
          .
          <source>In Proceedings of the 8th International Conference on Semantic Systems, I-SEMANTICS '12</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          . ACM,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>D.</given-names>
            <surname>Di Ruscio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          , I. Korkontzelos,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Vinju</surname>
          </string-name>
          .
          <article-title>Ossmeter: A software measurement platform for automatically analysing open source software projects</article-title>
          .
          <source>In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</source>
          , ESEC/FSE 2015, pages
          <fpage>970</fpage>
          -
          <lpage>973</lpage>
          . ACM,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. G. Guo,
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Yorke-Smith</surname>
          </string-name>
          .
          <article-title>A novel bayesian similarity measure for recommender systems</article-title>
          .
          <source>In Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence, IJCAI '13</source>
          , pages
          <fpage>2619</fpage>
          -
          <lpage>2625</lpage>
          . AAAI Press,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>T. H.</given-names>
            <surname>Haveliwala</surname>
          </string-name>
          .
          <article-title>Topic-sensitive pagerank</article-title>
          .
          <source>In Proceedings of the 11th International Conference on World Wide Web, WWW '02</source>
          , pages
          <fpage>517</fpage>
          -
          <lpage>526</lpage>
          . ACM,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. G. Jeh and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          .
          <article-title>Simrank: A measure of structural-context similarity</article-title>
          .
          <source>In Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD '02</source>
          , pages
          <fpage>538</fpage>
          -
          <lpage>543</lpage>
          . ACM,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. G. Linden,
          <string-name>
            <given-names>B.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and J.</given-names>
            <surname>York</surname>
          </string-name>
          . Amazon.
          <article-title>com recommendations: Item-to-item collaborative filtering</article-title>
          .
          <source>IEEE Internet Computing</source>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ):
          <fpage>76</fpage>
          -
          <lpage>80</lpage>
          , Jan.
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. W. Lu,
          <string-name>
            <given-names>J.</given-names>
            <surname>Janssen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Milios</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Japkowicz</surname>
          </string-name>
          , and
          <string-name>
            <surname>Y. Zhang.</surname>
          </string-name>
          <article-title>Node similarity in the citation graph</article-title>
          .
          <source>Knowledge and Information Systems</source>
          ,
          <volume>11</volume>
          (
          <issue>1</issue>
          ):
          <fpage>105</fpage>
          -
          <lpage>129</lpage>
          ,
          <year>Jan 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>C. McMillan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Grechanik</surname>
            , and
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Poshyvanyk</surname>
          </string-name>
          .
          <article-title>Detecting similar software applications</article-title>
          .
          <source>In Proceedings of the 34th International Conference on Software Engineering</source>
          , ICSE '
          <volume>12</volume>
          , pages
          <fpage>364</fpage>
          -
          <lpage>374</lpage>
          . IEEE Press,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>C. McMillan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Poshyvanyk</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Grechanik</surname>
          </string-name>
          .
          <article-title>Recommending source code examples via api call usages and documentation</article-title>
          .
          <source>In Proceedings of the 2Nd International Workshop on Recommendation Systems for Software Engineering</source>
          , RSSE '
          <volume>10</volume>
          , pages
          <fpage>21</fpage>
          -
          <lpage>25</lpage>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. L.
          <string-name>
            <surname>Moreno</surname>
            , G. Bavota,
            <given-names>M. Di</given-names>
          </string-name>
          <string-name>
            <surname>Penta</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Oliveto</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Marcus</surname>
          </string-name>
          .
          <article-title>How can i use this method</article-title>
          ?
          <source>In Proceedings of the 37th International Conference on Software Engineering - Volume 1, ICSE '15</source>
          , pages
          <fpage>880</fpage>
          -
          <lpage>890</lpage>
          . IEEE Press,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. P. T. Nguyen,
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Rocco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rubei</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D. D.</given-names>
            <surname>Ruscio</surname>
          </string-name>
          .
          <article-title>Crosssim: exploiting mutual relationships to detect similar oss projects</article-title>
          .
          <source>In Procs. of 44th Euromicro Conference on Software Engineering and Advanced Applications</source>
          (SEAA) - to appear,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. P. T. Nguyen,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tomeo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. Di</given-names>
            <surname>Noia</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E. Di</given-names>
            <surname>Sciascio</surname>
          </string-name>
          .
          <article-title>Content-based recommendations via dbpedia and freebase: A case study in the music domain</article-title>
          .
          <source>In Proceedings of the 14th International Conference on The Semantic Web - ISWC 2015 - Volume</source>
          <volume>9366</volume>
          , pages
          <fpage>605</fpage>
          -
          <lpage>621</lpage>
          . Springer-Verlag New York, Inc.,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. H.
          <string-name>
            <surname>Niu</surname>
            ,
            <given-names>I. Keivanloo</given-names>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zou</surname>
          </string-name>
          .
          <article-title>Api usage pattern recommendation for software development</article-title>
          .
          <source>J. Syst. Softw.</source>
          , 129(C):
          <fpage>127</fpage>
          -
          <lpage>139</lpage>
          ,
          <year>July 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21. L.
          <string-name>
            <surname>Ponzanelli</surname>
            , G. Bavota,
            <given-names>M. Di</given-names>
          </string-name>
          <string-name>
            <surname>Penta</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Oliveto</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Lanza</surname>
          </string-name>
          .
          <article-title>Mining stackoverflow to turn the ide into a self-confident programming prompter</article-title>
          .
          <source>In Proceedings of the 11th Working Conference on Mining Software Repositories, MSR</source>
          <year>2014</year>
          , pages
          <fpage>102</fpage>
          -
          <lpage>111</lpage>
          . ACM,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>A.</given-names>
            <surname>Ragone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tomeo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Magarelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. Di</given-names>
            <surname>Noia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Palmonari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Maurino</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E. Di</given-names>
            <surname>Sciascio</surname>
          </string-name>
          .
          <article-title>Schema-summarization in linked-data-based feature selection for recommender systems</article-title>
          .
          <source>In Proceedings of the Symposium on Applied Computing, SAC '17</source>
          , pages
          <fpage>330</fpage>
          -
          <lpage>335</lpage>
          . ACM,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>M. P. Robillard</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Bodden</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Kawrykow</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Mezini</surname>
            , and
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Ratchford</surname>
          </string-name>
          .
          <article-title>Automated api property inference techniques</article-title>
          .
          <source>IEEE Trans. Softw</source>
          . Eng.,
          <volume>39</volume>
          (
          <issue>5</issue>
          ):
          <fpage>613</fpage>
          -
          <lpage>637</lpage>
          , May
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>M. P. Robillard</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Maalej</surname>
            ,
            <given-names>R. J.</given-names>
          </string-name>
          <string-name>
            <surname>Walker</surname>
          </string-name>
          , and T. Zimmermann, editors.
          <source>Recommendation Systems in Software Engineering</source>
          . Springer Berlin Heidelberg,
          <year>2014</year>
          . DOI:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -45135-5.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <given-names>B.</given-names>
            <surname>Sarwar</surname>
          </string-name>
          , G. Karypis,
          <string-name>
            <given-names>J.</given-names>
            <surname>Konstan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Riedl</surname>
          </string-name>
          .
          <article-title>Item-based collaborative filtering recommendation algorithms</article-title>
          .
          <source>In Proceedings of the 10th International Conference on World Wide Web, WWW '01</source>
          , pages
          <fpage>285</fpage>
          -
          <lpage>295</lpage>
          . ACM,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <given-names>F.</given-names>
            <surname>Thung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Lawall</surname>
          </string-name>
          .
          <source>Automated library recommendation. In 2013 20th Working Conference on Reverse Engineering (WCRE)</source>
          , pages
          <fpage>182</fpage>
          -
          <lpage>191</lpage>
          ,
          <year>Oct 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <given-names>F.</given-names>
            <surname>Thung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Lawall</surname>
          </string-name>
          .
          <article-title>Automatic recommendation of api methods from feature requests</article-title>
          .
          <source>In Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, ASE'13</source>
          , pages
          <fpage>290</fpage>
          -
          <lpage>300</lpage>
          . IEEE Press.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <given-names>S.</given-names>
            <surname>Vargas</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Castells</surname>
          </string-name>
          .
          <article-title>Rank and relevance in novelty and diversity metrics for recommender systems</article-title>
          .
          <source>In Proceedings of the Fifth ACM Conference on Recommender Systems, RecSys '11</source>
          , pages
          <fpage>109</fpage>
          -
          <lpage>116</lpage>
          . ACM,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <given-names>S.</given-names>
            <surname>Vargas</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Castells</surname>
          </string-name>
          .
          <article-title>Improving sales diversity by recommending users to items</article-title>
          . In Eighth ACM Conference on Recommender Systems, RecSys '14,
          <string-name>
            <surname>Foster</surname>
            <given-names>City</given-names>
          </string-name>
          , Silicon Valley, CA, USA - October 06 -
          <issue>10</issue>
          ,
          <year>2014</year>
          , pages
          <fpage>145</fpage>
          -
          <lpage>152</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30. H.
          <string-name>
            <surname>Zhong</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Xie</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Zhang</surname>
            , J. Pei, and
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Mei</surname>
          </string-name>
          . Mapo:
          <article-title>Mining and recommending api usage patterns</article-title>
          . In S. Drossopoulou, editor,
          <source>ECOOP 2009 - Object-Oriented Programming</source>
          , pages
          <fpage>318</fpage>
          -
          <lpage>343</lpage>
          . Springer Berlin Heidelberg,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>