1,488 research outputs found
Model Transformation Languages with Modular Information Hiding
Model transformations, together with models, form the principal artifacts in model-driven software development. Industrial practitioners report that transformations on larger models quickly get sufficiently large and complex themselves. To alleviate entailed maintenance efforts, this thesis presents a modularity concept with explicit interfaces, complemented by software visualization and clustering techniques. All three approaches are tailored to the specific needs of the transformation domain
A research review of quality assessment for software
Measures were recommended to assess the quality of software submitted to the AdaNet program. The quality factors that are important to software reuse are explored and methods of evaluating those factors are discussed. Quality factors important to software reuse are: correctness, reliability, verifiability, understandability, modifiability, and certifiability. Certifiability is included because the documentation of many factors about a software component such as its efficiency, portability, and development history, constitute a class for factors important to some users, not important at all to other, and impossible for AdaNet to distinguish between a priori. The quality factors may be assessed in different ways. There are a few quantitative measures which have been shown to indicate software quality. However, it is believed that there exists many factors that indicate quality and have not been empirically validated due to their subjective nature. These subjective factors are characterized by the way in which they support the software engineering principles of abstraction, information hiding, modularity, localization, confirmability, uniformity, and completeness
Refining ChatGPT-Generated Code: Characterizing and Mitigating Code Quality Issues
In this paper, we systematically study the quality of 4,066 ChatGPT-generated
code implemented in two popular programming languages, i.e., Java and Python,
for 2,033 programming tasks. The goal of this work is three folds. First, we
analyze the correctness of ChatGPT on code generation tasks and uncover the
factors that influence its effectiveness, including task difficulty,
programming language, time that tasks are introduced, and program size. Second,
we identify and characterize potential issues with the quality of
ChatGPT-generated code. Last, we provide insights into how these issues can be
mitigated. Experiments highlight that out of 4,066 programs generated by
ChatGPT, 2,757 programs are deemed correct, 1,081 programs provide wrong
outputs, and 177 programs contain compilation or runtime errors. Additionally,
we further analyze other characteristics of the generated code through static
analysis tools, such as code style and maintainability, and find that 1,933
ChatGPT-generated code snippets suffer from maintainability issues.
Subsequently, we investigate ChatGPT's self-debugging ability and its
interaction with static analysis tools to fix the errors uncovered in the
previous step. Experiments suggest that ChatGPT can partially address these
challenges, improving code quality by more than 20%, but there are still
limitations and opportunities for improvement. Overall, our study provides
valuable insights into the current limitations of ChatGPT and offers a roadmap
for future research and development efforts to enhance the code generation
capabilities of AI models like ChatGPT
C to O-O Translation: Beyond the Easy Stuff
Can we reuse some of the huge code-base developed in C to take advantage of
modern programming language features such as type safety, object-orientation,
and contracts? This paper presents a source-to-source translation of C code
into Eiffel, a modern object-oriented programming language, and the supporting
tool C2Eif. The translation is completely automatic and supports the entire C
language (ANSI, as well as many GNU C Compiler extensions, through CIL) as used
in practice, including its usage of native system libraries and inlined
assembly code. Our experiments show that C2Eif can handle C applications and
libraries of significant size (such as vim and libgsl), as well as challenging
benchmarks such as the GCC torture tests. The produced Eiffel code is
functionally equivalent to the original C code, and takes advantage of some of
Eiffel's object-oriented features to produce safe and easy-to-debug
translations
Model Transformation Languages with Modular Information Hiding
Model transformations, together with models, form the principal artifacts in model-driven software development. Industrial practitioners report that transformations on larger models quickly get sufficiently large and complex themselves. To alleviate entailed maintenance efforts, this thesis presents a modularity concept with explicit interfaces, complemented by software visualization and clustering techniques. All three approaches are tailored to the specific needs of the transformation domain
- …