4,487 research outputs found
Classification of changes in API evolution
Applications typically communicate with each other, accessing and exposing data and features by using Application Programming Interfaces (APIs). Even though API consumers expect APIs to be steady and well established, APIs are prone to continuous changes, experiencing different evolutive phases through their lifecycle. These changes are of different types, caused by different needs and are affecting consumers in different ways. In this paper, we identify and classify the changes that often happen to APIs, and investigate how all these changes are reflected in the documentation, release notes, issue tracker and API usage logs. The analysis of each step of a change, from its implementation to the impact that it has on API consumers, will help us to have a bigger picture of API evolution. Thus, we review the current state of the art in API evolution and, as a result, we define a classification framework considering both the changes that may occur to APIs and the reasons behind them. In addition, we exemplify the framework using a software platform offering a Web API, called District Health Information System (DHIS2), used collaboratively by several departments of World Health Organization (WHO).Peer ReviewedPostprint (author's final draft
Dual licensing in open source software markets
Dual licensing has proved to be a sustainable business model for various commercial software vendors employing open source strategies. In this paper we study the main characteristics of dual licensing and under which conditions it represents a profitable commercial strategy. We show that dual licensing is a form of versioning, whereby the software vendor uses the open source licensing terms in order to induce commercial customers to select the proprietary version of the software. Furthermore, we show that the software vendor prefers dual licensing to a fully proprietary strategy when the customers are very sensitive to the reciprocal terms of the open source license
Repairing Deep Neural Networks: Fix Patterns and Challenges
Significant interest in applying Deep Neural Network (DNN) has fueled the
need to support engineering of software that uses DNNs. Repairing software that
uses DNNs is one such unmistakable SE need where automated tools could be
beneficial; however, we do not fully understand challenges to repairing and
patterns that are utilized when manually repairing DNNs. What challenges should
automated repair tools address? What are the repair patterns whose automation
could help developers? Which repair patterns should be assigned a higher
priority for building automated bug repair tools? This work presents a
comprehensive study of bug fix patterns to address these questions. We have
studied 415 repairs from Stack overflow and 555 repairs from Github for five
popular deep learning libraries Caffe, Keras, Tensorflow, Theano, and Torch to
understand challenges in repairs and bug repair patterns. Our key findings
reveal that DNN bug fix patterns are distinctive compared to traditional bug
fix patterns; the most common bug fix patterns are fixing data dimension and
neural network connectivity; DNN bug fixes have the potential to introduce
adversarial vulnerabilities; DNN bug fixes frequently introduce new bugs; and
DNN bug localization, reuse of trained model, and coping with frequent releases
are major challenges faced by developers when fixing bugs. We also contribute a
benchmark of 667 DNN (bug, repair) instances
Web API Fragility: How Robust is Your Web API Client
Web APIs provide a systematic and extensible approach for
application-to-application interaction. A large number of mobile applications
makes use of web APIs to integrate services into apps. Each Web API's evolution
pace is determined by their respective developer and mobile application
developers are forced to accompany the API providers in their software
evolution tasks. In this paper we investigate whether mobile application
developers understand and how they deal with the added distress of web APIs
evolving. In particular, we studied how robust 48 high profile mobile
applications are when dealing with mutated web API responses. Additionally, we
interviewed three mobile application developers to better understand their
choices and trade-offs regarding web API integration.Comment: Technical repor
Git4Voc: Git-based Versioning for Collaborative Vocabulary Development
Collaborative vocabulary development in the context of data integration is
the process of finding consensus between the experts of the different systems
and domains. The complexity of this process is increased with the number of
involved people, the variety of the systems to be integrated and the dynamics
of their domain. In this paper we advocate that the realization of a powerful
version control system is the heart of the problem. Driven by this idea and the
success of Git in the context of software development, we investigate the
applicability of Git for collaborative vocabulary development. Even though
vocabulary development and software development have much more similarities
than differences there are still important differences. These need to be
considered within the development of a successful versioning and collaboration
system for vocabulary development. Therefore, this paper starts by presenting
the challenges we were faced with during the creation of vocabularies
collaboratively and discusses its distinction to software development. Based on
these insights we propose Git4Voc which comprises guidelines how Git can be
adopted to vocabulary development. Finally, we demonstrate how Git hooks can be
implemented to go beyond the plain functionality of Git by realizing
vocabulary-specific features like syntactic validation and semantic diffs
ArCo: the Italian Cultural Heritage Knowledge Graph
ArCo is the Italian Cultural Heritage knowledge graph, consisting of a
network of seven vocabularies and 169 million triples about 820 thousand
cultural entities. It is distributed jointly with a SPARQL endpoint, a software
for converting catalogue records to RDF, and a rich suite of documentation
material (testing, evaluation, how-to, examples, etc.). ArCo is based on the
official General Catalogue of the Italian Ministry of Cultural Heritage and
Activities (MiBAC) - and its associated encoding regulations - which collects
and validates the catalogue records of (ideally) all Italian Cultural Heritage
properties (excluding libraries and archives), contributed by CH administrators
from all over Italy. We present its structure, design methods and tools, its
growing community, and delineate its importance, quality, and impact
Microservices Architecture Enables DevOps: an Experience Report on Migration to a Cloud-Native Architecture
This article reports on experiences and lessons learned during incremental migration and architectural refactoring of a commercial mobile back end as a service to microservices architecture. It explains how the researchers adopted DevOps and how this facilitated a smooth migration
- …