scispace - formally typeset
Search or ask a question
Author

Mariza A. S. Bigonha

Bio: Mariza A. S. Bigonha is an academic researcher from Universidade Federal de Minas Gerais. The author has contributed to research in topics: Software metric & Software system. The author has an hindex of 9, co-authored 46 publications receiving 365 citations.

Papers
More filters
Journal ArticleDOI
TL;DR: The results of a study on the structure of a large collection of open-source programs developed in Java indicate that the proposed thresholds can support the identification of classes which violate design principles, as well as the Identification of well-designed classes.

159 citations

Journal ArticleDOI
TL;DR: It is envisioned that an heuristic-based approach based on a combination of static and historical source code analysis can be used to rapidly raise architectural warnings, without deeply involving experts in the process.
Abstract: Software architecture conformance is a key software quality control activity that aims to reveal the progressive gap normally observed between concrete and planned software architectures However, formally specifying an architecture can be difficult, as it must be done by an expert of the system having a high level understanding of it In this paper, we present a lightweighted approach for architecture conformance based on a combination of static and historical source code analysis The proposed approach relies on four heuristics for detecting absences (something expected was not found) and divergences (something prohibited was found) in source code based architectures We also present an architecture conformance process based on the proposed approach We followed this process to evaluate the architecture of two industrial-strength information systems, achieving an overall precision of 627 % and 538 % We also evaluated our approach in an open-source information retrieval library, achieving an overall precision of 592 % We envision that an heuristic-based approach for architecture conformance can be used to rapidly raise architectural warnings, without deeply involving experts in the process

24 citations

Proceedings ArticleDOI
21 Nov 2013
TL;DR: This paper presents ArchLint, a lightweight approach for architecture conformance based on a combination of static and historical source code analysis, which relies on four heuristics for detecting both absences and divergences in source code based architectures.
Abstract: Software architecture conformance is a key software quality control activity that aims to reveal the progressive gap normally observed between concrete and planned software architectures. In this paper, we present ArchLint, a lightweight approach for architecture conformance based on a combination of static and historical source code analysis. For this purpose, ArchLint relies on four heuristics for detecting both absences and divergences in source code based architectures. We applied ArchLint in an industrial-strength system and as a result we detected 119 architectural violations, with an overall precision of 46.7% and a recall of 96.2%, for divergences. We also evaluated ArchLint with four open-source systems, used in an independent study on reflexion models. In this second study, ArchLint achieved precision results ranging from 57.1% to 89.4%.

20 citations

Book ChapterDOI
26 Mar 2011
TL;DR: This paper uses range analysis to show that some operations cannot produce overflows in JavaScript programs, and linear in size and space on the number of instructions present in the input trace, and it is more effective than traditional range analyses.
Abstract: Trace compilation is a technique used by just-in-time (JIT) compilers such as TraceMonkey, the JavaScript engine in the Mozilla Firefox browser. Contrary to traditional JIT machines, a trace compiler works on only part of the source program, normally a linear path inside a heavily executed loop. Because the trace is compiled during the interpretation of the source program the JIT compiler has access to runtime values. This observation gives the compiler the possibility of producing binary code specialized to these values. In this paper we explore such opportunity to provide an analysis that removes unnecessary overflow tests from JavaScript programs. Our optimization uses range analysis to show that some operations cannot produce overflows. The analysis is linear in size and space on the number of instructions present in the input trace, and it is more effective than traditional range analyses, because we have access to values known only at execution time. We have implemented our analysis on top of Firefox's TraceMonkey, and have tested it on over 1000 scripts from several industrial strength benchmarks, including the scripts present in the top 100 most visited webpages in the Alexa index. We generate binaries to either x86 or the embedded microprocessor ST40-300. On the average, we eliminate 91.82% of the overflows in the programs present in the TraceMonkey test suite. This optimization provides an average code size reduction of 8.83% on ST40 and 6.63% on x86. Our optimization increases TraceMonkey's runtime by 2.53%.

18 citations

Journal ArticleDOI
TL;DR: Practical applications of metric thresholds to identify bad smells and predict faults and hence, support software quality assurance activities are suggested.
Abstract: Context Software metrics may be an effective tool to assess the quality of software, but to guide their use it is important to define their thresholds. Bad smells and fault also impact the quality of software. Extracting metrics from software systems is relatively low cost since there are tools widely used for this purpose, which makes feasible applying software metrics to identify bad smells and to predict faults. Objective To inspect whether thresholds of object-oriented metrics may be used to aid bad smells detection and fault predictions. Method To direct this research, we have defined three research questions (RQ), two related to identification of bad smells, and one for identifying fault in software systems. To answer these RQs, we have proposed detection strategies for the bad smells: Large Class, Long Method, Data Class, Feature Envy, and Refused Bequest, based on metrics and their thresholds. To assess the quality of the derived thresholds, we have made two studies. The first one was conducted to evaluate their efficacy on detecting these bad smells on 12 systems. A second study was conducted to investigate for each of the class level software metrics: DIT, LCOM, NOF, NOM, NORM, NSC, NSF, NSM, SIX, and WMC, if the ranges of values determined by thresholds are useful to identify fault in software systems. Results Both studies confirm that metric thresholds may support the prediction of faults in software and are significantly and effective in the detection of bad smells. Conclusion The results of this work suggest practical applications of metric thresholds to identify bad smells and predict faults and hence, support software quality assurance activities.Their use may help developers to focus their efforts on classes that tend to fail, thereby minimizing the occurrence of future problems.

15 citations


Cited by
More filters
Journal Article
TL;DR: AspectJ as mentioned in this paper is a simple and practical aspect-oriented extension to Java with just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns.
Abstract: Aspect] is a simple and practical aspect-oriented extension to Java With just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns. In AspectJ's dynamic join point model, join points are well-defined points in the execution of the program; pointcuts are collections of join points; advice are special method-like constructs that can be attached to pointcuts; and aspects are modular units of crosscutting implementation, comprising pointcuts, advice, and ordinary Java member declarations. AspectJ code is compiled into standard Java bytecode. Simple extensions to existing Java development environments make it possible to browse the crosscutting structure of aspects in the same kind of way as one browses the inheritance structure of classes. Several examples show that AspectJ is powerful, and that programs written using it are easy to understand.

2,947 citations

01 Jan 2016
TL;DR: In this paper, a guide to the theory of np completeness is given for downloading computers and intractability a guide for reading good books with a cup of tea in the afternoon, instead they juggled with some harmful bugs inside their desktop computer.
Abstract: Thank you for downloading computers and intractability a guide to the theory of np completeness. As you may know, people have search numerous times for their favorite books like this computers and intractability a guide to the theory of np completeness, but end up in harmful downloads. Rather than reading a good book with a cup of tea in the afternoon, instead they juggled with some harmful bugs inside their desktop computer.

286 citations

Proceedings ArticleDOI
27 May 2018
TL;DR: The most comprehensive oracle to date that uses triangulation to create a dataset with considerably reduced bias is created, finding that RMiner has a precision of 98% and recall of 87%, which is a significant improvement over the previous state-of-the-art refactoring detection tools.
Abstract: Refactoring detection algorithms have been crucial to a variety of applications: (i) empirical studies about the evolution of code, tests, and faults, (ii) tools for library API migration, (iii) improving the comprehension of changes and code reviews, etc. However, recent research has questioned the accuracy of the state-of-the-art refactoring detection tools, which poses threats to the reliability of their application. Moreover, previous refactoring detection tools are very sensitive to user-provided similarity thresholds, which further reduces their practical accuracy. In addition, their requirement to build the project versions/revisions under analysis makes them inapplicable in many real-world scenarios. To reinvigorate a previously fruitful line of research that has stifled, we designed, implemented, and evaluated RMiner, a technique that overcomes the above limitations. At the heart of RMiner is an AST-based statement matching algorithm that determines refactoring candidates without requiring user-defined thresholds. To empirically evaluate RMiner, we created the most comprehensive oracle to date that uses triangulation to create a dataset with considerably reduced bias, representing 3,188 refactorings from 185 open-source projects. Using this oracle, we found that RMiner has a precision of 98% and recall of 87%, which is a significant improvement over the previous state-of-the-art.

231 citations