@article {HKF17,
	title = {Empirical Evaluation of Software Maintainability Based on a Manually Validated Refactoring Dataset},
	journal = {Information and Software Technology},
	volume = {95},
	year = {2018},
	note = {Accepted, to appear.},
	month = {nov},
	chapter = {313},
	abstract = {Context: Refactoring is a technique for improving the internal structure of software systems. It has a solid theoretical background while being used in development practice also. However, we lack empirical research results on the real effect of code refactoring and its application. Objective: This paper presents a manually validated subset of a previously published dataset containing the refactorings extracted by the RefFinder tool, code metrics, and maintainability of 7 open-source systems. We found that RefFinder had around 27\% overall average precision on the subject systems, thus our manually validated subset has substantial added value. Using the dataset, we studied several aspects of the refactored and non-refactored source code elements (classes and methods), like the differences in their maintainability and source code metrics. Method: We divided the source code elements into a group containing the refactored elements and a group with non-refactored elements. We analyzed the elements{\textquoteright} characteristics in these groups using correlation analysis, Mann-Whitney U test and effect size measures. Results: Source code elements subjected to refactorings had significantly lower maintainability than elements not affected by refactorings. Moreover, refactored elements had significantly higher size related metrics, complexity, and coupling. Also these metrics changed more significantly in the refactored elements. The results are mostly in line with our previous findings on the not validated dataset, with the difference that clone metrics had no strong connection with refactoring. Conclusions: Compared to the preliminary analysis using a not validated dataset, the manually validated dataset led to more significant results, which suggests that developers find targets for refactorings based on some internal quality properties of the source code, like their size, complexity or coupling, but not clone related metrics as reported in our previous studies. They do not just use these properties for identifying targets, but also control them with refactorings.},
	keywords = {Code refactoring, Empirical study, Manually validated empirical dataset, Software maintainability, Source code metrics},
	issn = {0950-5849},
	doi = {10.1016/j.infsof.2017.11.012},
	url = {http://www.sciencedirect.com/science/article/pii/S0950584916303561},
	author = {P Heged{\H u}s and K{\'a}d{\'a}r, Istv{\'a}n and Rudolf Ferenc and Tibor Gyim{\'o}thy}
}
@article {SAN17,
	title = {Empirical Study on Refactoring Large-scale Industrial Systems and Its Effects on Maintainability},
	journal = {Journal of Systems and Software},
	volume = {129},
	number = {C},
	year = {2017},
	month = {jul},
	pages = {107{\textendash}126},
	abstract = {We examine hundreds of manual refactoring commits from large-scale industrial systems.We study the effects of these commits on source code using a maintainability model.Developers preferred to fix concrete coding issues rather than fix code smells.A single refactoring had only a small impact (sometimes even negative effect).Whole refactoring process has significant beneficial effect on the maintainability. Software evolves continuously, it gets modified, enhanced, and new requirements always arise. If we do not spend time occasionally on improving our source code, its maintainability will inevitably decrease. The literature tells us that we can improve the maintainability of a software system by regularly refactoring it. But does refactoring really increase software maintainability? Can it happen that refactoring decreases the maintainability? Empirical studies show contradicting answers to these questions and there have been only a few studies which were performed in a large-scale, industrial context. In our paper, we assess these questions in an in vivo context, where we analyzed the source code and measured the maintainability of 6 large-scale, proprietary software systems in their manual refactoring phase. We analyzed 2.5 million lines of code and studied the effects on maintainability of 315 refactoring commits which fixed 1273 coding issues. We found that single refactorings only make a very little difference (sometimes even decrease maintainability), but a whole refactoring period, in general, can significantly increase maintainability, which can result not only in the local, but also in the global improvement of the code.},
	keywords = {Antipatterns, coding issues, ISO/IEC 25010, maintainability, refactoring, select:quality, software quality},
	issn = {0164-1212},
	doi = {10.1016/j.jss.2016.08.071},
	url = {http://www.sciencedirect.com/science/article/pii/S0164121216301558?via\%3Dihub},
	author = {Sz{\H o}ke, G{\'a}bor and Antal, G{\'a}bor and Csaba Nagy and Rudolf Ferenc and Tibor Gyim{\'o}thy}
}
@conference {GBS16,
	title = {Enforcing Techniques and Transformation of {C/C++} Source Code to Heterogeneous Hardware},
	booktitle = {Proceedings of the 16th IEEE International Conference on Scalable Computing and Communication (ScalCom 2016)},
	year = {2016},
	month = {jul},
	pages = {1173{\textendash}1180},
	publisher = {IEEE Computer Society},
	organization = {IEEE Computer Society},
	address = {Toulouse, France},
	abstract = {Besides well-known CPU based architectures, the so-called accelerators (GPU, DSP, FPGA) are about to gain ground in everyday programming, computing tasks. However, programming such computation units is quite different from traditional programming for CPUs, and special skills are required from the developers. In this paper we present techniques, tooling support for the developers in the first step of re-engineering for parallelism in heterogeneous parallel platforms, namely to assure that the code to be offloaded to an accelerator conforms to its specific requirements by identifying the possible violations in the source code, and also by providing automatic code transformations for their elimination.},
	keywords = {C/C++, Cevelop, code transformation, Eclipse CDT, heterogeneous hardware, REPARA, Static Analysis},
	doi = {10.1109/UIC-ATC-ScalCom-CBDCom-IoP-SmartWorld.2016.0180},
	url = {http://ieeexplore.ieee.org/document/7816976/},
	author = {Gyimesi, G{\'a}bor and D{\'e}nes B{\'a}n and Istv{\'a}n Siket and Rudolf Ferenc and Brugnoni, Silvano and Corbat, Thomas and Sommerlad, Peter and Suter, Toni}
}
@conference {FGF06,
	title = {{Evaluating C++ Design Pattern Miner Tools}},
	booktitle = {Proceedings of the 6th International Workshop on Source Code Analysis and Manipulation (SCAM 2006)},
	year = {2006},
	month = {sep},
	pages = {127-138},
	publisher = {IEEE Computer Society},
	organization = {IEEE Computer Society},
	author = {F{\"u}l{\"o}p, L.J. and T. Gyovai and Rudolf Ferenc}
}
@conference {GFS05,
	title = {{Empirical Validation of Object-Oriented Metrics on Open Source Software for Fault Prediction}},
	booktitle = {IEEE Transactions on Software Engineering},
	volume = {31},
	number = {10},
	year = {2005},
	month = {oct},
	pages = {897-910},
	publisher = {IEEE Computer Society},
	organization = {IEEE Computer Society},
	keywords = {relate:quality, software quality selected},
	author = {Tibor Gyim{\'o}thy and Rudolf Ferenc and Istv{\'a}n Siket}
}
@conference {FSG04,
	title = {{Extracting Facts from Open Source Software}},
	booktitle = {Proceedings of the 20th International Conference on Software Maintenance (ICSM 2004)},
	year = {2004},
	month = {sep},
	pages = {60-69},
	publisher = {IEEE Computer Society},
	organization = {IEEE Computer Society},
	author = {Rudolf Ferenc and Istv{\'a}n Siket and Tibor Gyim{\'o}thy}
}
@conference {FBG04,
	title = {{Extracting Facts with Columbus from C++ Code}},
	booktitle = {Tool Demonstrations of the 8th European Conference on Software Maintenance and Reengineering (CSMR 2004)},
	year = {2004},
	month = {mar},
	pages = {4-8},
	author = {Rudolf Ferenc and {\'A}rp{\'a}d Besz{\'e}des and Tibor Gyim{\'o}thy}
}
@booklet {Beszedes_anevaluation,
	title = {An Evaluation of Reverse Engineering Capabilities of the {TDE/Columbus} system},
	year = {1999},
	author = {{\'A}rp{\'a}d Besz{\'e}des and Rudolf Ferenc and Tibor Gyim{\'o}thy and F. Magyar and G. M{\'a}rton and M. Tarkianen}
}
