Type-safe Evolution of Spreadsheets       J´come Cunha        a                      Joost Visser            Tiago Alves  ...
Motivation    Spreadsheets are notoriously error-prone;    Many errors are introduced when changing data;    But many othe...
An Example    Budget for travel, hotel and local transportation expenses.    At the beginning of each year, it needs to be...
An Example - Changing the Model    For expenses before and after tax, additional columns need to be    inserted in the blo...
ClassSheets: Specifying Spreadsheets    Erwig et al. have introduced ClassSheets to specify spreadsheets;    ClassSheets a...
Modeling our Example    Class to represent a year;    Class to represent budget line;    Class to represent the relationsh...
Spreadsheet Models in Haskell    We have created a representation for spreadsheet models based on    ClassSheets;    Reuse...
Spreadsheet Models in Haskell - References    References pose a particular challenge;    We implemented them as a pair of ...
Evolution Rules    Combinators:           Pull up all the references: all references must be at the top level;           A...
Make It ExpandableIt is possible to make a block expandable:                                          id×head             ...
Conclusions    We have created a safe representation of spreadsheet models (and    instances);    We shown rules for coupl...
Upcoming SlideShare
Loading in...5
×

Talk

3,160

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,160
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Talk

  1. 1. Type-safe Evolution of Spreadsheets J´come Cunha a Joost Visser Tiago Alves Jo˜o Saraiva a Universidade do Minho, Portugal, {jacome,jas}@di.uminho.pt Software Improvement Group, The Netherlands, {j.visser,t.alves}@sig.eu to be presented at FASE (ETAPS) 2011 17 – 21 JanuaryJ´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 1 / 11
  2. 2. Motivation Spreadsheets are notoriously error-prone; Many errors are introduced when changing data; But many others when changing the structure; Models capturing the interdependencies between data can help (inferable); Co-evolution of models and instances. J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 2 / 11
  3. 3. An Example Budget for travel, hotel and local transportation expenses. At the beginning of each year, it needs to be modified to accommodate the next year; Several steps are necessary: add three new rows, labels, update formulas, etc. Very prone to errors. J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 3 / 11
  4. 4. An Example - Changing the Model For expenses before and after tax, additional columns need to be inserted in the block of each year. The user needs to change all the year in the spreadsheet. J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 4 / 11
  5. 5. ClassSheets: Specifying Spreadsheets Erwig et al. have introduced ClassSheets to specify spreadsheets; ClassSheets allow to express business object structures within a spreadsheet using concepts from the OO paradigm; J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 5 / 11
  6. 6. Modeling our Example Class to represent a year; Class to represent budget line; Class to represent the relationship between them. J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 6 / 11
  7. 7. Spreadsheet Models in Haskell We have created a representation for spreadsheet models based on ClassSheets; Reused the 2LT framework: when specifying a model transformation, we get for free functions to migrate data back and forward. A, A data type and transformed data type to to witness function of type A → A & (injective and entire relation) Af A from witness function of type A → A from (surjective, possibly partial) from ◦ to = idA We can compose refinements J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 7 / 11
  8. 8. Spreadsheet Models in Haskell - References References pose a particular challenge; We implemented them as a pair of selection functions: one selects the cell which is the reference and another select the referenced cell. 0sn source source source Projection over type A to identifying the reference &+3 target Projection over type A Af T A identifying the referenced cell from source = source ◦ from target .tp target target = target ◦ from J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 8 / 11
  9. 9. Evolution Rules Combinators: Pull up all the references: all references must be at the top level; Apply after and friends: applies another rules after something; Semantic: Insert column: insert a new column; Make it expandable: allows some part to be added more columns/rows; Split: moves a column and substitutes it by references to the new position; Layout: Change orientation: from vertical to horizontal and vice versa; Normalize blocks: some results are not well formated; Shift: shift vertically, horizontally, up or down. J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 9 / 11
  10. 10. Make It ExpandableIt is possible to make a block expandable: id×head - (label : clas) (label : (clas)↓ ) l id×tolistIts implementation is as follows:expandBlock :: String → RuleexpandBlock str (label : clas) | compLabel label str = do let rep = Rep {to = id × tolist, from = id × head } return (View rep (label : (clas)↓ )) J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 10 / 11
  11. 11. Conclusions We have created a safe representation of spreadsheet models (and instances); We shown rules for coupled evolution of models and instances; We want to make this available for spreadsheet users; We are working on an extension for OpenOffice; J´come Cunha (UMinho-SIG) a Type-safe Evolution of Spreadsheets 11 / 11
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×