40 research outputs found

    Towards Automatic Generation of Short Summaries of Commits

    Full text link
    Committing to a version control system means submitting a software change to the system. Each commit can have a message to describe the submission. Several approaches have been proposed to automatically generate the content of such messages. However, the quality of the automatically generated messages falls far short of what humans write. In studying the differences between auto-generated and human-written messages, we found that 82% of the human-written messages have only one sentence, while the automatically generated messages often have multiple lines. Furthermore, we found that the commit messages often begin with a verb followed by an direct object. This finding inspired us to use a "verb+object" format in this paper to generate short commit summaries. We split the approach into two parts: verb generation and object generation. As our first try, we trained a classifier to classify a diff to a verb. We are seeking feedback from the community before we continue to work on generating direct objects for the commits.Comment: 4 pages, accepted in ICPC 2017 ERA Trac

    Classification of changes in API evolution

    Get PDF
    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

    The Co-Evolution of Test Maintenance and Code Maintenance through the lens of Fine-Grained Semantic Changes

    Full text link
    Automatic testing is a widely adopted technique for improving software quality. Software developers add, remove and update test methods and test classes as part of the software development process as well as during the evolution phase, following the initial release. In this work we conduct a large scale study of 61 popular open source projects and report the relationships we have established between test maintenance, production code maintenance, and semantic changes (e.g, statement added, method removed, etc.). performed in developers' commits. We build predictive models, and show that the number of tests in a software project can be well predicted by employing code maintenance profiles (i.e., how many commits were performed in each of the maintenance activities: corrective, perfective, adaptive). Our findings also reveal that more often than not, developers perform code fixes without performing complementary test maintenance in the same commit (e.g., update an existing test or add a new one). When developers do perform test maintenance, it is likely to be affected by the semantic changes they perform as part of their commit. Our work is based on studying 61 popular open source projects, comprised of over 240,000 commits consisting of over 16,000,000 semantic change type instances, performed by over 4,000 software engineers.Comment: postprint, ICSME 201

    Microservices Container Security Orchestration Framework within Kubernetes and Docker for Business-Critical Applications within Digital Transformation

    Get PDF
    Container virtualization technology facilitates the creation of microservices-based systems through continuous integration. Container-based apps can be deployed more easily when they use orchestration systems like Kubernetes, which has become the de facto standard. It can be difficult to create effective and precise orchestration systems, nevertheless. The scheduler, a crucial orchestrator task that allocates physical resources to containers, is the subject of this article. Scheduling strategies are developed using several Quality-of-Service metrics. The CI in CI/CD stands for continuous integration. Continuous integration drives the automation in the development and delivery of the code and developers frequently apply code changes. It’s an automated process that allows multiple developers to contribute software components to the same project without integration conflicts. CI also triggers the process of testing the applications automatically upon code commit into the repository. Container virtualization technology facilitates the creation of microservices-based systems through continuous integration. Container-based apps can be deployed more easily when they use orchestration systems like Kubernetes, which has become the de facto standard. It can be difficult to create effective and precise orchestration systems, nevertheless. The scheduler, a crucial orchestrator task that allocates physical resources to containers, is the subject of this article. Scheduling strategies are developed using several Quality of Service metrics
    corecore