New Thoughts On Not So Random Things…

27Dec/090

The Google Wonder Wheel

Google Wonder WheelThanks to Twitter I only needed 6 months to discover the existence of the Google Wonder Wheel. It's been there since May, but I only just now learned about it in an article about how children search the web to find out about.

What is it?

The wheel basically resembles a multi-level mindmap, that allows you to see where you are going when following a thread of search results. When you search, next to a list of resulting pages, videos and images you get a small mindmap like image with your query in the middle and a set of links to (groups of) search results around it. When you click a link, another similar wheel is added, but centered around the search term you clicked. The image next to this post shows the image I got after searching for 'domain specific languages' and then clicking 'domain specific modeling' on the wheel.

With each click, the shape of the mindmap changes, showing always the wheel you came from, and the wheel for the term you came from. Next to the wheel, the search results (pages, images, and videos) for the term you clicked are shown, in the familiar way.

Useful!

I like this idea, and I'll be using it a lot from now on when researching topics of interest. I've been creating my own mindmaps on-and-off for years, although not as structurally as some, and this will only make it easier to do so when collecting input for articles, columns and blog posts.

29Nov/090

An architecture for model driven web development (1)

This is the first post in a series that I announced this weekend. In this post, I will introduce the core architecture I use to create my DSL based web development environment. Although not mentioned in the announcement, this post will have multiple editions - hence the (1) in the title - because no architecture is finished and correct the first time. Every time it's revised, a new post on this subject will appear.

Components of the architecture

The key components of the architecture I have in mind are twofold: a run-time environment and a design time environment. The reason for having both environments explicitly as a part of my architecture is based on my interpretation of the IEEE 1471 definition of architecture:

Architecture: the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.

I strongly value the bold parts,  more than many architects I have met over the past 15 years. I interpret these parts as meaning that the relationship between the components that form a system strongly determine the acceptance and usability of the system by it's intended users, and that an architecture needs to take into account the way the system is going to be designed, realized and extended, including the components used to achieve that.

In the run-time environment we find the typical components of a web application: a web server (e.g. Apache), a database (e.g. MySQL) and a scripting engine (e.g. PHP) or an application server (e.g. JBoss). The design time environment contains tools for scripting (a PHP and JavaScript editor), DSL creation, code generator editing, and code generator execution. Oh, and of course a versioning system like Subversion and a tracking tool like Trac.

With these components in place, we have everything to support a model driven software development process.

A model driven development process

The model driven software development process is based on domain specific languages, and generating code from models defined in those languages.

The process I have in mind here consists of an interative approach, in which three items have to be maintained: a (set of) domain specific modeling language(s) and models created using those languages, a (set of) code generator(s) to generate code from the models, and a generic framework containing the foundation on top of which we generate code. It's no use generating all the code in the framework, since that is not application specific.

Each iteration in my process consists of the following steps:

  1. Select content of the iteration, in terms of features to realize
  2. Model the features using the available domain specific modeling language(s), extending it (them) where necessary.
  3. Generating the code for the new feature, if necessary by prototyping it first and then extending the code generator(s) and/or the framework.

In the experiment described in this series of blog posts, the process is mainly executed by me, myself and I, but past experiences show that this approach works well in cooperation with others, including the domain experts you need to develop an application. I should add here, that my DSL is based on domain terminology from the web application development domain, for which the web itself provides a great dictionary, and the terminology I use when discussing a new web based venture I am starting with two partners. These partners do not speak "W3C", they only speak 'end-user' and 'money maker'.

My selection of components

For my first attempt at building applications based on this architecture, I selected the following components.

  • The XAMPP platform, which contains a web server, database and scripting engine:
    • Apache 2.1.x web server
    • MySQL 5.1.x database
    • PHP 5.3.x scripting engine
  • CodeIgniter 1.7.x - a Model-View-Controller framework based on PHP, to get a headstart w.r.t. generic stuff
  • jQuery UI 1.7.x - a JavaScript library for CSS manipulation and other useful UI things, included in the same vein as CodeIgniter
  • Eclipse Galileo PDT, an Eclipse based IDE for PHP and JavaScript development
  • MetaEdit+, a graphical DSL creation and modeling environment by MetaCase. This is the only component in my set up that is not Open Source
  • Subversion and Trac for version management and issue/progress tracking

That's what we start with...

...and the next post in this series will contain an overview of how these items fit together, and what the first iteration looked like.

22Nov/090

Authority inversion kills architecture

Who hasn't heard stories about managers who don't have a clue what their engineers, architects or quality officers are trying to achieve? And who has tried to go over their manager's head to try and fix the problem that way? Out of frustration, or to strenghten their own position, like this lady? I know I did, on a few occasions, and in one case I actually did it - be it without much success.

Earlier this week I was talking to an system architect and friend, working at a high tech electronics company. He's running into something that is related, and that I have experienced in the past as well - something which we agreed could be called 'authority inversion'.

The issue with going over your boss's head is that you contact his boss (substitute manager if you don't like the word boss), to get support for your ideas and have your boss instructed to implement them. Not a very decent thing to do, unless your relation with the person in question is really screwed up. In the case we were discussing, a similar thing happens, but with architects instead of managers. When engineers, regardless of their core discipline like software engineering or electronisch engineering, become more experienced, they eventually get a promotion. They become designers, or architects and are assigned responsibility for technical quality and soundness of systems, or parts of systems, and for guiding other engineers in achieving that.

'Guiding' is the key word here: they have no formal authority, because they are not part of line or project management - in the end the project manager or the development manager is the one to make the final call. This is not necessarily a bad thing, these people have been assigned responsibility for time and budget while the designer or architect was not. However, it can become problematic when the deadline gets nearer and the team contains a few engineers who feel like doing things their own way. Unfortunately, every team of more than 5 people tends to have at least one of those. They do their job, and they are very good at it to a certain level, but they are allergic to making agreements on interface, showing concern for other people's key interests and tend to focus on their key technical interests.

At some point, near the deadline of a project, the architect is confronted with choices made by these people that were not communicated or which they refused to reverse when communication was in place. At that point, the deadline is so close, as well as the end of the budget, that the architect's arguments about long term quality guarantees are overruled for the sake of time-to-market and delivering-on-budget. This is what we agreed to call 'authority inversion': an architect or designer is asked to take responsibility for quality of design, and made a recognised authority in that area. Some of the members on the projects he works on do not go along with that, and in the end get their way in front of the project manager or line manager. 'It works now, and it's too expensive or too late to fix it. If it becomes a problem later on, others will deal with it', is the final remark in a lot of cases.

Painful, for the architect, and painful for software or systems architecture as a discipline. There are still a lot of people who think we have a high tech industry that can sustain itself and it's products by this way of working, who don't believe we need requirements engineering, architecture or test management - but also not agile development or model driven development. As long as we have to deal with authority inversion as described here, we have a long way to go.

Just to make sure: this is not a rant against engineers, or meant to say they don't believe in quality. Every engineer believes in quality, but not all of them see what is important for overall system quality, and that makes them dangerous when combined with ignorant managers.

15Nov/090

DSL for web applications

Most web sites are interactive nowadays, in the sense that they require data from users, and provide other data or information in return. That's a very generic way of describing just about every only store, community and company web site.
For our new venture, Consultants United, we require such a web site as well, and we're not too fond of CMS-es like Joomla, which offer more than you need in features and often too little in relation to the features that you do need. That's why I decided to base our new site on CodeIgniter, like my own company site for Delphino Consultancy. For the latter, I was already building a DSL that would allow me to generate all the stuff required for the MDSD Tooling index and integrate it smoothly into my site.

Given that the new web site had higher priority than the index, but I want to build both, I decided to go for it and create a DSL and code generator for interactive web sites, using MetaEdit+. Once the site is up and running, I want to redo the effort using XText and MPS, to get some first hand experience the differences between graphical DSL modeling, textual DSL modeling and intentional modeling. To this list, I will probably add WebDSL as well, once it's PHP support is released. I have no use for the Java/Tomcat version, since my provider, like many others, doesn't support that platform unless I buy a dedicated server.

Right now, the first stage of building the DSL in MetaEdit+ is almost done. I build a DSL that allows me to model the basic data model that needs to be supported by the site, and I'm able to generate all the models, views and controllers that I need in CodeIgniter from that, as well as language/translation information, SQL to generate the database and form validation code.

That was a nice stepme_sample, but I need more. I don't want to do the navigation by hand, and there's a workflow that we need to go through in order to get data into the system (an interactive project marketplace) in the right manner. So, right now I'm working on a small DSL for that, which I hope to combine with the Entity DSL to be able to generate the static and dynamic parts of the site completely.

I will publish separate entries on this in the not too distant future:

  • An architecture for model driven web development (MDWD)
  • A structural DSL for web applications
  • A workflow DSL for web applications
  • Combining DSLs into a web application MDSD solution
  • Adding a DSL for look and feel, or not?
  • Extending the architecture: precooked features

After the launch of the first site, and hopefully also the MDSD Index, this will be followed by some more posts:

  • MDWD: revisited with XText and MPS
  • MDWD: revisited using WebDSL

This looks like a lot of work, so I'm not going to predict any dates. Just keep an eye on this blog.

9Nov/090

CG2010: first keynote agreed, CfS still open!

Last week Eelco Visser accepted our invitation to do a keynote presentation at Code Generation 2010. I expect this to become an interesting experience, given the broad mix of academic research and practical implementations he is involved in. In fact, WebDSL is on my todo-list as an item to check out some time soon. Unfortunately, that list seems to be only getting longer rather than shorter these days.

With the first keynote announced, the call for speakers is still open - please submit your ideas before January 15th.

4Nov/090

Bearskin – fear of change

At certain stages of during your life as a software architect's life, you encounter so many new things that it becomes overwhelming. At these times, you would be more than happy to put on a bear skin, and move into a cave. Preferably without 'the wheel' and 'fire', to avoid falling back into old habits. To be honest, sometimes I actually enjoy this 'leaving the new behind and going back into history'.

What I often notice when talking to people in industry, but also when our government discuss issues like our ongoing traffic congestion, is that only very few people try to see their challenges as part of something bigger. Each challenge, or problem as they are often called, is regarded by itself, even though they are part of a bigger system - be it a machine, a piece of software or the concept of rush hour.

File probleem

Looking back 10 years, at the time I worked in Philips Research, that surprises me. Back then, the notion of 'systems-of-systems' (every system consists of set of smaller, cooperating systems) looked like something that would really catch on. Then-guru on the subject, Mark Maier, defined a number of criteria to which such a system-of-systems should adhere. Each of the composing systems should be operationally independend and managerially independent - i.e. it should operate, and be developed and maintained independently. On top of that, the complete system-of-systems should develop in an evolutionary way, and show emergent behavior - go beyond the behavior of the individual subsystems. No doubt we'll find such systems nowadays, in fact, I identified a few with some PDEng in Software Design students last week. However, there are but a few - except maybe in the US Defense Industry, where the concept seems to a have been adopted quite well.

A similar reasoning applies to systems thinking, a concept discussed in many books, lectures and projects in books by Peter Senge, Eliyah Goldratt and many others. Roughly, systems thinking works from the notion that everything is connected (like systems-of-systems!), and that the cause of each problem is rarely the nearest link in the chain. Based on this, interesting discoveries were made in areas like economy and logistics over the past few decades. In systems industry unfortunately, we still find ourselves dealing mainly with the symptoms rather than the root cause of our challenges.

In between reading and pondering over these things from my past, I also read a summary (and a lot of tweets) of a presentation by Barbara Liskov, at OOPSLA 2009. She's a software engineering specialist, who recently received the ACM Turing Award for her contribution to software engineering as a discipline. In her presentation she stressed amongst others that 'young software engineers know to little about the history of software engineering'. That got me interested, after all history and bear skin mix very well. As examples, she mentioned that 'extensible programming languages are a nightmare' and 'it's more important for code to be easy to read than to write'. I tend to agree with here, in a way. After all, some of our modern 'extensible' programming languages haven't fully achieved their goal. Python for example didn't go through a complete rewrite without a reason, and we'll still have to wait and see what Lua and Ruby will go through in the next few years.

Also, from a maintenance perspective, I can only agree that readable code is very useful. After all, many companies and developers still document their software only poorly and that legacy is carried for years. On the other hand though, easy to write code will improve our productivity, and DSLs and code generation were introduced for a reason (don't they serve both sides?).

All in all, I get the feeling Barbara addressed things quite well, taking into account pro's and con's, based on over 30 years of software engineering experience. New developments are useful and necessary, but we seem to be continuously returning to old habits and old mistakes and ineffective solutions, because we fail to see the past and the bigger picture. With that, she addresses a pitfall which seems to already have swallowed that other giant from the past, Grady Booch. He stated in an interview, around the same time as Liskov's presentation, that ' we should go back to the roots of UML' and that 'the main artifact is raw, naked code, everything else is secondary to that'. Just now, at the time model driven development and code start showing their real advantages...

bear skin

After reading Barbara's story, and Grady's interview, I shrugged off my bear skin once again, and sat down by the fire to read an article on the latest developments in IT and software engineering. Sometimes it's good to look back, but let's start trying to pick up the right new things and hold on to them, rather than giving in to our old fear of change.

[to be published in Dutch in Bits & Chips magazine #18, 2009]

28Oct/090

CodeGeneration 2010 Call for Speakers

The call for speakers for Code Generation 2010 is open. Click for details...

26Oct/090

CodeGeneration 2010

CG2010 logo

Well, PPL2009 was last week, SPA2010 is closing it's call for proposals, OOPSLA is currently underway and OOP 2010 is in January. So, why not announce Code Generation 2010 right now :)

The site is up, and the call for speakers is open. If time allows, I'll submit a proposal to present a comparison of building the same application with MetaEdit+, XText and MPS.

Only drawback is that I have to make the comparison first, hence the 'if time allows'.

21Oct/090

PPL 2009 – Day 2

PPL 2009 - Day 2
Well, today was day 2 of the first edition of Practical Product Lines, and Mark Dalgarno told us that news about the 2010 edition will come in soon. Some would say that that is an indication of a succesful event. Well done, Mirjam, Danielle, Mark and Rene!
Today, we kicked off with a keynote by Dirk-Jan Swagerman of FEI Company. He started with an overview of FEIs business - electron microscopes. An interesting domain, and the explanation certainly woke up those who sleepwalked to the conference after yesterday's dinner. After that introduction, Dirk-Jan explained how FEI deals with a it's microscope product line, that serves multiple market. Impressive to see that a random selection of 400 product variants includes a 120 one offs, while at the same time all products are based on a shared reference architecture. Of course, this doesn't come for free, and they have really spent quite some effort on anchoring this architecture in their organisation, and those of selected partner companies.
FEI also analysed the applicability of 4 types of reuse (none, clone and say goodbye, clone and merge back and common shared solution) - with a nice overview of what approach fits best in which context. More details are in his slides, which will be available soon from the PPL2009 web site
Challenges remaining right now include amongst others finding ways to more efficiently test all possible variants. Regression testing really is a challenge in their case, and virtual PCs are part of their solution (you can't have physical installations of all possible family members).
After Dirk-Jan, Isabel John of Fraunhofer IESE showed us an example of the approach that was explained yesterday by Dieter Rombach: proving SPL works by doing pilot projects with customers. In this case, they have been involved with a company called Testo AG (who supply measurement tools) for about 7 years. Initially, they helped out with identifying reuse possibilities and planning a product line - starting from existing products. In later years, they were involved in defining the shared architecture and verifying architecture compliance in the code. Like with FEI, testing the product line variants is the next step to take. So far, results are quite promising: 15 products have been instantiated, reuse has increased from 17% in 2002 to 50% in 2009 and architecture compliance errors in the code has gone up from 17% to 1% in the past few years. The latter obviously has major impact on maintainability of the software.Another interesting observation was coined by Juha-Pekka Tolvanen over lunch was that Testo AG's products are quite similar to those of Polar Watches he presented yesterday. An opportunity for co-operation?
To finalize the morning session, Ton van Buren and Wim Couwenbergh of Oce presented their experiences with setting up a product line for printer controller software. They started in 2004 with what they called blob, configured through #ifdefs, and based on the steps in the printing process. Over time they changed their architecture to a more component based approach, with well defined, generated interfaces - allowing them to configure controllers for different printer set ups more effectively. Organisationally, they follow an approach where shared components are maintained by project teams, who have to take care that their changes don't break the work of other projects. A central architecture team keeps an eye on the overall picture. They've come a long way, and like FEI and Testo, they're picking up new challenges one by one.
After another great lunch, the floor was for the last keynote speaker, Markus Voelter. He took us through a comparison of modelling and programming, concluding (not surprising) that DSLs are more effective than programming, and that textual DSLs are closer to home for programmers than graphical ones. Of course, Juha-Pekka Tolvanen took the opportunity to challenge him a few times during the presentation on this and similar issues.
After the comparison, he treated us to a few very quick demos of Xtext and MPS (and a slideshow of Intentional screenshots) to show how textual DSLs can work. Then he ended by providing his vision on the future - modulare programming languages. An inspiring talk for those interested in the technical side of product line development and variability in general.
Then the floor was mine for a couple of minutes, so I could introduce the panel that was going to 'Explode the myths' on software product lines. Focus was on addressing some of the arguments that people use to explain why they don't use a software product line approach. The first few ("we don't need SPL, we can do with #ifdefs", and "large embedded systems are too complex to migrate to SPL") led to little discussions, since the panel and the audience agreed that Dieter Rombach's statement "It depends!" was very much applicable to those two. The 'myths' that "with SPL you need to test less", it's counterpart "SPL testing is more complicated than normal testing" and "SPL engineering kills innovation" led to more discussion, and also quite a few remarks and opinions from the audience. Testing can become more complicated, and that has to be dealt with, but it certainly isn't a reason not to do SPL. Innovation should be given more room by using product lines, because the product line should take care of the large part of the product that does not require innovation. However, it was noted that innovation on component level can be restricted by SPL, because component teams have to 'live by the rules of the product line'.
Overall, it turned out that there's two sides to every myth, and as a result no real explosives were handed out to the audience. More myths will be published on this forum in the coming week, so we can continue the discussion.
And that ended the PPL2009 conference, almost. Mark Dalgarno closed the conference by thanking everybody, announcing a few other conferences and the plans to have another PPL conference in 2010. Let's all make sure that that is going to be an event that is at least as interesting as this first edition.
Thanks go out to all those involved in organising this and making it into a success (including speakers and participants of course).

Well, today was day 2 of the first edition of Practical Product Lines, and Mark Dalgarno told us that news about the 2010 edition will come in soon. Some would say that that is an indication of a succesful event. Well done, Mirjam, Danielle, Mark and Rene!

Today, we kicked off with a keynote by Dirk-Jan Swagerman of FEI Company. He started with an overview of FEIs business - electron microscopes. An interesting domain, and the explanation certainly woke up those who sleepwalked to the conference after yesterday's dinner. After that introduction, Dirk-Jan explained how FEI deals with a it's microscope product line, that serves multiple market. Impressive to see that a random selection of 400 product variants includes a 120 one offs, while at the same time all products are based on a shared reference architecture. Of course, this doesn't come for free, and they have really spent quite some effort on anchoring this architecture in their organisation, and those of selected partner companies.

FEI also analysed the applicability of 4 types of reuse (none, clone and say goodbye, clone and merge back and common shared solution) - with a nice overview of what approach fits best in which context. More details are in his slides, which will be available soon from the PPL2009 web site

Challenges remaining right now include amongst others finding ways to more efficiently test all possible variants. Regression testing really is a challenge in their case, and virtual PCs are part of their solution (you can't have physical installations of all possible family members).

After Dirk-Jan, Isabel John of Fraunhofer IESE showed us an example of the approach that was explained yesterday by Dieter Rombach: proving SPL works by doing pilot projects with customers. In this case, they have been involved with a company called Testo AG (who supply measurement tools) for about 7 years. Initially, they helped out with identifying reuse possibilities and planning a product line - starting from existing products. In later years, they were involved in defining the shared architecture and verifying architecture compliance in the code. Like with FEI, testing the product line variants is the next step to take. So far, results are quite promising: 15 products have been instantiated, reuse has increased from 17% in 2002 to 50% in 2009 and architecture compliance errors in the code has gone up from 17% to 1% in the past few years. The latter obviously has major impact on maintainability of the software.Another interesting observation was coined by Juha-Pekka Tolvanen over lunch was that Testo AG's products are quite similar to those of Polar Watches he presented yesterday. An opportunity for co-operation?

To finalize the morning session, Ton van Buren and Wim Couwenbergh of Océ presented their experiences with setting up a product line for printer controller software. They started in 2004 with what they called blob, configured through #ifdefs, and based on the steps in the printing process. Over time they changed their architecture to a more component based approach, with well defined, generated interfaces - allowing them to configure controllers for different printer set ups more effectively. Organisationally, they follow an approach where shared components are maintained by project teams, who have to take care that their changes don't break the work of other projects. A central architecture team keeps an eye on the overall picture. They've come a long way, and like FEI and Testo, they're picking up new challenges one by one.

After another great lunch, the floor was for the last keynote speaker, Markus Voelter. He took us through a comparison of modelling and programming, concluding (not surprising) that DSLs are more effective than programming, and that textual DSLs are closer to home for programmers than graphical ones. Of course, Juha-Pekka Tolvanen took the opportunity to challenge him a few times during the presentation on this and similar issues.

After the comparison, he treated us to a few very quick demos of Xtext and MPS (and a slideshow of Intentional screenshots) to show how textual DSLs can work. Then he ended by providing his vision on the future - modulare programming languages. An inspiring talk for those interested in the technical side of product line development and variability in general.

Then the floor was mine for a couple of minutes, so I could introduce the panel that was going to 'Explode the myths' on software product lines. Focus was on addressing some of the arguments that people use to explain why they don't use a software product line approach. The first few ("we don't need SPL, we can do with #ifdefs", and "large embedded systems are too complex to migrate to SPL") led to little discussions, since the panel and the audience agreed that Dieter Rombach's statement "It depends!" was very much applicable to those two. The 'myths' that "with SPL you need to test less", it's counterpart "SPL testing is more complicated than normal testing" and "SPL engineering kills innovation" led to more discussion, and also quite a few remarks and opinions from the audience. Testing can become more complicated, and that has to be dealt with, but it certainly isn't a reason not to do SPL. Innovation should be given more room by using product lines, because the product line should take care of the large part of the product that does not require innovation. However, it was noted that innovation on component level can be restricted by SPL, because component teams have to 'live by the rules of the product line'.

Overall, it turned out that there's two sides to every myth, and as a result no real explosives were handed out to the audience. More myths will be published on the Practical Product Lines forum in the coming week, so we can continue the discussion.

And that ended the PPL2009 conference, almost. Mark Dalgarno closed the conference by thanking everybody, announcing a few other conferences and the plans to have another PPL conference in 2010. Let's all make sure that that is going to be an event that is at least as interesting as this first edition.

Thanks go out to all those involved in organising this and making it into a success (including speakers and participants of course).

21Oct/090

Practical Product Lines 2009 – Day 1

Practical Product Lines 2009 - Day 1
Yesterday was the first day of the first Practical Product Lines Conference. I was off for a bad start, my train got delayed, and then it got delayed even more because a lady decided to get stuck between the doors of a train that was supposed to leave before mine. She was unharmed in the end, but I got another 10 minute delay out of it.
So, I arrived about 20 minutes late in Jan Bosch' keynote, just in time to here him explain how Software Engineering 2.0 (as applied by Amazon, Google and a few others) is based on concepts like 'the 2-pizza rule', '3x3 rule' and the power of humiliation. What it comes down to is that you work on small items, in small teams and your name ends up in the wall of shame if your team is too big or if you don't succeed because of other organisational issues. Of course, that was not the main message of his talk. He explained how software productlines were applied in the places where he worked, and still works, and how he looks at the future of software product lines. He believes we are moving toward software ecosystems where composition becomes more important than development and integration of different parts. Examples of existing ecosystems are platforms like Facebook and the Google - and what is envisioned for what Eric Schmidt calls Web 3.0. An interesting detail at the end of Jan's talk: there is no such ecosystem for mobile devices yet, who wants to jump in and fill that gap?
After Jan's keynote, we were treated to an overview of how SystemsForge uses DSLs and Feature Models to develop web sites for their customers. I was interested in that, because I am developing something similar - both because I need to set up a new web site and because I need a good example case for my students. It turns out that Peter's company has come across some of the issues I'm dealing with right now, and found a way around them. It's nice to see how a few thousand web sites are based on a few reasonably simple steps: 1) select required featurs from a feature model, 2) fill the gaps with DSL generated materials and 3) hand code the remaining small bits.
Of course, they haven't been doing this for 20 years yet, so they have some things to do. Right now they are perfecting the process and supporting tooling, and looking for ways to amongst others improve the efficiency of testing web applications created in their production environment.
Juha Pekka Tolvanen and Erik Carlson of MetaCase and ABB reported on the European MoSiS project. Juha-Pekka showed us that MetaCase's infamous Watch example has actually evolved into a real product environment - Polar watches are generating their sportswatches in a much more advanced version of that sandbox DSM example. Nice one from the MetaCase team. He also presented a case where development of a single application using DSM provided a 10-fold increase in productivity, but with the 2nd and 3rd these figures may become more realistic.
Eric showed how his organisation is working on a DSL based productline for railway control systems, that will be used to create control centers for 11 new railway stations in Norway. That's a market segment where I wouldn't have expected a product line approach - maybe because I know too little about it - but it definitely is a great case.
Dieter Rombach from Fraunhofer IESE then explained how his organisation works on SPL and bringing them from research to practise. A lot of resistance againsts change in that area is dealt with by them, simply by doing pilot projects too prove that the approach works. He stated that architecture and scoping of the product line (instead of domain modeling) are key to succes of SPL - because they provide the necessary speed to bring a first family member to the market. He agreed with Jan Bosch that the latter is important, it shows people that it can be done and avoids discussions about wasted investments.
After this session I joined an afternoon session on change and configuration management with presentation by John McGregor and Pascal van Kempen. John pointed out what the role of CM is in relation to product lines and our current software ecosystem in general: we need to be able to support 24/7 development and maintenance, during the 10-30 year life span of software intensive products. One important item that stuck with me is that each configuration asset needs to be accompanied by a 'process', a user manual. Organisations mostly fail in providing that as far as I know. John used the TOPCased DSL environment as an example of that problem. A nice side issue there was that most participants didn't know or use that environment - I wonder why...
Pascal expanded on that, showing that in Philips Healthcare product level configuration management (so software + hardware) is not trivial, and needs to handled on multiple levels and from multiple viewpoints: software, maintenance, release, manufacturing and the ever-difficult sales point of view. Each view showed some particular difficulties that his company is dealing with.
Overall, a great first day - which was helped further by the good facilities arranged by the people of Techwatch, and the excellent diner last night at the Cafe American. It led to some insightful discussions, that may be of use later today, when I chair the panel on Exploding Product Line myths. I'm still collecting myths, so don't hesitate to talk to me about yours during the conference, or mail them to me if you're not a participant.
Mark Dalgarno and I may on occasion tweet something into the world throughout the day, so keep an eye on http://twitter.com/#search?q=%23ppl2009

Yesterday was the first day of the first Practical Product Lines Conference. I was off for a bad start, my train got delayed, and then it got delayed even more because a lady decided to get stuck between the doors of a train that was supposed to leave before mine. She was unharmed in the end, but I got another 10 minute delay out of it.

So, I arrived about 20 minutes late in Jan Bosch' keynote, just in time to hear him explain how Software Engineering 2.0 (as applied by Amazon, Google and a few others) is based on concepts like 'the 2-pizza rule', '3x3 rule' and the power of humiliation. What it comes down to is that you work on small items, in small teams and your name ends up in the wall of shame if your team is too big or if you don't succeed because of other organisational issues. Of course, that was not the main message of his talk. He explained how software productlines were applied in the places where he worked, and still works, and how he looks at the future of software product lines. He believes we are moving toward software ecosystems where composition becomes more important than development and integration of different parts. Examples of existing ecosystems are platforms like Facebook and the Google - and what is envisioned for what Eric Schmidt calls Web 3.0. An interesting detail at the end of Jan's talk: there is no such ecosystem for mobile devices yet, who wants to jump in and fill that gap?

After Jan's keynote, we were treated to an overview of how SystemsForge uses DSLs and Feature Models to develop web sites for their customers. I was interested in that, because I am developing something similar - both because I need to set up a new web site and because I need a good example case for my students. It turns out that Peter's company has come across some of the issues I'm dealing with right now, and found a way around them. It's nice to see how a few thousand web sites are based on a few reasonably simple steps: 1) select required featurs from a feature model, 2) fill the gaps with DSL generated materials and 3) hand code the remaining small bits.

Of course, they haven't been doing this for 20 years yet, so they have some things to do. Right now they are perfecting the process and supporting tooling, and looking for ways to amongst others improve the efficiency of testing web applications created in their production environment.

Juha Pekka Tolvanen and Erik Carlson of MetaCase and ABB reported on the European MoSiS project. Juha-Pekka showed us that MetaCase's infamous Watch example has actually evolved into a real product environment - Polar watches are generating their sportswatches in a much more advanced version of that sandbox DSM example. Nice one from the MetaCase team. He also presented a case where development of a single application using DSM provided a 10-fold increase in productivity, but with the 2nd and 3rd these figures may become more realistic.

Eric showed how his organisation is working on a DSL based productline for railway control systems, that will be used to create control centers for 11 new railway stations in Norway. That's a market segment where I wouldn't have expected a product line approach - maybe because I know too little about it - but it definitely is a great case.

Dieter Rombach from Fraunhofer IESE then explained how his organisation works on SPL and bringing them from research to practise. A lot of resistance againsts change in that area is dealt with by them, simply by doing pilot projects too prove that the approach works. He stated that architecture and scoping of the product line (instead of domain modeling) are key to succes of SPL - because they provide the necessary speed to bring a first family member to the market. He agreed with Jan Bosch that the latter is important, it shows people that it can be done and avoids discussions about wasted investments.

After this session I joined an afternoon session on change and configuration management with presentation by John McGregor and Pascal van Kempen. John pointed out what the role of CM is in relation to product lines and our current software ecosystem in general: we need to be able to support 24/7 development and maintenance, during the 10-30 year life span of software intensive products. One important item that stuck with me is that each configuration asset needs to be accompanied by a 'process', a user manual. Organisations mostly fail in providing that as far as I know. John used the TOPCased DSL environment as an example of that problem. A nice side issue there was that most participants didn't know or use that environment - I wonder why...

Pascal expanded on that, showing that in Philips Healthcare product level configuration management (so software + hardware) is not trivial, and needs to handled on multiple levels and from multiple viewpoints: software, maintenance, release, manufacturing and the ever-difficult sales point of view. Each view showed some particular difficulties that his company is dealing with.

Overall, a great first day - which was helped further by the good facilities arranged by the people of Techwatch, and the excellent diner last night at the Cafe American. It led to some insightful discussions, that may be of use later today, when I chair the panel on Exploding Product Line myths. I'm still collecting myths, so don't hesitate to talk to me about yours during the conference, or mail them to me if you're not a participant.

Mark Dalgarno and I may on occasion tweet something into the world throughout the day, so keep an eye on #ppl2009