© O. Nierstrasz
The Software Composition Group
13.2
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
Software inevitably changes …
> … but present-day programming languages and development environments go out of their way to inhibit change rather than to support it
> Symptoms:— Assumption of global consistency— Static type systems— Design patterns— …
Oscar Nierstrasz, Alexandre Bergel, Marcus Denker, Stéphane Ducasse, Markus Gaelli and Roel Wuyts, “On the Revival of Dynamic Languages,” Proceedings of Software Composition 2005
Oscar Nierstrasz, Alexandre Bergel, Marcus Denker, Stéphane Ducasse, Markus Gaelli and Roel Wuyts, “On the Revival of Dynamic Languages,” Proceedings of Software Composition 2005
© O. Nierstrasz
The Software Composition Group
13.3
Ongoing research projects(a selection)
> DSLs — embedding domain models in code> Geppetto — fine-grained reflection> Hermion — bring dynamic information to the IDE> Object Flow Analysis — track flow of object references
© O. Nierstrasz
The Software Composition Group
13.4
Embedding Domain Models in Code
> Examples— Seaside – Generate XHTML, JavaScript— Mondrian – Graph visualization engine— Magritte – Meta-modeling of domain-objects
> How to …— integrate with host language?— integrate with other DSLs?— integrate with existing tools?— migrate from/to a DSL?
13.4
Make Domain Specific Languages (DSLs) first-class citizens of the host language.
© O. Nierstrasz
The Software Composition Group
13.5
Example DSL: String Interpolation
13.5
<transformation>
DSLSearchPattern new expression: '`#literal'; verification: [ :ast | ast value isString ]; action: [ :ast |ast replaceWith: (self interpolate: ast value) ]; yourself
Transcript show: ’10! = {10 factorial}’
Transcript show: '10! = ' , 10 factorial asString
Domain Code
Specification of DSL
© O. Nierstrasz
The Software Composition Group
13.6
Geppetto — dynamic adaptation through partial behavioural reflection
Marcus Denker, et al., "Sub-Method Reflection", TOOLS Europe 2007Marcus Denker, et al., "Sub-Method Reflection", TOOLS Europe 2007
Applications to:• Instrumentation• Pluggable types• AOP & COP• …
© O. Nierstrasz
The Software Composition Group
13.7
Hermion — combining static and dynamic information in the IDE
David Röthlisberger, et al. "Feature Driven Browsing", ICDL 2007David Röthlisberger, et al. "Feature Driven Browsing", ICDL 2007
Feature-centric environment:
© O. Nierstrasz
The Software Composition Group
13.8
David Röthlisberger, et al. "Exploiting Runtime Information in the IDE", ICPC 2008
David Röthlisberger, et al. "Exploiting Runtime Information in the IDE", ICPC 2008
Enriching source artifacts with dynamic information
© O. Nierstrasz
The Software Composition Group
13.9
David Röthlisberger, "Querying Runtime Information in the IDE", submitted to QTAPC 2008
David Röthlisberger, "Querying Runtime Information in the IDE", submitted to QTAPC 2008
Querying runtime information in the IDE
© O. Nierstrasz
The Software Composition Group
13.10
Object Flow Analysis
> Track flow of object references by means of first-class aliases— Trace flows between
features, classes etc.
— Trace back flow from errors to code that produced the objects
Adrian Lienhard, Stéphane Ducasse and Tudor Gîrba, “Object Flow Analysis — Taking an Object-Centric View on Dynamic Analysis”, ICDL’07
Adrian Lienhard, Stéphane Ducasse and Tudor Gîrba, “Object Flow Analysis — Taking an Object-Centric View on Dynamic Analysis”, ICDL’07
© O. Nierstrasz
The Software Composition Group
13.11
Problem: back-in-time history quickly grows beyond memory capacity
Solution:> A VM that stores history as real objects in application memory> Uses object flow model
> to remember past object states and> to remember how objects are passed around
> Discards obsolete history using the GC
Adrian Lienhard, Tudor Gîrba and Oscar Nierstrasz, “Practical Object-Oriented Back-in-Time Debugging”, ECOOP’08
Adrian Lienhard, Tudor Gîrba and Oscar Nierstrasz, “Practical Object-Oriented Back-in-Time Debugging”, ECOOP’08