17,386 research outputs found
Should I Bug You? Identifying Domain Experts in Software Projects Using Code Complexity Metrics
In any sufficiently complex software system there are experts, having a
deeper understanding of parts of the system than others. However, it is not
always clear who these experts are and which particular parts of the system
they can provide help with. We propose a framework to elicit the expertise of
developers and recommend experts by analyzing complexity measures over time.
Furthermore, teams can detect those parts of the software for which currently
no, or only few experts exist and take preventive actions to keep the
collective code knowledge and ownership high. We employed the developed
approach at a medium-sized company. The results were evaluated with a survey,
comparing the perceived and the computed expertise of developers. We show that
aggregated code metrics can be used to identify experts for different software
components. The identified experts were rated as acceptable candidates by
developers in over 90% of all cases
An Extended Stable Marriage Problem Algorithm for Clone Detection
Code cloning negatively affects industrial software and threatens
intellectual property. This paper presents a novel approach to detecting cloned
software by using a bijective matching technique. The proposed approach focuses
on increasing the range of similarity measures and thus enhancing the precision
of the detection. This is achieved by extending a well-known stable-marriage
problem (SMP) and demonstrating how matches between code fragments of different
files can be expressed. A prototype of the proposed approach is provided using
a proper scenario, which shows a noticeable improvement in several features of
clone detection such as scalability and accuracy.Comment: 20 pages, 10 figures, 6 table
In Search of Evidence for Model-Driven Development Claims: An Experiment on Quality, Effort, Productivity and Satisfaction
Context: Model-Driven Development (MDD) is a paradigm that prescribes building conceptual models
that abstractly represent the system and generating code from these models through transformation
rules. The literature is rife with claims about the benefits of MDD, but they are hardly supported by
evidences.
Objective: This experimental investigation aims to verify some of the most cited benefits of MDD.
Method: We run an experiment on a small set of classes using student subjects to compare the quality,
effort, productivity and satisfaction of traditional development and MDD. The experiment participants
built two web applications from scratch, one where the developers implement the code by hand and
another using an industrial MDD tool that automatically generates the code from a conceptual model.
Results: Outcomes show that there are no significant differences between both methods with regard to
effort, productivity and satisfaction, although quality in MDD is more robust to small variations in
problem complexity. We discuss possible explanations for these results.
Conclusions: For small systems and less programming-experienced subjects, MDD does not always yield
better results than a traditional method, even regarding effort and productivity. This contradicts some
previous statements about MDD advantages. The benefits of developing a system with MDD appear to
depend on certain characteristics of the development context.
2015 Elsevier B.V. All rights reserved.This work was developed with the support of the Spanish Ministry of Science and Innovation project SMART ADAPT (TIN2013-42981-P), TIN2011-23216 and was co-financed by ERDF. It also has the support of Generalitat Valenciana-funded IDEO project (PROMETEOII/2014/039) and UV (UV-INV-PRECOMP13-115032).Panach Navarrete, JI.; España Cubillo, S.; Dieste, O.; Pastor López, O.; Juristo Juzgado, N. (2015). In Search of Evidence for Model-Driven Development Claims: An Experiment on Quality, Effort, Productivity and Satisfaction. Information and Software Technology. 62:164-186. https://doi.org/10.1016/j.infsof.2015.02.012S1641866
NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring
Non-intrusive load monitoring, or energy disaggregation, aims to separate
household energy consumption data collected from a single point of measurement
into appliance-level consumption data. In recent years, the field has rapidly
expanded due to increased interest as national deployments of smart meters have
begun in many countries. However, empirically comparing disaggregation
algorithms is currently virtually impossible. This is due to the different data
sets used, the lack of reference implementations of these algorithms and the
variety of accuracy metrics employed. To address this challenge, we present the
Non-intrusive Load Monitoring Toolkit (NILMTK); an open source toolkit designed
specifically to enable the comparison of energy disaggregation algorithms in a
reproducible manner. This work is the first research to compare multiple
disaggregation approaches across multiple publicly available data sets. Our
toolkit includes parsers for a range of existing data sets, a collection of
preprocessing algorithms, a set of statistics for describing data sets, two
reference benchmark disaggregation algorithms and a suite of accuracy metrics.
We demonstrate the range of reproducible analyses which are made possible by
our toolkit, including the analysis of six publicly available data sets and the
evaluation of both benchmark disaggregation algorithms across such data sets.Comment: To appear in the fifth International Conference on Future Energy
Systems (ACM e-Energy), Cambridge, UK. 201
Reconfigurable middleware architectures for large scale sensor networks
Wireless sensor networks, in an effort to be energy efficient, typically lack the high-level abstractions of advanced programming languages. Though strong, the dichotomy between these two paradigms can be overcome. The SENSIX software framework, described in this dissertation, uniquely integrates constraint-dominated wireless sensor networks with the flexibility of object-oriented programming models, without violating the principles of either. Though these two computing paradigms are contradictory in many ways, SENSIX bridges them to yield a dynamic middleware abstraction unifying low-level resource-aware task reconfiguration and high-level object recomposition. Through the layered approach of SENSIX, the software developer creates a domain-specific sensing architecture by defining a customized task specification and utilizing object inheritance. In addition, SENSIX performs better at large scales (on the order of 1000 nodes or more) than other sensor network middleware which do not include such unified facilities for vertical integration
MuxViz: A Tool for Multilayer Analysis and Visualization of Networks
Multilayer relationships among entities and information about entities must
be accompanied by the means to analyze, visualize, and obtain insights from
such data. We present open-source software (muxViz) that contains a collection
of algorithms for the analysis of multilayer networks, which are an important
way to represent a large variety of complex systems throughout science and
engineering. We demonstrate the ability of muxViz to analyze and interactively
visualize multilayer data using empirical genetic, neuronal, and transportation
networks. Our software is available at https://github.com/manlius/muxViz.Comment: 18 pages, 10 figures (text of the accepted manuscript
- …