Sunday, December 02, 2007

Sunday, November 25, 2007

Some reading ...

During the Thanksgiving holidays, I spent some time reading about what is going on in the world of software and services and came about a green paper being worked on in the context of the European Commission. I liked the broad overview of technologies that are and will be affecting us going forward. The report touches upon a broad set of topics, ranging from dynamic discovery and composition of services and autonomic computing to the formation of virtual organizations and FLOSS.

Sunday, November 18, 2007

Compositionality in Software Systems

The nature of software engineering is changing and it happens to affect two the areas that I have been spending a lot of research on, i.e. software architecture and software product families. In the Foresight 2020 by the Economist Intelligence Unit, published last year, five main trends were mentioned, i.e. globalization, demographics, atomization, personalization and knowledge management. Of these five trends, three address a key issue in contemporary software engineering: the ability of software systems to configure themselves at run-time to the specific place on the globe the user of the system happens to life or be (globabilization), the context of other services and solutions in which this system happens to be used (atomization) and the preferences the user, the provider of the service and/or some third party have concerning the way the system presents itself to the user (personalization).

The key issue is of course that software applications increasingly need to become ecosystems of related, but separate functionality that can be dynamically composed into a unique customer specific experience. The composition has to be truly dynamic as the user may change his or her preferences, buy more functionality that has to be uniformly integrated or new functionality may become available through internal development or by external parties.

This development has implications on software architecture as it significantly moves the focus from architecture as structure (boxes and lines) to architecture as principles, i.e. the rules, constraint and rationale underlying the architecture. Since the structural architecture is generated at run-time, there is obviously no point in designing it directly.

Software product families, or software reuse in general, also takes on a different form in this context. Instead of static product derivation by integrating the reusable assets in the product family, the shared assets now become services that are composed at run-time without human involvement.

For both technologies, the main transition is from integration, i.e. manual collection and assembly of shared assets before the system is deployed, to composition, i.e. dynamic, automated collection and combination of shared assets during system operation. The consequences are quite considerable and require more than a single blog entry to be addressed.

However, there is one problem that I believe is largely unsolved and requires attention: if each customer has his or her own unique selection of functionality, how do we guarantee a good user experience to this user? What architectural guidelines, principles and mechanisms can we apply to avoid a situation where the jobs of the user become incoherent and illogical in a significant subset of the cases?

Monday, August 21, 2006

The Starting Point ...

I have been running a blog inside Nokia for many months now, but obviously there is a world outside the company as well. On my intra-organizational blog, I have discussed topics around the software and application technologies research lab at Nokia Research Center, software platforms, software architecture, different approaches to innovation, mobile services, etc. Some of those topics are clearly for internal use only, but others can be shared with the world. Software architecture and software product families are topics that I have done research on for a very long time before I joined Nokia, so if you're interested, feel free to take a look at my website. This is the first post with little content, but I'll be posting several more entries soon.