The Infona portal uses cookies, i.e. strings of text saved by a browser on the user's device. The portal can access those files and use them to remember the user's data, such as their chosen settings (screen view, interface language, etc.), or their login data. By using the Infona portal the user accepts automatic saving and using this information for portal operation purposes. More information on the subject can be found in the Privacy Policy and Terms of Service. By closing this window the user confirms that they have read the information on cookie usage, and they accept the privacy policy and the way cookies are used by the portal. You can change the cookie settings in your browser.
Automatic building of software projects providesa desirable foundation to support a large variety of softwareengineering research tasks based on open software repositories. In this paper, we propose the first technique to automaticallyextract software build commands from software readme files andWiki pages, and combine the extracted commands for softwarebuilding. Specifically, we leverage the Named...
Nowadays, due to the frequent technological innovationand market changes, software libraries are evolving veryquickly. To make sure that existing client software applicationsare not broken after a library update, backward compatibilityhas always been one of the most important requirements duringthe evolution of software platforms and libraries. However, due to various reasons, backward compatibility...
Over the last few years, researchers proposed several semantic history slicing approaches that identify the set of semantically-related commits implementing a particular software functionality. However, there is no comprehensive benchmark for evaluating these approaches, making it difficult to assess their capabilities. This paper presents a dataset of 81 semantic change data collected from 8 real-world...
Software developers often need to repeat similar modifications in multiple different locations of a system's source code. These repeated similar modifications, or systematic edits, can be both tedious and error-prone to perform manually. While there are tools that can be used to assist in automating systematic edits, it is not straightforward to find out where the occurrences of a systematic edit...
Software Reverse Engineering scenario would involve software that has been worked upon for years and carries several modules of a business in its lines of code. Unfortunately the source code of the application has been lost, what remains is “native” or “binary” code. Traditional obfuscators work on binary code but they are tedious and do not provide us with a specific obfuscation depending upon the...
Defect reporting and correction is one of the most crucial part in any phase of software development. This is a very costly activity. A lot of time, effort and resources can be saved if the defects can be predicted beforehand, using a suitable training data set. For this, the generation of defect reports which reports the classes that are defective and computes the required software metrics is required...
Code smells are sub-optimal coding circumstances such as blob classes or spaghetti code - they have received much attention and tooling in recent software engineering research. Higher-up in the abstraction level, architectural smells are problems or sub-optimal architectural patterns or other design-level characteristics. These have received significantly less attention even though they are usually...
Component-based software platforms likeOSGi facilitate the development of complex software. As software systems become more complicated, tool supportis often a necessity for assuring the conformance betweendesigned and implemented architectures. We present ARTOS, an architecture toolkit to facilitate the design and conformanceanalysis of the software running on the OSGi platform. Thetoolkit consists...
While Model-Driven Software Development (MDSD) is a popular trend in the software development area, it still lacks the support of the appropriate tools in many cases. This can be explained by the fact, that many proposed methods are purely theoretical and cannot be simply introduced in industry. In order to make these methods practically usable, it would be necessary to support those with the appropriate...
Concurrency is a requirement for much modern software, but the implementation of multithreaded algorithms comes at the risk of errors such as data races.Programmers can prevent data races by documenting and obeying a locking discipline, which indicates which locks must be held in order to access which data.This paper introduces a formal semantics for locking specifications that gives a guarantee of...
Programming languages can restrict state change by preventing it entirely (immutability) or by restricting which clients may modify state (read-only restrictions). The benefits of immutability and read-only restrictions in software structures have been long-argued by practicing software engineers, researchers, and programming language designers. However, there are many proposals for language mechanisms...
Automated test generation tools have been widely investigated with the goal of reducing the cost of testing activities. However, generated tests have been shownnot to help developers in detecting and finding more bugs even though they reach higher structural coverage compared to manual testing. The main reason is that generated tests are difficult to understand and maintain. Our paper proposes an...
Modern software systems are becoming increasingly complex, relying on a lot of third-party library support. Library behaviors are hence an integral part of software behaviors. Analyzing them is as important as analyzing the software itself. However, analyzing libraries is highly challenging due to the lack of source code, implementation in different languages, and complex optimizations. We observe...
The co-existence of critical and non-critical applications on computing devices, such as mobile phones, is becoming commonplace. The sensitive segments of a critical application should be executed in isolation on Trusted Execution Environments (TEE) so that the associated code and data can be protected from malicious applications. TEE is supported by different technologies and platforms, such as ARM...
Software developers need access to different kinds of information which is often dispersed among different documentation sources, such as API documentation or Stack Overflow. We present an approach to automatically augment API documentation with "insight sentences" from Stack Overflow -- sentences that are related to a particular API type and that provide insight not contained in the API...
We created detailed profiles of the energy consumed by common operations done on Java List, Map, and Set abstractions. The results show that the alternative data types for these abstractions differ significantly in terms of energy consumption depending on the operations. For example, an ArrayList consumes less energy than a LinkedList if items are inserted at the middle or at the end, but consumes...
Software licensing determines how open source systems are reused, distributed, and modified from a legal perspective. While it facilitates rapid development, it can present difficulty for developers in understanding due to the legal language of these licenses. Because of misunderstandings, systems can incorporate licensed code in a way that violates the terms of the license. Our research first aimed...
Detecting refactorings in Object-Oriented Models (OOM) is essential to automate the repair, maintenance, and migration of OOM-related products. However, detecting refactorings is challenging since multiple sequences of atomic changes may define a single user intention and refactorings may overlap over the atomic change trace. In this paper, we present AD-ROOM an Eclipse-based tool to automatically...
Code duplication is widely recognized as a potentially harmful code smell for the maintenance of software systems. In this demonstration, we present a tool, developed as part of the JDeodorant Eclipse plug-in, which offers cutting-edge features for the analysis and refactoring of clones found in Java projects. https://youtu.be/K xAEqIEJ-4
Context: Software development is knowledge-intense work, and so is pair programming. However, the importance of knowledge transfer in pair programming is usually only stressed for expert-novice constellations. Goal: Understand how knowledge transfer during pair programming works and eventually provide guidance for practitioners. Method: Detailed qualitative data analysis of full-length recordings...
Set the date range to filter the displayed results. You can set a starting date, ending date or both. You can enter the dates manually or choose them from the calendar.