120 likes | 289 Views
The Software Composition Group. Oscar Nierstrasz scg.unibe.ch. 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
E N D
The Software Composition Group Oscar Nierstrasz scg.unibe.ch
The Software Composition Group 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
The Software Composition Group 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
Embedding Domain Models in Code The Software Composition Group Make Domain Specific Languages (DSLs) first-class citizens of the host language. • 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
Example DSL: String Interpolation The Software Composition Group Transcript show: ’10! = {10 factorial}’ Transcript show: '10! = ' , 10 factorial asString Domain Code Specification of DSL <transformation> DSLSearchPattern new expression: '`#literal'; verification: [ :ast | ast value isString ]; action: [ :ast |ast replaceWith: (self interpolate: ast value) ]; yourself 13.5
The Software Composition Group Geppetto — dynamic adaptation through partial behavioural reflection • Applications to: • Instrumentation • Pluggable types • AOP & COP • … Marcus Denker, et al., "Sub-Method Reflection", TOOLS Europe 2007
The Software Composition Group Hermion — combining static and dynamic information in the IDE Feature-centric environment: David Röthlisberger, et al. "Feature Driven Browsing", ICDL 2007
The Software Composition Group Enriching source artifacts with dynamic information David Röthlisberger, et al. "Exploiting Runtime Information in the IDE", ICPC 2008
The Software Composition Group Querying runtime information in the IDE David Röthlisberger, "Querying Runtime Information in the IDE", submitted to QTAPC 2008
The Software Composition Group 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
The Software Composition Group 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
The Software Composition Group Projects • Student projects & Masters projects • scg.unibe.ch [Caveat — never up-to-date!] • Come and talk to us!