The Software Composition Group Oscar Nierstrasz scg.unibe.ch.

12
The Software Composition Group Oscar Nierstrasz scg.unibe.ch
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    229
  • download

    1

Transcript of The Software Composition Group Oscar Nierstrasz scg.unibe.ch.

The Software Composition Group

Oscar Nierstraszscg.unibe.ch

© 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

© O. Nierstrasz

The Software Composition Group

13.12

Projects

> Student projects & Masters projects— scg.unibe.ch

[Caveat — never up-to-date!]

— Come and talk to us!