Towards Systematic Spreadsheet Construction Processes (Abstract/Poster),
Mendes, Jorge, Cunha Jácome, Duarte Francisco, Engels Gregor, Saraiva João, and Sauer Stefan
, Proceedings of the 39th International Conference on Software Engineering (ICSE 2017), Buenos Aires, Argentina, (2017)
Towards the Design and Implementation of Aspect-Oriented Programming for Spreadsheets,
Maia, Pedro, Mendes Jorge, Cunha Jácome, Rebêlo Henrique, and Saraiva João
, Proceedings of the 2nd Workshop on Software Engineering methods in Spreadsheets co-located with the 37th International Conference on Software Engineering (ICSE 2015), (2015)
AbstractA spreadsheet usually starts as a simple and single- user software artifact, but, as frequent as in other software systems, quickly evolves into a complex system developed by many actors. Often, different users work on different aspects of the same spreadsheet: while a secretary may be only involved in adding plain data to the spreadsheet, an accountant may define new business rules, while an engineer may need to adapt the spreadsheet content so it can be used by other software systems. Unfortunately, spreadsheet systems do not offer modular mechanisms, and as a consequence, some of the previous tasks may be defined by adding intrusive “code” to the spreadsheet.
In this paper we go through the design and implementation of an aspect-oriented language for spreadsheets so that users can work on different aspects of a spreadsheet in a modular way. For example, aspects can be defined in order to introduce new business rules to an existing spreadsheet, or to manipulate the spreadsheet data to be ported to another system. Aspects are defined as aspect-oriented program specifications that are dynamically woven into the underlying spreadsheet by an aspect weaver. In this aspect-oriented style of spreadsheet development, different users develop, or reuse, aspects without adding intrusive code to the original spreadsheet. Such code is added/executed by the spreadsheet weaving mechanism proposed in this paper.
A Type-Level Approach to Component Prototyping,
Barbosa, Luís, Cunha Jácome, and Visser Joost
, International Workshop on Synthesis and Analysis of Component Connectors: in Conjunction with the 6th ESEC/FSE Joint Meeting, New York, NY, USA, p.23–36, (2007)
AbstractAlgebraic theories for modeling components and their interactions offer abstraction over the specifics of component states and interfaces. For example, such theories deal with forms of sequential composition of two components in a manner independent of the type of data stored in the states of the components, and independent of the number and types of methods offered by the interfaces of the combinators. General purpose programming languages do not offer this level of abstraction, which implies that a gap must be bridged when turning component models into implementations. In this paper, we present an approach to prototyping of component-based systems that employs so-called type-level programming (or compile-time computation) to bridge the gap between abstract component models and their type-safe implementation in a functional programming language. We demonstrate our approach using Barbosa's model of components as generalized Mealy machines. For this model, we develop a combinator library in Haskell, which uses type-level programming with two effects. Firstly, wiring between components is computed during compilation. Secondly, the well-formedness of the component compositions is guarded by Haskell's strong type system.
Type-Safe Evolution of Spreadsheets,
Cunha, Jácome, Visser Joost, Alves Tiago, and Saraiva João
, Proceedings of the 14th International Conference Fundamental Approaches to Software Engineering (FASE '11): Part of the Joint European Conferences on Theory and Practice of Software (ETAPS '11), Volume 6603, p.186–201, (2011)
AbstractSpreadsheets are notoriously error-prone. To help avoid the introduction of errors when changing spreadsheets, models that capture the structure and interdependencies of spreadsheets at a conceptual level have been proposed. Thus, spreadsheet evolution can be made safe within the confines of a model. As in any other model/instance setting, evolution may not only require changes at the instance level but also at the model level. When model changes are required, the safety of instance evolution can not be guarded by the model alone. We have designed an appropriate representation of spreadsheet models, including the fundamental notions of formulæand references. For these models and their instances, we have designed coupled transformation rules that cover specific spreadsheet evolution steps, such as the insertion of columns in all occurrences of a repeated block of cells. Each model-level transformation rule is coupled with instance level migration rules from the source to the target model and vice versa. These coupled rules can be composed to create compound transformations at the model level inducing compound transformations at the instance level. This approach guarantees safe evolution of spreadsheets even when models change.
Type-Safe Evolution of Web Services,
Campinhos, João, Seco João Costa, and Cunha Jácome
, Proceedings of the 2nd International Workshop on Variability and Complexity in Software Design (VACE 2017), a ICSE workshop, Buenos Aires, Argentina, (2017)
User-Friendly Spreadsheet Querying: An Empirical Study,
Pereira, Rui, Saraiva João, Cunha Jácome, and Fernandes João P.
, 31st Annual ACM Symposium on Applied Computing (SAC'16), Smart Human Computer Interaction Track, Poster Paper, Pisa, Italy, (2016)