Um estudo exploratório sobre a adoção de bibliotecas de interface gráfica de usuário em projetos de software livre - Ribeiro, Lucas Vinicius (2021)
Libraries are reusable software components designed to be used by anyone or any project other than the original developer of the library. Its use is important as it contributes to saving time and effort during the software development process. Research explores different aspects related to the use of software libraries, such as popularity, risks involved, evolutionary process and updates, criteria for developing good libraries, experts recommendation, among others. In the context of graphical user interfaces, a study found that 34% of the developed interfaces are supported by graphical user interface component libraries. However, despite the importance and relevance that libraries and graphical user interfaces have in software development processes, there are no studies, so far, that explore this scenario. Therefore, the objective of this research is to understand how occurs the adoption of graphical user interface libraries in open source software projects. To achieve this goal, the main user interface libraries of 6 programming languages were selected, namely C, C++, C#, Java, JavaScript and Python. Thus, regular expressions were defined for such libraries in order to identify their use in GitHub’s open source projects. Furthermore, the commits of such projects were mined in order to explore the relationship of the most popular libraries with other parts of the project’s source code. The results were statistically analyzed, having identified that the most popular libraries of their respective languages were Win32 (C), Qt (C++), WindowsForms (C#), AWT (Java), React (JavaScript) and PyQt (Python). It was also found that most of the commits that have changes in interface files using the most popular libraries, also have changes in les from other parts of the source code of the projects. Still, most of the commits observed have changes only to the project’s graphical user interface. Regarding the use of the Win32 library in C projects, it was not possible to verify whether the analyzed changes comprise the use of the library’s graphical user interface elements. Among the C++ projects that use the Qt library, it was observed that most of the changes comprise changes only in the project’s graphical user interface. For C# projects, which use the WindowsForms library, it was found that there is a low relationship between the library and other parts of the project. About Java projects, which use the AWT library, it was observed that changes involving the user interface also demand changes in other project features. As for JavaScript projects, using the React library, the results point to a relationship between user interfaces and the use of test cases. Finally, regarding Python projects, which use the PyQt library, it was found that there is a low relationship between the test library and files and the back-end of the projects.