SSaaPP: SpreadSheets as a Programming Paradigm Project's Final Report

This technical report describes the research goals and results of the SpreadSheet as a Programming Paradigm research project. This was a project funded by Fundacao para a Ciencia e Tecnologia – FCT: the Portuguese research foundation, under reference FCOMP-01-0124-FEDER-010048, that ran from May 2010 till July 2013. This report includes the complete document reporting the results achieved during the project execution, which was submitted to FCT for evaluation on October 2013. It describes the goals of the project, and the different research tasks presenting the deliverables of each of them. It also presents the management and result dissemination work performed during the project’s execution. The document includes also a self assessment of the achieved results, and a complete list of scientific publications describing the contributions of the project. Finally, this document includes the FCT evaluation report. 1 Aims and Work Plan Spreadsheet tools can be viewed as programming environments for non-professional programmers. These so-called “end-user” programmers vastly outnumber professional programmers. In fact, spreadsheets, when viewed as a programming language, are one of the largest programming languages and can be characterized as a particularly lowlevel one: there is no support for abstraction, testing, encapsulation, modular or structured programming. As a result, numerous studies have shown that existing spreadsheets contain errors at an alarmingly high rate. In fact, companies are being put at risk due to their failure to realize that the process of constructing spreadsheets requires the discipline of traditional programming. Spreadsheet applications are more vulnerable to poor design and to errors than conventional programs. This means that a greater degree of discipline is required in the process of spreadsheet development. Recent advances in programming languages are providing their users with powerful mechanisms to structure and develop their programs. Indeed, the development of powerful type systems, modular systems, abstract models, support for generic programming, support for domain specific language embedding, lazy evaluation engines and incremental models of computations are changing the way we write our programs. Moreover, the development of techniques for refactoring, testing and slicing are also changing the way we construct, transform and maintain our software. Surprisingly, with the exception of the pioneering work of Erwig and Burnett, little work has been done on the foundations of spreadsheets by the programming language community. As a result, none of those developments have been incorporated in spreadsheets yet. In fact, spreadsheets still do not offer support for abstraction, encapsulation, or structured programming yet! For this reason, it is fair to state that spreadsheets could benefit from all recent developments in programming languages even more than programming languages themselves. The overall objective of this project is to study and develop techniques to incorporate these recent advances in programming languages, in spreadsheets. Thus, we will study new type systems and modular systems, and formal models for spreadsheets. Furthermore, we will develop techniques to reason about existing spreadsheets. That is to say that we want to define techniques to extract the model of a spreadsheet, to define model based techniques for spreadsheets, to define a catalog of spreadsheet smells, to apply software evolution techniques to spreadsheets, and to define new incremental computational models for spreadsheets. The SSaaPP project proposes to study the foundations of spreadsheets both from a software engineering and theoretical point of view. Furthermore, the research i be conducted in four axes: analysis, transformation, evaluation and quality assessment of spreadsheets. The project workplan/tasks directly follows the four axes which will conduct our research, namely, analysis (task 1), transformation (task 2), evaluation (task 3) and quality of spreadsheets (task 4). The project includes a specific task (task 5) devoted to the integration, benchmarking and documentation of the results produced in each of these axes. This document is intended to describe in detail the development of the SSaaPP project. In section 2 we describe the contributions and deliverables of each of the tasks in the original plan. In Section 3 reports on management and dissemination activities. Finally, section 4 discusses what, in the proponent’s opinion, has been achieved within SSaaPP and enumerates a few future research directions.