103 research outputs found
Code Review Practices for Refactoring Changes: An Empirical Study on OpenStack
Modern code review is a widely used technique employed in both industrial and open-source projects to improve software quality, share knowledge, and ensure adherence to coding standards and guidelines. During code review, developers may discuss refactoring activities before merging code changes in the code base. To date, code review has been extensively studied to explore its general challenges, best practices and outcomes, and socio-technical aspects. However, little is known about how refactoring is being reviewed and what developers care about when they review refactored code. Hence, in this work, we present a quantitative and qualitative study to understand what are the main criteria developers rely on to develop a decision about accepting or rejecting a submitted refactored code, and what makes this process challenging. Through a case study of 11,010 refactoring and non-refactoring reviews spread across OpenStack open-source projects, we find that refactoring-related code reviews take significantly longer to be resolved in terms of code review efforts. Moreover, upon performing a thematic analysis on a significant sample of the refactoring code review discussions, we built a comprehensive taxonomy consisting of 28 refactoring review criteria. We envision our findings reaffirming the necessity of developing accurate and efficient tools and techniques that can assist developers in the review process in the presence of refactorings
Model-Driven Engineering in the Large: Refactoring Techniques for Models and Model Transformation Systems
Model-Driven Engineering (MDE) is a software engineering paradigm that
aims to increase the productivity of developers by raising the
abstraction level of software development. It envisions the use of
models as key artifacts during design, implementation and deployment.
From the recent arrival of MDE in large-scale industrial software
development – a trend we refer to as MDE in the large –, a set of
challenges emerges: First, models are now developed at distributed
locations, by teams of teams. In such highly collaborative settings, the
presence of large monolithic models gives rise to certain issues, such
as their proneness to editing conflicts. Second, in large-scale system
development, models are created using various domain-specific modeling
languages. Combining these models in a disciplined manner calls for
adequate modularization mechanisms. Third, the development of models is
handled systematically by expressing the involved operations using model
transformation rules. Such rules are often created by cloning, a
practice related to performance and maintainability issues.
In this thesis, we contribute three refactoring techniques, each aiming
to tackle one of these challenges. First, we propose a technique to
split a large monolithic model into a set of sub-models. The aim of this
technique is to enable a separation of concerns within models, promoting
a concern-based collaboration style: Collaborators operate on the
submodels relevant for their task at hand. Second, we suggest a
technique to encapsulate model components by introducing modular
interfaces in a set of related models. The goal of this technique is to
establish modularity in these models. Third, we introduce a refactoring
to merge a set of model transformation rules exhibiting a high degree of
similarity. The aim of this technique is to improve maintainability and
performance by eliminating the drawbacks associated with cloning. The
refactoring creates variability-based rules, a novel type of rule
allowing to capture variability by using annotations.
The refactoring techniques contributed in this work help to reduce the
manual effort during the refactoring of models and transformation rules
to a large extent. As indicated in a series of realistic case studies,
the output produced by the techniques is comparable or, in the case of
transformation rules, partly even preferable to the result of manual
refactoring, yielding a promising outlook on the applicability in
real-world settings
Fundamental Approaches to Software Engineering
This open access book constitutes the proceedings of the 23rd International Conference on Fundamental Approaches to Software Engineering, FASE 2020, which took place in Dublin, Ireland, in April 2020, and was held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2020. The 23 full papers, 1 tool paper and 6 testing competition papers presented in this volume were carefully reviewed and selected from 81 submissions. The papers cover topics such as requirements engineering, software architectures, specification, software quality, validation, verification of functional and non-functional properties, model-driven development and model transformation, software processes, security and software evolution
Fundamental Approaches to Software Engineering
computer software maintenance; computer software selection and evaluation; formal logic; formal methods; formal specification; programming languages; semantics; software engineering; specifications; verificatio
Integration of Quality Attributes in Software Product Line Development
Different
approaches
for
building
modern
software
systems
in
complex
and
open
environments
have
been
proposed
in
the
last
few
years.
Some
efforts
try
to
apply
Software
Product
Line
(SPL)
approach
to
take
advantage
of
the
massive
reuse
for
producing
software
systems
that
share
a
common
set
of
features.
In
general
quality
assurance
is
a
crucial
activity
for
success
in
software
industry,
but
it
is
even
more
important
when
talking
about
Software
Product
Lines
since
the
intensive
reuse
of
assets
makes
the
quality
attributes
(a
measurable
physical
or
abstract
property
of
an
entity)
of
the
assets
to
be
transmitted
to
the
whole
SPL
scope.
However,
despite
the
importance
that
quality
has
in
software
product
line
development,
most
of
the
methodologies
being
applied
in
Software
Product
Line
Development
focus
only
on
managing
the
commonalities
and
variability
within
the
product
line
and
not
giving
support
to
the
non--Âż
functional
requirements
that
the
products
must
fit.
The
main
goal
of
this
master
final
work
is
to introduce
quality
attributes
in
early
stages
of
software
product
line
development
processes
by
means
of
the
definition
of
a
production
plan
that,
on
one
hand,
integrates
quality
as
an
additional
view
for
describing
the
extension
of
the
software
product
line
and,
on
the
other
hand
introduces
the
quality
attributes
as
a
decision
factor
during
product
configuration
and
when
selecting
among
design
alternatives.
Our
approach
has
been
defined
following
the
Model--Âż
Driven
Software
Development
paradigm.
Therefore
all
the
software
artifacts
defined
had
its
correspondent
metamodels
and
the
processes
defined
rely
on
automated
model
transformations.
Finally
in
order
to
illustrate
the
feasibility
of
the
approach
we
have
integrated
the
quality
view
in
an
SPL
example
in
the
context
of
safety
critical
embedded
systems
on
the
automotive
domain.González Huerta, J. (2011). Integration of Quality Attributes in Software Product Line Development. http://hdl.handle.net/10251/15835Archivo delegad
Recommended from our members
Galois : a system for parallel execution of irregular algorithms
textA programming model which allows users to program with high productivity and which produces high performance executions has been a goal for decades. This dissertation makes progress towards this elusive goal by describing the design and implementation of the Galois system, a parallel programming model for shared-memory, multicore machines. Central to the design is the idea that scheduling of a program can be decoupled from the core computational operator and data structures. However, efficient programs often require application-specific scheduling to achieve best performance. To bridge this gap, an extensible and abstract scheduling policy language is proposed, which allows programmers to focus on selecting high-level scheduling policies while delegating the tedious task of implementing the policy to a scheduler synthesizer and runtime system. Implementations of deterministic and prioritized scheduling also are described. An evaluation of a well-studied benchmark suite reveals that factoring programs into operators, schedulers and data structures can produce significant performance improvements over unfactored approaches. Comparison of the Galois system with existing programming models for graph analytics shows significant performance improvements, often orders of magnitude more, due to (1) better support for the restrictive programming models of existing systems and (2) better support for more sophisticated algorithms and scheduling, which cannot be expressed in other systems.Computer Science
- …