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.
Dependency-based software change impact analysis is the domain concerned with estimating the sets of artifacts impacted by a change to a related artifact. Research has shown that analysing the various class dependency types independently will never completely reveal the impact sets. Therefore, dependency types are combined to improve the precision of estimated when compared to impact sets. Software...
We present the use of a new IDE plugin for introducing students to the analysis of software design. Without a concrete method to evaluate their ideas, designing for modifiability was a challenging topic for our students. Prior work showed that students can quickly learn about dependency graphs and use them to make design decisions. However, students frequently made mistakes creating the graphs and...
Commit comments increasingly receive attention as an important complementary component in code change comprehension. To address the comment scarcity issue, a variety of automatic approaches for commit comment generation have been intensively proposed. However, most of these approaches mechanically outline a superficial level summary of the changed software entities, the change intent behind the code...
Detecting zero-day sophisticated malware is like searching for a needle in the haystack, not knowing what the needle looks like. This paper describes Android Malicious Flow Visualization Toolbox that empowers a human analyst to detect such malware. Detecting sophisticated malware requires systematic exploration of the code to identify potentially malignant code, conceiving plausible malware hypotheses,...
Enabling interfaces to declare (instance) method implementations, Java 8 default methods can be used as a substitute for the ubiquitous skeletal implementation software design pattern. Performing this transformation on legacy software manually, though, may be non-trivial. The refactoring requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling...
Refactoring is a common software development practice and many simple refactorings can be performed automatically by tools. Identifier renaming is a widely performed refactoring activity. With tool support, rename refactorings can rely on the program structure to ensure correctness of the code transformation. Unfortunately, the textual references to the renamed identifier present in the unstructured...
The task of retrieving Learning Objects from repositories often faces a large number of challenges, among them the lack of proper semantic support that allows multiple representations for the same concept in a given language. In this sense, this work presents a proposal of an architecture and a tool that uses Thesauri in the Portuguese language in order to amplify and refine the search results when...
We present our automated program repair technique ssFix which leverages existing code (from a code database) that is syntax-related to the context of a bug to produce patches for its repair. Given a faulty program and a fault-exposing test suite, ssFix does fault localization to identify suspicious statements that are likely to be faulty. For each such statement, ssFix identifies a code chunk (or...
Proof assistants such as Coq are used to construct and check formal proofs in many large-scale verification projects. As proofs grow in number and size, the need for tool support to quickly find failing proofs after revising a project increases. We present a technique for large-scale regression proof selection, suitable for use in continuous integration services, e.g., Travis CI. We instantiate the...
Mutation testing is known as an effective method for evaluating test sets in terms of their error-revealing capability. When applying mutation testing, it is necessary to identify and filter out the equivalent mutants, i.e. mutants that despite their syntactical difference have the same semantic as the original program. Due to the undecidable nature of the problem of determining whether two programs...
Semantic techniques can be utilized for understanding the meaning of sentences in a text. We can refer the abstract of some document in order to understand its contents very quickly. But the case of video data is different. We cannot review the whole video file in a short time period just like the text document case. This paper proposes the design of video abstract extraction. In order to generate...
Executable Domain-Specific Modeling Languages (xDSMLs) are typically defined by metamodels that specify their abstract syntax, and model interpreters or compilers that define their execution semantics. To face the proliferation of xDSMLs in many domains, it is important to provide language engineering facilities for opportunistic reuse, extension, and customization of existing xDSMLs to ease the definition...
In large code repositories, the probability of functions to repeat across projects is high. This type of functional redundancy (FR) is desirable for recent code reuse and repair approaches. Yet, FR is hard to measure because it is closely related to program equivalence, which is an undecidable problem. This is one of the reasons most studies that investigate redundancy focus on syntactic rather than...
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...
The verification of the time behavior in distributed, multi-threaded programs is challenging, mainly because modern programming languages only provide means to represent time without a proper semantics. Current approaches to extract time models from source code represent time only as a sequence of events or require developers to manually provide a formal model of the time behavior. This makes it difficult...
In the academic literature, many uses of the Object Constraint Language (OCL) have been proposed. By contrast, the utilization of OCL in contemporary modelling tools lags behind, suggesting that leverage of OCL remains limited in practice. We consider this undeserved, and present a scheme for partially evaluating OCL expressions that allows one to capitalize on given OCL specifications for a wide...
Automatic recommendations based on skill matching techniques can prove to be an important component of an online recruitment platform, being able to lower the costs for employers, ease the process for candidates and increase the hiring quality overall. This is important nowadays, when online recruitment plays a major role in the hiring process. The main challenges in this area consist in providing...
Semantic aspect on methodology phase is a significant issue to develop multi-agent system in the current days. There are a lot of methodologies to develop multi-agent system, but the current problem is how to choose the best methodology phase to develop current multi-agent system. The development of multi-agent system currently is to be more complex and difficult. Many aspects that contains on multi-agent...
The use of blocks programming languages has skyrocketed in recent years, thanks largely to freely available blocks environments like Scratch, Snap!, and Blockly. These platforms have lowered the barrier to computer science and algorithmic thinking, allowing even very young children to compose programs. Compared to text interfaces, blocks alleviate much of the burden of learning a language's syntax...
Sequences of duplicate code, either with or without modification, are known as code clones or just clones. Code clones are generally considered undesirable for a number of reasons, although they can offer some convenience to developers. The detection of code clones helps to improve the quality of source code through software re-engineering. Numerous methods have been proposed for code clone detection...
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.