Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Argentina - Nov 12th 2010
Meta-models and Infrastructure for Smalltalk Omnipresent HistoryVerónica Uquillas-GómezStéphane DucasseTheo D’Hondt
Andy Kellens, VUB
Monday 29 November 2010
Source Code History Analysis
2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
2
Pharo 0.x
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
2
Pharo 0.xPharo 1.0
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
2
Pharo 0.xPharo 1.0
Pharo 1.1
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
2
Pharo 0.xPharo 1.0
Pharo 1.1Pharo 1.2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
✤ Cross history
2
Pharo 0.xPharo 1.0
Pharo 1.1Pharo 1.2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
✤ Cross history
2
Pharo 1.0
Squeak 3.7
Etoys 3.0
Etoys 4.0
Squeak 3.8
CroquetSqueak 3.9
Squeak 3.10 Cuis
Squeak 3.6
Closure
Relicensing
TextEditor
MessageTally
Closure
Unicode
Unicode fixes
Pharo 0.xPharo 1.0
Pharo 1.1Pharo 1.2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
✤ Cross history
2
Pharo 1.0
Squeak 3.7
Etoys 3.0
Etoys 4.0
Squeak 3.8
CroquetSqueak 3.9
Squeak 3.10 Cuis
Squeak 3.6
Closure
Relicensing
TextEditor
MessageTally
Closure
Unicode
Unicode fixes
Squeak
Pharo 0.xPharo 1.0
Pharo 1.1Pharo 1.2
Monday 29 November 2010
Source Code History Analysis
✤ Linear history
✤ Cross history
2
Pharo 1.0
Squeak 3.7
Etoys 3.0
Etoys 4.0
Squeak 3.8
CroquetSqueak 3.9
Squeak 3.10 Cuis
Squeak 3.6
Closure
Relicensing
TextEditor
MessageTally
Closure
Unicode
Unicode fixes
Squeak
Pharo
Pharo 0.xPharo 1.0
Pharo 1.1Pharo 1.2
Monday 29 November 2010
Querying the History of a System
3
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
Querying the History of a System
3
Co-change analysis what are the entities that changed together with entity Number in version 3 ?
Queries as in the past
what were the senders of the method #asString in Squeak 3.9?
Queries as in the present
what are the messages sent by method #printOn: in version 2?
Bug spot was the method #printString regularly changed over the last 5 years?
Global analysis what is the whole history of method #detect:ifNone:?
Forks analysis if the version of method #isNil changed in Squeak 3.9, should it be changed in Pharo?
Comparison profiler what are the differences or similarities of running versions 4 and 5?
Monday 29 November 2010
We need ...
4
Monday 29 November 2010
We need ...
✤ History meta-model
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
✦ Cross history
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
✦ Cross history
✤ Infrastructure
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
✦ Cross history
✤ Infrastructure
✦ Store lot of data
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
✦ Cross history
✤ Infrastructure
✦ Store lot of data
✦ Efficient /Fast
4
Monday 29 November 2010
We need ...
✤ History meta-model
✦ Linear history
✦ Cross history
✤ Infrastructure
✦ Store lot of data
✦ Efficient /Fast
✦ Accessible
4
Monday 29 November 2010
Multiple Meta-ModelsSmalltalk model RB source code model
MC source code model Tools source code model
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
Smalltalk model RB source code model
MC source code model Tools source code model
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code model Tools source code model
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Tools source code model
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Tools source code model
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Tools source code model
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Tools source code model
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Tools source code model
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
5
Monday 29 November 2010
Multiple Meta-Models
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
categorycommentclassVariableNamespoolVariableNames
RBClass
compiledMethodsourceselector
RBMethod
instanceVariableNames
RBAbstractClass
implementorssenders
RBNamespace
*newMethods
RBMetaclass
*removedMethods
1 class
*
newClasses
*
changedClasses
BrowserEnvironment1
environment
*
removedClassessuperclasses
subclasses
* *
model
1
theMetaClass
theNonMetaClass
Smalltalk model RB source code model
MC source code modelidnamemessagedatetimeauthor
MCVersionInfo
MCDefinition
nameworkingCopy
MCPackage dependencieschangesworkingCopy
MCVersion
patchRelativeToBase:MCSnapshot
1
snapshot
definitions
info
*
snapshot
1package1
name
MCClassDefinition categories
MCOrganizationDefinition
selectorsourcecategory
MCMethodDefinition
name
MCVariableDefinition
variables
*
packageName
MCScriptDefinition
name
MCTraitDefinition
MCPostscriptDefinition
MCPreambleDefinitionMCInstaceVariable
DefinitionMCClassVariable
Definition
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Tools source code model
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
Class
Method
Attribute
Access
Inheritance
Package
Namespace
*
parentType
*
parentType
containerparentPackage
superclass
subclass
* *
Invocationsender
candidates
*
accessor
*
variable
*
*
*
*
Reference
*source
* target
*
5
How easy is ... interacting,
maintaining, synchronizing?
Monday 29 November 2010
Meta-Models Plague
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
✦ conversion or transformation
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
✦ conversion or transformation
✦ duplication of data, tests
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
✦ conversion or transformation
✦ duplication of data, tests
✦ more maintenance tasks
6
Monday 29 November 2010
Meta-Models Plague
✤ Multiple models API
✦ conversion or transformation
✦ duplication of data, tests
✦ more maintenance tasks
6
Mass duplic
ation of e
fforts
/tasks
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
Source Code Meta-Model
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
Source Code Meta-Model
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
Source Code Meta-Model
✤ algorithm✤ changes✤ versions
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
Source Code Meta-Model
✤ algorithm✤ changes✤ versions
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
7
Monday 29 November 2010
Versioning Systems vs. Source Code Meta-Model
GIT MC SVN
Versioning System
Source Code Meta-Model
✤ algorithm✤ changes✤ versions
localSelectors
Metaclass
selectorpragmas
CompiledMethod
instanceVariables
ClassDescription
Behavior
*
nameclassPoolsharedPoollocalSelectors
Class
Object
thisClass
methodDict contains
subclasses
methodClassselector category
MethodReference
methodReference
1
categoriesallMethodSelectors
ClassOrganizer
organization
1
subject1
superclass
1
*
classComment commentStamp
BasicClassOrganizer
methodClass
1
SystemDictionary
environment
1
SystemOrganizercategoryArray
Categorizercategory is managed by
namespace=
7
Monday 29 November 2010
Requirements for Source Code and History Modeling
8
Monday 29 November 2010
Requirements for Source Code and History Modeling
✤ No duplication of meta-models
8
Monday 29 November 2010
Requirements for Source Code and History Modeling
✤ No duplication of meta-models
✤ Model update as cheap as possible
8
Monday 29 November 2010
Requirements for Source Code and History Modeling
✤ No duplication of meta-models
✤ Model update as cheap as possible
✤ Tool reusability relying on common APIs
8
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
✤ Provide a common API (structural & runtime level)
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
✤ Provide a common API (structural & runtime level)
✤ Allow tools to interact and integrate directly with the host environment
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
✤ Provide a common API (structural & runtime level)
✤ Allow tools to interact and integrate directly with the host environment
✤ Become the foundational model in
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
✤ Provide a common API (structural & runtime level)
✤ Allow tools to interact and integrate directly with the host environment
✤ Become the foundational model in
✤ Support history analysis
9
Monday 29 November 2010
Unifying and Foundational Model Infrastructure
✤ Provide a common API (structural & runtime level)
✤ Allow tools to interact and integrate directly with the host environment
✤ Become the foundational model in
✤ Support history analysis
9
Monday 29 November 2010
Ring Overview
10
Monday 29 November 2010
Ring Overview
10
Structural Model
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
ChangeModel
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
RB Source Model
ChangeModel
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
RB Source Model
VersioningModel
ChangeModel
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
RB Source Model
VersioningModel
MergingModel
ChangeModel
Monday 29 November 2010
Ring Overview
10
Structural Model
Runtime Model
runtime API
structural API
RB Source Model
VersioningModel
MergingModel
ChangeModel
ToolsToolsTools
Monday 29 November 2010
The Onion Structure of the Ring
11
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
Runtime Model
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
Runtime Model
Basic ToolsBasic Tools
Basic Tools
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
RB Source Model
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
ScriptDefinition
Versioning Source ModelPoolDictionaryDefinition
Version
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
RB Source Model
Monday 29 November 2010
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
ScriptDefinition
Versioning Source ModelPoolDictionaryDefinition
Version
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
MergingModel
RB Source Model
Monday 29 November 2010
Full off line analysis Source Model...
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
ScriptDefinition
Versioning Source ModelPoolDictionaryDefinition
Version
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
MergingModel
RB Source Model
Monday 29 November 2010
Full off line analysis Source Model...
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
ScriptDefinition
Versioning Source ModelPoolDictionaryDefinition
Version
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
MergingModel
ChangeModel
RB Source Model
Monday 29 November 2010
Full off line analysis Source Model...
The Onion Structure of the Ring
11
Definition
ClassDefinition
MethodDefinition
Core Source Model
CommentDefinition
Properties
ScriptDefinition
Versioning Source ModelPoolDictionaryDefinition
Version
Runtime Model
Basic ToolsBasic Tools
Basic Tools
PackageDefinition
RB Source ModelVariableDefinition
MergingModel
ChangeModel
RB Source Model
HistoryModel
Monday 29 November 2010
Open Questions
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
✤ Annotations
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
✤ Annotations
✤ Meta-model vs. Database schema
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
✤ Annotations
✤ Meta-model vs. Database schema
✤ Core code model API
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
✤ Annotations
✤ Meta-model vs. Database schema
✤ Core code model API
✤ Meta-models extensibility
12
Monday 29 November 2010
Open Questions
✤ Expensive queries
✤ Version ids
✤ Annotations
✤ Meta-model vs. Database schema
✤ Core code model API
✤ Meta-models extensibility
✤ Unifying models12
Monday 29 November 2010
Summary
13
Monday 29 November 2010
Summary✤ Goal:
✦ perform linear and cross history analysis
13
Monday 29 November 2010
Summary✤ Goal:
✦ perform linear and cross history analysis
✤ Problem:
✦ unsuitable infrastructure for querying the history
✦ several meta-models overlapping & non-polymorphic APIs
13
Monday 29 November 2010
Summary✤ Goal:
✦ perform linear and cross history analysis
✤ Problem:
✦ unsuitable infrastructure for querying the history
✦ several meta-models overlapping & non-polymorphic APIs
✤ Proposal:
✦ unifying and foundational model infrastructure, Ring
13
Monday 29 November 2010
Summary✤ Goal:
✦ perform linear and cross history analysis
✤ Problem:
✦ unsuitable infrastructure for querying the history
✦ several meta-models overlapping & non-polymorphic APIs
✤ Proposal:
✦ unifying and foundational model infrastructure, Ring
✤ Current work:
✦ implementation of the Ring
13
Monday 29 November 2010
Argentina - Nov 12th 2010
Meta-models and Infrastructure for Smalltalk Omnipresent History
Verónica Uquillas-Gómez, [email protected]
Monday 29 November 2010
Argentina - Nov 12th 2010
Meta-models and Infrastructure for Smalltalk Omnipresent History
Verónica Uquillas-Gómez, [email protected]
Monday 29 November 2010
Argentina - Nov 12th 2010
Meta-models and Infrastructure for Smalltalk Omnipresent History
Verónica Uquillas-Gómez, [email protected]
Monday 29 November 2010