Talk
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Talk

on

  • 2,690 views

 

Statistics

Views

Total Views
2,690
Views on SlideShare
655
Embed Views
2,035

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 2,035

http://alfa.di.uminho.pt 2031
http://translate.googleusercontent.com 2
http://www.google.pt 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Talk Presentation Transcript

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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