276 research outputs found
Human-Centric Program Synthesis
Program synthesis techniques offer significant new capabilities in searching for programs that satisfy high-level specifications. While synthesis has been thoroughly explored for input/output pair specifications (programming-by-example), this paper asks: what does program synthesis look like beyond examples? What actual issues in day-to-day development would stand to benefit the most from synthesis? How can a human-centric perspective inform the exploration of alternative specification languages for synthesis? I sketch a human-centric vision for program synthesis where programmers explore and learn languages and APIs aided by a synthesis tool
Data Integration: a Case Study in the Financial Services Industry
Current economic conditions result in banks participating in multiple mergers and acquisitions. This results in banks inheriting silo and heterogeneous systems. For banks to remain competitive, they must create a strategy to integrate data from these acquired systems in a dynamic, efficient, and consumable manner. This research considers a case study of a large financial services company that has successfully integrated data from different sources. In addition this research investigates endeavors that experts in the field have undertaken to develop architectures that address the problems with data integration and appropriate solutions
TOWARD A LOGICAL/PHYSICAL THEORY OF SPREADSHEET MODELING
In spite of the increasing sophistication and power of commercial spreadsheet
packages, we still lack a formal theory or a methodology to support the construction
and maintenance of spreadsheet models. Using a dual logical/physical
perspective, we identify four principal components that characterize any spreadsheet
model: schema, data, editorial, and binding. We present a factoring
algorithm for identifying and extracting these components from conventional
spreadsheets with minimal user intervention, and a synthesis algorithm that assists
users in the construction of executable spreadsheets from reusable model
components. This approach opens new possibilities for applying object-oriented
and model management techniques to support the construction, sharing, and
reuse, of spreadsheet models in organizations. Importantly, our approach to
model management and the Windows-based prototype that we have developed
are designed to coexist with, rather than replace, traditional spreadsheet programs.
In other words, the users are not required to learn a new modeling
language; instead, their logical models and data sets are extracted from their
spreadsheets transparently, as a side-effect of using standard spreadsheet program.Information Systems Working Papers Serie
Model-based, event-driven programming paradigm for interactive web applications
Applications are increasingly distributed and event-driven. Advances in web frameworks have made it easier to program standalone servers and their clients, but these applications remain hard to write. A model-based programming paradigm is proposed that allows a programmer to represent a distributed application as if it were a simple sequential program, with atomic actions updating a single, shared global state. A runtime environment executes the program on a collection of clients and servers, automatically handling (and hiding from the programmer) complications such as network communication (including server push), serialization, concurrency and races, persistent storage of data, and queuing and coordination of events.National Science Foundation (U.S.) (Grant CCF-1138967)National Science Foundation (U.S.) (Grant CCF-1012759)National Science Foundation (U.S.) (Grant CCF-0746856
Towards multilingual programming environments
Software projects consist of different kinds of artifacts: build files, configuration files, markup files, source code in different software languages, and so on. At the same time, however, most integrated development environments (IDEs) are focused on a single (programming) language. Even if a programming environment supports multiple languages (e.g., Eclipse), IDE features such as cross-referencing, refactoring, or debugging, do not often cross language boundaries. What would it mean for programming environment to be truly multilingual? In this short paper we sketch a vision of a system that integrates IDE support across language boundaries. We propose to build this system on a foundation of unified source code models and metaprogramming. Nevertheless, a number of important and hard research questions still need to be addressed
Automated Refactoring in Software Automation Platforms
Software Automation Platforms (SAPs) enable faster development and reduce the need
to use code to construct applications. SAPs provide abstraction and automation, result-
ing in a low-entry barrier for users with less programming skills to become proficient
developers. An unfortunate consequence of using SAPs is the production of code with a
higher technical debt since such developers are less familiar with the software develop-
ment best practices. Hence, SAPs should aim to produce a simpler software construction
and evolution pipeline beyond providing a rapid software development environment.
One simple example of such high technical debt is the Unlimited Records anti-pattern,
which occurs whenever queries are unbounded, i.e. the maximum number of records to be
fetched is not explicitly limited. Limiting the number of records retrieved may, in many
cases, improve the performance of applications by reducing screen-loading time, thus
making applications faster and more responsive, which is a top priority for developers. A
second example is the Duplicated Code anti-pattern that severely affects code readability
and maintainability, and can even be the cause of bug propagation. To overcome this
problem we will resort to automated refactoring as it accelerates the refactoring process
and provides provably correct modifications.
This dissertation aims to study and develop a solution for automated refactorings in
the context of OutSystems (an industry-leading SAP). This was carried out by implement-
ing automated techniques for automatically refactoring a set of selected anti-patterns in
OutSystems logic that are currently detected by the OutSystems technical debt monitor-
ing tool.As Plataformas de Automação de Software (PAS) habilitam os seus utilizadores a desen-
volver aplicações de forma mais rápida e reduzem a necessidade de escrever código. Estas
fornecem abstração e automação, o que auxilia utilizadores com menos formação técnica a
tornarem-se programadores proficientes. No entanto, a integração de programadores com
menos formação técnica também contribui para a produção de código com alta dívida
técnica, uma vez que os mesmos estão menos familiarizados com as melhores práticas
de desenvolvimento de software. Desta forma, as PAS devem ter como objetivo a cons-
trução e evolução de software de forma simples para além de fornecer um ambiente de
desenvolvimento de software rápido.
Um exemplo de alta dívida técnica é o anti-padrão Unlimited Records, que ocorre
sempre que o número máximo de registos a ser retornado por uma consulta à base de
dados não é explicitamente limitado. Limitar o número de registos devolvidos pode, em
muitos casos, melhorar o desempenho das aplicações, reduzindo o tempo que demora a
carregar o ecrã, tornando assim as aplicações mais rápidas e responsivas, sendo esta uma
das principais prioridades dos programadores. Um segundo exemplo é o anti-padrão
Código Duplicado que afeta gravemente a legibilidade e manutenção do código, e que
pode causar a propagação de erros. Para superar este problema, recorreremos à reestru-
turação automatizada, pois acelera o processo de reestruturação através de modificações
comprovadamente corretas.
O objetivo desta dissertação é estudar e desenvolver uma solução para reestruturação
automatizada no contexto da OutSystems (uma PAS líder neste setor). Tal foi realizado
através da implementação de técnicas automatizadas para reestruturar um conjunto de
anti-padrões que são atualmente detetados pela ferramenta de monitorização de dívida
técnica da OutSystems
- …