talk at ictm '12
TRANSCRIPT
Jcome Cunha1, Joo P. Fernandes12, Jorge Mendes1, Hugo Pacheco1, Joo Saraiva1
1 HASLab / INESC TEC & Universidade do Minho, Portugal2 Universidade do Porto, Portugal
ICMT 2012
Bidirectional Transformation
of
Model-Driven Spreadsheets
IntroductionClassSheets as Spreadsheet Models
Bidirectional Spreadsheet Evolution EnvironmentMDSheet Framework
Implementation
Conclusions and Future Work
Agenda
Introduction
Highly flexible end-users programming environmenthighly error prone
Widely used for decision makingpotential negative economic impact
Do you agree?
Spreadsheets
http://www.wiscnews.com/baraboonewsrepublic/news/local/article_7672b6c6-22d5-11e1-8398-001871e3ce6c.html
http://www.sltrib.com/sltrib/news/53893888-78/state-error-office-education.html.csp http://www.sltrib.com/sltrib/news/54128921-78/session-education-special-lawmakers.html.csp
EuSpRIG Original Horror Storieshttp://www.eusprig.org/stories.htm
Many More Horror Stories
In many cases spreadsheets start simple
They get bigger and bigger
Many rows, columns, worksheets, dependencies, etc.
Harder and harder to understand
Why Spreadsheet Models?
Models allow to abstract and better understand the underlying problem
ClassSheet models allow to specify spreadsheets
Introduced by Engels and Erwig to model the business logic of spreadsheet data
They allow to model spreadsheets using object-oriented concepts
Why Spreadsheet Models?
We infer models from spreadsheet data (VL/HCC '10)
We embed such models in OpenOffice/LibreOffice providing a MDE environment (VL/HCC '11, ICSE '12)
Conforms ClassSheet Spreadsheet data
Overview of our Solution
ModelInstance
Model-Driven Spreadsheet Environment
(Instance/Data Worksheet)
Model-Driven Spreadsheet Environment
(Model/ClassSheet Worksheet)
This generated spreadsheet guides users in introducing correct dataThe spreadsheet includes mechanisms that guarantee that the spreadsheet data always conforms to the model after an user update
In previous work we used data refinement to allow model evolution and co-evolution of data (FASE '11 / VL/HCC '11)
In this paper:We define a bidirectional transformational system to allow both model and instance evolution and co-evolution
Our Work
ClassSheets as Spreadsheet Models
Vertically Expandable Tables
ClassSheet Model
Spreadsheet Data
Horizontally Expandable Tables
ClassSheet Model
Spreadsheet Data
Relationship Tables
ClassSheet Model
Spreadsheet Data
It is not possible to edit/evolve the data structureToo restrictive to regular spreadsheet users
Some transformations are not easy to perform on the modelChanging the data and inferring a new model is easier
Limitations
The MDSheet Framework
Embedding of ClassSheet models
Framework for bidirectional transformations
Extending OpenOffice/LibreOffice
Combining Techniques
Bidirectional Transformation System
Architecture
Example of a Transformation we Want:
Add a New Column
(Model) Operations on ClassSheets
(Data) Operations on Instances
Bidirectional Transformation Functions
Baseado em haskell
Integrado no OO
Clicanca-se em botoes
Espetacular
Basic
Example: Add a Column and a Class
Correctness
Hippocraticness (from)
Invertibillity (to)
History ignorance
Bidirectional Transformation Properties
Correctness: we generate models and instances that always keep the conformance relationship
Hippcraticness: if we change de data and the data still conforms to the model, then we don't change the model
Invertibility: literal
History ignorance: each update is context independent, that is, there is no specific semantic for one update or one update after another
Conclusions and Future Work
Conclusions
Framework for bidirectional transformationsWhen evolving the data a new model is inferred
When evolving the model the data changes
The data always conforms to the model
Available as a OpenOffice/LibreOffice extensionTool demo next week at ICSE
Future Work
We want to consider more than one instance of each model
Use automata to formalize ClassSheetsCreate an algebra
Check model properties
Evolve in a specified direction
Thank you!
http://ssaapp.di.uminho.pt
http://wiki.di.uminho.pt/twiki/bin/view/Research/FATBIT/WebHome