23 research outputs found
PROCESSOS, MÉTODOS E PRÁTICAS DE ENGENHARIA DE SOFTWARE EM PROJETOS SOFTWARE LIVRE: UM ESTUDO DE CASO OWNCLOUD E NEXTCLOUD
Software Engineering practices aim to improve the softwares quality, which includes Open Source Software (OSS). This work aims to identify software engineering practices in the OSS projects OwnCloud e Nextcloud. We perform a scientific literature review, using digital databases such as the Google Scholar and CAPES Periodic Portal, and also search using the gray literature. We conclude that good practices of software engineering are applied into both cloud storage projects OwnCloud and Nextcloud. However, we found that the major focus is still on coding, and therefore, other development processes, such as documentation, effective control of change management and quality management processes, should receive more emphasis.As práticas da Engenharia de Software (ES) têm por fundamento tentar melhorar a qualidade dos softwares, nos quais se incluem os Open Source Software (OSS). O objetivo deste trabalho é identificar as práticas da ES implementadas nos projetos OSS OwnCloud e Nextcloud. Para tanto, realizou-se uma revisão da literatura científica, a partir de diferentes bases de dados digitais, bem como foi considerada a literatura cinza. Foi concludo que os projetos de armazenamento em nuvem OwnCloud e Nextcloud adotam boas práticas de engenharia de software. Porém, foi constatado que, o maior foco é ainda na codificação, e que, portanto, os demais processos do desenvolvimento, como as documentações, controle efetivo do gerenciamento das mudanças e processos de gestão da qualidade, devem receber mais ênfas
PROCESSOS, MÉTODOS E PRÁTICAS DE ENGENHARIA DE SOFTWARE EM PROJETOS SOFTWARE LIVRE: UM ESTUDO DE CASO OWNCLOUD E NEXTCLOUD
Software Engineering practices aim to improve the softwares quality, which includes Open Source Software (OSS). This work aims to identify software engineering practices in the OSS projects OwnCloud e Nextcloud. We perform a scientific literature review, using digital databases such as the Google Scholar and CAPES Periodic Portal, and also search using the gray literature. We conclude that good practices of software engineering are applied into both cloud storage projects OwnCloud and Nextcloud. However, we found that the major focus is still on coding, and therefore, other development processes, such as documentation, effective control of change management and quality management processes, should receive more emphasis.As práticas da Engenharia de Software (ES) têm por fundamento tentar melhorar a qualidade dos softwares, nos quais se incluem os Open Source Software (OSS). O objetivo deste trabalho é identificar as práticas da ES implementadas nos projetos OSS OwnCloud e Nextcloud. Para tanto, realizou-se uma revisão da literatura científica, a partir de diferentes bases de dados digitais, bem como foi considerada a literatura cinza. Foi concludo que os projetos de armazenamento em nuvem OwnCloud e Nextcloud adotam boas práticas de engenharia de software. Porém, foi constatado que, o maior foco é ainda na codificação, e que, portanto, os demais processos do desenvolvimento, como as documentações, controle efetivo do gerenciamento das mudanças e processos de gestão da qualidade, devem receber mais ênfas
CodeTF: One-stop Transformer Library for State-of-the-art Code LLM
Code intelligence plays a key role in transforming modern software
engineering. Recently, deep learning-based models, especially Transformer-based
large language models (LLMs), have demonstrated remarkable potential in
tackling these tasks by leveraging massive open-source code data and
programming language features. However, the development and deployment of such
models often require expertise in both machine learning and software
engineering, creating a barrier for the model adoption. In this paper, we
present CodeTF, an open-source Transformer-based library for state-of-the-art
Code LLMs and code intelligence. Following the principles of modular design and
extensible framework, we design CodeTF with a unified interface to enable rapid
access and development across different types of models, datasets and tasks.
Our library supports a collection of pretrained Code LLM models and popular
code benchmarks, including a standardized interface to train and serve code
LLMs efficiently, and data features such as language-specific parsers and
utility functions for extracting code attributes. In this paper, we describe
the design principles, the architecture, key modules and components, and
compare with other related library tools. Finally, we hope CodeTF is able to
bridge the gap between machine learning/generative AI and software engineering,
providing a comprehensive open-source solution for developers, researchers, and
practitioners.Comment: Ongoing work - Draft Previe
Understanding Solidity Event Logging Practices in the Wild
Writing logging messages is a well-established conventional programming
practice, and it is of vital importance for a wide variety of software
development activities. The logging mechanism in Solidity programming is
enabled by the high-level event feature, but up to now there lacks study for
understanding Solidity event logging practices in the wild. To fill this gap,
we in this paper provide the first quantitative characteristic study of the
current Solidity event logging practices using 2,915 popular Solidity projects
hosted on GitHub. The study methodically explores the pervasiveness of event
logging, the goodness of current event logging practices, and in particular the
reasons for event logging code evolution, and delivers 8 original and important
findings. The findings notably include the existence of a large percentage of
independent event logging code modifications, and the underlying reasons for
different categories of independent event logging code modifications are
diverse (for instance, bug fixing and gas saving). We additionally give the
implications of our findings, and these implications can enlighten developers,
researchers, tool builders, and language designers to improve the event logging
practices. To illustrate the potential benefits of our study, we develop a
proof-of-concept checker on top of one of our findings and the checker
effectively detects problematic event logging code that consumes extra gas in
35 popular GitHub projects and 9 project owners have already confirmed the
detected issues.Comment: Accepted by 31st ACM Joint European Software Engineering Conference
and Symposium on the Foundations of Software Engineering (ESEC/FSE'23
Go Static: Contextualized Logging Statement Generation
Logging practices have been extensively investigated to assist developers in
writing appropriate logging statements for documenting software behaviors.
Although numerous automatic logging approaches have been proposed, their
performance remains unsatisfactory due to the constraint of the single-method
input, without informative programming context outside the method.
Specifically, we identify three inherent limitations with single-method
context: limited static scope of logging statements, inconsistent logging
styles, and missing type information of logging variables. To tackle these
limitations, we propose SCLogger, the first contextualized logging statement
generation approach with inter-method static contexts. First, SCLogger extracts
inter-method contexts with static analysis to construct the contextualized
prompt for language models to generate a tentative logging statement. The
contextualized prompt consists of an extended static scope and sampled similar
methods, ordered by the chain-of-thought (COT) strategy. Second, SCLogger
refines the access of logging variables by formulating a new refinement prompt
for language models, which incorporates detailed type information of variables
in the tentative logging statement. The evaluation results show that SCLogger
surpasses the state-of-the-art approach by 8.7% in logging position accuracy,
32.1% in level accuracy, 19.6% in variable precision, and 138.4% in text BLEU-4
score. Furthermore, SCLogger consistently boosts the performance of logging
statement generation across a range of large language models, thereby
showcasing the generalizability of this approach.Comment: This paper was accepted by The ACM International Conference on the
Foundations of Software Engineering (FSE 2024
Characterizing and Detecting Duplicate Logging Code Smells
Developers rely on software logs for a wide variety of tasks, such as debugging, testing, program comprehension, verification, and performance analysis. Despite the importance of logs, prior studies show that there is no industrial standard on how to write logging statements. Recent research on logs often only considers the appropriateness of a log as an individual item (e.g., one single logging statement); while logs are typically analyzed in tandem. In this thesis, we focus on studying duplicate logging statements, which are logging statements that have the same static text message. Such duplications in the text message are potential indications of logging code smells, which may affect developers’ understanding of the dynamic view of the system. We manually studied over 3K duplicate logging statements and their surrounding code in four large-scale open source systems: Hadoop, CloudStack, ElasticSearch, and Cassandra. We uncovered five patterns of duplicate logging code smells. For each instance of the code smell, we further manually identify the problematic (i.e., require fixes) and justifiable (i.e., do not require fixes) cases. Then, we contact developers in order to verify our manual study result. We integrated our manual study result and developers’ feedback into our automated static analysis tool, DLFinder, which automatically detects problematic duplicate logging code smells. We evaluated DLFinder on the four manually studied systems and four additional systems: Kafka, Flink, Camel and Wicket. In total, combining the results of DLFinder and our manual analysis, we reported 91 problematic code smell instances to developers and all of them have been fixed. This thesis provides an initial step on creating a logging guideline for developers to improve the quality of logging code. DLFinder is also able to detect duplicate logging code smells with high precision and recall
Quality Properties of Execution Tracing, an Empirical Study
The authors are grateful to all the professionals who participated in the focus
groups; moreover, they also express special thanks to the management of the companies involved for
making the organisation of the focus groups possible.Data are made available in the appendix including the results of the
data coding process.The quality of execution tracing impacts the time to a great extent to locate errors in software components; moreover, execution tracing is the most suitable tool, in the majority of the cases, for doing postmortem analysis of failures in the field. Nevertheless, software product quality models do not adequately consider execution tracing quality at present neither do they define the quality properties of this important entity in an acceptable manner. Defining these quality properties would be the first step towards creating a quality model for execution tracing. The current research fills this gap by identifying and defining the variables, i.e., the quality properties, on the basis of which the quality of execution tracing can be judged. The present study analyses the experiences of software professionals in focus groups at multinational companies, and also scrutinises the literature to elicit the mentioned quality properties. Moreover, the present study also contributes to knowledge with the combination of methods while computing the saturation point for determining the number of the necessary focus groups. Furthermore, to pay special attention to validity, in addition to the the indicators of qualitative research: credibility, transferability, dependability, and confirmability, the authors also considered content, construct, internal and external validity