Upload
dimitris-kolovos
View
670
Download
2
Tags:
Embed Size (px)
Citation preview
1
Adding Spreadsheets to the MDE Toolbox
Martin Francis, D. Kolovos,
N. Matragkas, R. Paige Department of Computer Science
University of York
2 MDE
• Aims to improve the quality and efficiency of the software development process
– Promotes models to first-class citizens
– Reduces the need for human compilers
• Not restricted to a particular modelling technology / model representation format
Skip Ad>
3 Models in MDE
• Structured artefacts that
– Contain (meta-)information of interest related to the system under development
– Are amenable to automated processing
• Transformation
• Validation
• Simulation etc.
7 Spreadsheets
• Versatile and intuitive
• Fill in gaps in the software development process
– When no specialised tools exist for the job
– When specialised tools are too
expensive/complicated
– When information needs to be collected
from non-programmers
8 Spreadsheets
• Used for
– Capturing requirements
– Tracking bugs
– Allocating roles
– Monitoring tasks
• ... but have been largely ignored by MDE languages and tools
9 Aim of this Work
• Add support for (Google) spreadsheets to languages for – Model querying
– Model-to-model transformation
– Model validation
– Model-to-text transformation
– Model comparison
– Model merging
• ... so that spreadsheets can be used in any step of an MDE process
11 Concept Mapping
• Spreadsheet -> Model
• Worksheet -> Type
• Column -> Property
• Row -> Model element
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
12 Preview (Query)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
Student.allInstances->
select(s | s.age >= 18).println();
13 Preview (Query)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
Student.all.
select(s | s.age >= 18).println();
14 Preview (Query)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
for (s in Student.all) {
if (s.age >= 18) {
s.println();
}
}
15 Preview (M2T)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
<ul>
[%for (s in Student.allInstances){%]
<li> [%=s.firstname] [%=s.lastname]
[%}%]
</ul>
16 Preview (Validation)
context Mark {
constraint WithinRange {
check: self.mark <= 100 and
self.mark >= 0
message: “Mark ” + self.mark +
“ must be between 0-100”
}
}
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
17 Concept Mapping
• Spreadsheet -> Model
• Worksheet -> Type
• Column -> Property
• Row -> Model element
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
18 Limitations
• No way to specify
– Column data types
– Cross-references between columns
– Multiplicities
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
19 Limitations
• No way to work with
– Title-less columns
– Worksheets with bizarre names (“Tom’s
Data”)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
20 Configuration Metamodel
Spreadsheet
Worksheetname : Stringalias : String
Columnindex : Integername : Stringalias : StringdataType : Stringmany : booleandelimiter : String
Referencename : Stringmany : booleancascadeUpdates : boolean
sourcetarget
columns
worksheets
21 Data Types
<spreadsheet>
<worksheet name=“Student”>
<column name=“age” type=“Integer”/>
</worksheet>
</spreadsheet>
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
22 Data Types
Student.allInstances->
select(s | s.age >= 18)
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
23 References
<spreadsheet>
<reference source=“Mark->module”
target=“Module->id”
many=“false”/>
</spreadsheet>
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
24 References
Mark.allInstances
->select(m | m.mark < 40)
->collect(m | m.module.title)
->asSet();
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
29 Problems
• Injection of large spreadsheets can be slow
• Propagating changes back to the spreadsheet can be challenging
• Loss of native querying capabilities
30 Option #2
• Develop a native spreadsheets driver for Epsilon’s pluggable type system (EMC)
• Pros
– No intermediate artefacts
– No stale data
– Direct updates to the spreadsheet
– Can leverage native querying capabilities
32 Query Translation
• Exploit the built-in querying capabilities of Google Spreadsheets
• Example
– Find all students who have a mark higher
than 70 in some module
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
33 Using select()
Mark.allInstances
->select(m | m.mark > 70);
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
34 Using find()
S.find(m:Mark | m.mark > 70);
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
35 Query Translation
• The implementation of find() can be overloaded by each driver
• The Google Spreadsheets driver rewrites the query at runtime as – https://spreadsheets.google.com/feeds/list/tb-
<mark-worksheet-guid>/od6/private/full?sq=mark>70
• Search is performed on the server and a Set(Mark)is returned
– Composite queries are supported
37 Moving to EMF
Mark.allInstances
->select(m | m.mark < 40)
->collect(m | m.module.title)
->asSet();
modules
MSD,HCI
F
MSD,RQE
E
mt506supervisor
mt506
4 jd5023 SmithJane 22jd501 232 ThompsonJoe
D age
C lastname
Bfirstname
Aid
1
Student Staff
E
dj5123 JacksonDaniel HCImt506 MSD,RQE2 ThomasMatthew
D teaches
C lastname
Bfirstname
Aid
1
Student Staff
Module
Module
Student Staff ModuleHuman Computer Interaction Spring 4 HCI
D
RQE3 SpringRequirements EngineeringMSD2 AutumnModelling and System Design
C term
Btitle
Aid
1
Mark
Mark
Mark
E
jd5023 74ICAR jd5012 62TPOP
D C mark
Bmodule
Astudent
1
Student Staff Module Mark
38 Moving to EMF
Mark.allInstances
->select(m | m.mark < 40)
->collect(m | m.module.title)
->asSet();