Sunday, April 22, 2007

ASWEC 2007

ASWEC 2007 was held at the RACV Club in Melbourne from 11-13 April with tutorials on Tuesday 10 April and was a great success. Expect several followup articles covering various sessions and presentations that I attended. Welcome by Prof. Doug Grant, conference General Chair - who gave thanks to authors, sponsors, Steering Committee and organisers.

Doug noted that it has been 39 years since the NATO conference (1968) held on German city of Garmisch, coined the term 'Software Engineering.' The theme of this years conference is an example of reuse, "Taming Complexity with Research and Practice.' Since that time much has changed: Thomas Freedman, 'The World is Flat' explores globalisation; ASWEC is a global conference that is located in Australia.

The charter of ASWEC is to communicate and share problems, solutions, to form partnerships. There may be impact from the Research Quality Framework (RQF) which seeks to assess the quality of research in each discipline. Research publications and local conferences appear to be disadvantaged by these metrics. Those is academia must influence attendance of conferences and members of university advisory committees should do likewise.

Competent graduates are the ones who can communicate well; they are snapped up by industry. Persuading young people to study in our universities - ICT - not for lack of places, we need ideas to reenergise and reengage young people in these disciplines.

Prof. Jun Han - few words about the program; research and industry track papers; keynotes; tutorials (yesterday). 100 submissions; half local, half overseas; selected 39 - reviewed by at least 3 (sometimes 4 to resolve issues). Selected 19 industry presentations. Mixed program of industry and academic papers by topic.

The keynote was delivered by Prof. Oscar Nierstraag, head of the Software Composite Groups - making systems more adaptive to changing requirements, visiting professor at the Sorbonne, coauthor of Software Reengineering Patterns - speaking about modelling change as a first-class entity. Kinds of change include configuration, refactoring, new functionality, run-time adaption, projects include: Piccola, Traits, Classboxes, Persephone and Geppette, Object Flow Analysis, Moose, Changeboxes to encapsulate change. Software inevitably changes but program languages and development environments inhibit change rather than support it. Symptoms include assumption of global consistency, static type systems, design patterns - covered in 'On the Revival of Dynamic Languages.'

Piccolo. Problem - reconfig application (without changing eveything). Solution - composition language - application = components + script. Separates stable components from flexible configuration. Scripts plug together (not wire) components and define style of composition for plugins. Lessons - first-class namespaces enable flexible composition, eg. sandboxes; conceptual gap between core and target models (components, plugins and styles versus agents, forms and channels).

Traits. Problem - refactoring commonality (without introducing fragility). Solution - factor commonalities into traits (mixins and multiple inheritance are fragile); resolve conflict locally. Traits are parameterised behaviours that provide and require methods - no state (assumption may be weakened) - class = superclass + traits + glue.

Classboxes: Controlling visibility in class extensions. Problem - changing a running system without anticipated hooks. Solution - refactor on demand - partial, behavioural reflection. First idea - ByteSurgeon to transform Smalltalk code.

Persephone. Reflection methods - higher level - byte code plus abstract syntax tree (AST).

Geppetto. Behavioural reflection on demand. Lessons - reflectoin enables analysis; reflection need not be expensive; should be scoped to relevant contexts (eg. Lists in application context).

Moose. Extensible metamodel repository - navigation, metrics, querying, grouping - tools for enabling research. Java, Colol, C++ - XMI - import to enable model-driven development, explicit and available at runtime. Enables "ever more fine-grined changes" without artificial separation between source code and compilation (eg. Smalltalk and Eiffel).

Certainly an interesting and stimulating talk by the keynote speaker. My own notes and several pointed questions and remarks raise the question, "Is this software engineering?" Some of these techniques approach the mainstream insofar as dynamic interception can be implemented with run-time proxies using reflection; the Spring framework allows for wired configuration at run-time; the new keyword in .Net localises the context for a method extension; Corba using the dynamic invocation interface.

The issue of regression testing, verification and validation to give confidence in the run-time is similar to proxy interceptors, SQL triggers and aspect-oriented programming. It is ironic that low-level techniques are arising to allegedly solve problems with the object-oriented approach to design but aspect-oriented programming, while described as orthogonal to object design, is at a lower level of abstraction.

When asked about bugs related to threading, locks, logging, transactions and similar, I usually say that the design is flawed - no amount of hunting will track down the elusive bug if it isn't there in the first place. Go back to analysis and design to isolate the parts of the system that are variable from those that are general - see, for example, Coplien's Commonality-Variability principle. Software engineering is more than just programming.

0 Comments:

Post a Comment

<< Home