8,273 research outputs found
Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
Programming languages and platforms improve over time, sometimes resulting in
new language features that offer many benefits. However, despite these
benefits, developers may not always be willing to adopt them in their projects
for various reasons. In this paper, we describe an empirical study where we
assess the adoption of a particular new language feature. Studying how
developers use (or do not use) new language features is important in
programming language research and engineering because it gives designers
insight into the usability of the language to create meaning programs in that
language. This knowledge, in turn, can drive future innovations in the area.
Here, we explore Java 8 default methods, which allow interfaces to contain
(instance) method implementations.
Default methods can ease interface evolution, make certain ubiquitous design
patterns redundant, and improve both modularity and maintainability. A focus of
this work is to discover, through a scientific approach and a novel technique,
situations where developers found these constructs useful and where they did
not, and the reasons for each. Although several studies center around assessing
new language features, to the best of our knowledge, this kind of construct has
not been previously considered.
Despite their benefits, we found that developers did not adopt default
methods in all situations. Our study consisted of submitting pull requests
introducing the language feature to 19 real-world, open source Java projects
without altering original program semantics. This novel assessment technique is
proactive in that the adoption was driven by an automatic refactoring approach
rather than waiting for developers to discover and integrate the feature
themselves. In this way, we set forth best practices and patterns of using the
language feature effectively earlier rather than later and are able to possibly
guide (near) future language evolution. We foresee this technique to be useful
in assessing other new language features, design patterns, and other
programming idioms
Closing the gap between guidance and practice, an investigation of the relevance of design guidance to practitioners using object-oriented technologies
This thesis investigates if object oriented guidance is relevant in practice, and how this affects software that is produced. This is achieved by surveying practitioners and studying how constructs such as interfaces and inheritance are used in open-source systems. Surveyed practitioners framed 'good design' in terms of impact on development and maintenance. Recognition of quality requires practitioner judgement (individually and as a group), and principles are valued over rules. Time constraints heighten sensitivity to the rework cost of poor design decisions. Examination of open source systems highlights the use of interface and inheritance. There is some evidence of 'textbook' use of these structures, and much use is simple. Outliers are widespread indicating a pragmatic approach. Design is found to reflect the pressures of practice - high-level decisions justify 'designed' structures and architecture, while uncertainty leads to deferred design decisions - simpler structures, repetition, and unconsolidated design. Sub-populations of structures can be identified which may represent common trade-offs. Useful insights are gained into practitioner attitude to design guidance. Patterns of use and structure are identified which may aid in assessment and comprehension of object oriented systems.This thesis investigates if object oriented guidance is relevant in practice, and how this affects software that is produced. This is achieved by surveying practitioners and studying how constructs such as interfaces and inheritance are used in open-source systems. Surveyed practitioners framed 'good design' in terms of impact on development and maintenance. Recognition of quality requires practitioner judgement (individually and as a group), and principles are valued over rules. Time constraints heighten sensitivity to the rework cost of poor design decisions. Examination of open source systems highlights the use of interface and inheritance. There is some evidence of 'textbook' use of these structures, and much use is simple. Outliers are widespread indicating a pragmatic approach. Design is found to reflect the pressures of practice - high-level decisions justify 'designed' structures and architecture, while uncertainty leads to deferred design decisions - simpler structures, repetition, and unconsolidated design. Sub-populations of structures can be identified which may represent common trade-offs. Useful insights are gained into practitioner attitude to design guidance. Patterns of use and structure are identified which may aid in assessment and comprehension of object oriented systems
Quantitative assessment of modularity of caesarJ components
Dissertação apresentada no âmbito do Mestrado em Engenharia Informática para obtenção do grau de Mestre em Engenharia InformáticaOs defensores do paradigma de programação orientada a aspectos afirmam que este paradigma oferece melhor modularidade que a programação orientada a objectos, assim como um melhor suporte para separação de facetas transversais. Embora o AspectJ seja a linguagem de AOP mais conhecida, e alvo de mais estudos, surgiram novas linguagens de programação que propõem diferentes formas de instanciar este paradigma. O CaesarJ é uma destas linguagens. Possui abstracções e mecanismos que o diferenciam do AspectJ, tais como classes virtuais, polimorfismo de família e uma maneira diferente de representar um aspecto.
Qualquer alegação de uma linguagem ser melhor, à luz de um critério bem definido (neste caso, a modularidade), tem que ser apoiada por avaliações rigorosas de implementações feitas nessa linguagem. Este trabalho pretende fazer isso com um estudo comparativo entre as duas linguagens em termos da modularidade que se obtém em software por elas implementado. Em particular, vai-se estudar uma faceta da modularidade: a coesão. Este estudo utiliza da estrutura padrão de relatórios experimentais em Engenharia de Software, assim como todos os testes estatísticos apropriados. Para este fim, foi desenvolvida uma métrica de coesão que foi usada, juntamente com várias métricas de tamanho para avaliar 51 exemplos de implementações de padrões de concepção. No contexto desta dissertação a ferramenta de recolha automática de métricas MuLATo foi adaptada para suportar esta nova métrica de coesão. Os resultados do estudo efectuado sugerem que o CaesarJ é mais verboso que Java mas contem componentes menos complexos e mais coesos
A modular modelling framework for hypotheses testing in the simulation of urbanisation
In this paper, we present a modelling experiment developed to study systems
of cities and processes of urbanisation in large territories over long time
spans. Building on geographical theories of urban evolution, we rely on
agent-based models to 1/ formalise complementary and alternative hypotheses of
urbanisation and 2/ explore their ability to simulate observed patterns in a
virtual laboratory. The paper is therefore divided into two sections : an
overview of the mechanisms implemented to represent competing hypotheses used
to simulate urban evolution; and an evaluation of the resulting model
structures in their ability to simulate - efficiently and parsimoniously - a
system of cities (the Former Soviet Union) over several periods of time (before
and after the crash of the USSR). We do so using a modular framework of
model-building and evolutionary algorithms for the calibration of several model
structures. This project aims at tackling equifinality in systems dynamics by
confronting different mechanisms with similar evaluation criteria. It enables
the identification of the best-performing models with respect to the chosen
criteria by scanning automatically the parameter along with the space of model
structures (as combinations of modelled dynamics).Comment: 21 pages, 3 figures, working pape
- …