Background

In June 2005, I started an internship at Sony Ericsson Mobile Communications AB in Lund, Sweden, with the intent of writing my master’s thesis in computer science at the company. Sony Ericsson, a maker of cellular phones, arranged for me to work on their in-house-developed component technology ECMX as part of the company’s software architecture group. The goal of my work was to enable developers to debug software written using ECMX, with a particular focus on invocations spanning multiple processes.

I was hired shortly after completing the practical part of my thesis work, and spent more than two years as a full-time employee with the company. During my tenure, I had the privilege of designing a new user-facing application from the ground up, which presented large quantities of hierarchically organized information related to various disparate domains. The application, which was designed to be agnostic to the nature of the content it displayed, relied on a number of ECMX objects, written by other groups, which implemented interfaces mandated by the application. Some objects were implemented in C, and others in Java, unbeknownst to the application. This application made heavy use of ECMX and its support for location-transparent invocations, giving me ample time to study its internals in the course of my professional duties, a luxury afforded few students. I left the company in March 2008 to start a software business, and, having gotten the company off the ground, wrote this report in the first half of 2009.

ECMX piqued my interest in component technology, which led me to this work. While one aim of this thesis is to present the work I did in Sony Ericsson’s architecture group, another goal is to place ECMX in a historical and technical perspective, as well as to give an overview of this field and the industrial technologies associated with it. In the course of this thesis, I hope to strip component technology of its veneer of complexity, by demonstrating the straight-forward technology that powers object invocations and by discussing the implementation of component models.