1,812 research outputs found
Detect Related Bugs from Source Code Using Bug Information
Open source projects often maintain open bug repositories during development
and maintenance, and the reporters often point out straightly or implicitly the
reasons why bugs occur when they submit them. The comments about a bug are very
valuable for developers to locate and fix the bug. Meanwhile, it is very common
in large software for programmers to override or overload some methods
according to the same logic. If one method causes a bug, it is obvious that
other overridden or overloaded methods maybe cause related or similar bugs. In
this paper, we propose and implement a tool Rebug- Detector, which detects
related bugs using bug information and code features. Firstly, it extracts bug
features from bug information in bug repositories; secondly, it locates bug
methods from source code, and then extracts code features of bug methods;
thirdly, it calculates similarities between each overridden or overloaded
method and bug methods; lastly, it determines which method maybe causes
potential related or similar bugs. We evaluate Rebug-Detector on an open source
project: Apache Lucene-Java. Our tool totally detects 61 related bugs,
including 21 real bugs and 10 suspected bugs, and it costs us about 15.5
minutes. The results show that bug features and code features extracted by our
tool are useful to find real bugs in existing projects.Comment: 10 pages, 5 figures, 4 tables conference; 2010 IEEE 34th Annual
Computer Software and Applications Conferenc
Owl Eyes: Spotting UI Display Issues via Visual Understanding
Graphical User Interface (GUI) provides a visual bridge between a software
application and end users, through which they can interact with each other.
With the development of technology and aesthetics, the visual effects of the
GUI are more and more attracting. However, such GUI complexity posts a great
challenge to the GUI implementation. According to our pilot study of
crowdtesting bug reports, display issues such as text overlap, blurred screen,
missing image always occur during GUI rendering on different devices due to the
software or hardware compatibility. They negatively influence the app
usability, resulting in poor user experience. To detect these issues, we
propose a novel approach, OwlEye, based on deep learning for modelling visual
information of the GUI screenshot. Therefore, OwlEye can detect GUIs with
display issues and also locate the detailed region of the issue in the given
GUI for guiding developers to fix the bug. We manually construct a large-scale
labelled dataset with 4,470 GUI screenshots with UI display issues and develop
a heuristics-based data augmentation method for boosting the performance of our
OwlEye. The evaluation demonstrates that our OwlEye can achieve 85% precision
and 84% recall in detecting UI display issues, and 90% accuracy in localizing
these issues. We also evaluate OwlEye with popular Android apps on Google Play
and F-droid, and successfully uncover 57 previously-undetected UI display
issues with 26 of them being confirmed or fixed so far.Comment: Accepted to 35th IEEE/ACM International Conference on Automated
Software Engineering (ASE 20
Automated Refactoring in Software Automation Platforms
Software Automation Platforms (SAPs) enable faster development and reduce the need
to use code to construct applications. SAPs provide abstraction and automation, result-
ing in a low-entry barrier for users with less programming skills to become proficient
developers. An unfortunate consequence of using SAPs is the production of code with a
higher technical debt since such developers are less familiar with the software develop-
ment best practices. Hence, SAPs should aim to produce a simpler software construction
and evolution pipeline beyond providing a rapid software development environment.
One simple example of such high technical debt is the Unlimited Records anti-pattern,
which occurs whenever queries are unbounded, i.e. the maximum number of records to be
fetched is not explicitly limited. Limiting the number of records retrieved may, in many
cases, improve the performance of applications by reducing screen-loading time, thus
making applications faster and more responsive, which is a top priority for developers. A
second example is the Duplicated Code anti-pattern that severely affects code readability
and maintainability, and can even be the cause of bug propagation. To overcome this
problem we will resort to automated refactoring as it accelerates the refactoring process
and provides provably correct modifications.
This dissertation aims to study and develop a solution for automated refactorings in
the context of OutSystems (an industry-leading SAP). This was carried out by implement-
ing automated techniques for automatically refactoring a set of selected anti-patterns in
OutSystems logic that are currently detected by the OutSystems technical debt monitor-
ing tool.As Plataformas de Automação de Software (PAS) habilitam os seus utilizadores a desen-
volver aplicações de forma mais rápida e reduzem a necessidade de escrever código. Estas
fornecem abstração e automação, o que auxilia utilizadores com menos formação técnica a
tornarem-se programadores proficientes. No entanto, a integração de programadores com
menos formação técnica também contribui para a produção de código com alta dívida
técnica, uma vez que os mesmos estão menos familiarizados com as melhores práticas
de desenvolvimento de software. Desta forma, as PAS devem ter como objetivo a cons-
trução e evolução de software de forma simples para além de fornecer um ambiente de
desenvolvimento de software rápido.
Um exemplo de alta dívida técnica é o anti-padrão Unlimited Records, que ocorre
sempre que o número máximo de registos a ser retornado por uma consulta à base de
dados não é explicitamente limitado. Limitar o número de registos devolvidos pode, em
muitos casos, melhorar o desempenho das aplicações, reduzindo o tempo que demora a
carregar o ecrã, tornando assim as aplicações mais rápidas e responsivas, sendo esta uma
das principais prioridades dos programadores. Um segundo exemplo é o anti-padrão
Código Duplicado que afeta gravemente a legibilidade e manutenção do código, e que
pode causar a propagação de erros. Para superar este problema, recorreremos à reestru-
turação automatizada, pois acelera o processo de reestruturação através de modificações
comprovadamente corretas.
O objetivo desta dissertação é estudar e desenvolver uma solução para reestruturação
automatizada no contexto da OutSystems (uma PAS líder neste setor). Tal foi realizado
através da implementação de técnicas automatizadas para reestruturar um conjunto de
anti-padrões que são atualmente detetados pela ferramenta de monitorização de dívida
técnica da OutSystems
- …