General:
Overview

Approach

Lighthouse is a coordination platform that addresses the issue of how to coordinate a number of developers all working on the same project in parallel by. Lighthouse achieves this through the use of the novel concept of emerging design, a continuously-updated representation of the design as it exists in the code. On its own, emerging design allows developers to see how their code relates to that of other developers. Thus developers can see how changes they make to their code could potentially impact others, and vice versa. Furthermore, by overlaying emerging design on top of the initial conceptual design, it is possible to indicate implementation progress (i.e., which modules have been completed, and which have not), and indicate where the implementation deviates from the initial design.

We envision Lighthouse being used in a dual-monitor setup as can be seen in the image below. The developer sits in front of two monitors, one (in this case, the left monitor) containing their standard coding environment and the other (the right monitor) containing Lighthouse. At its core, Lighthouse operates by displaying the emerging design of the software under development as a UML class diagram. This diagram represents the “design-in-the-code” and is continuously updated based on current workspace activities. So, if one developer adds a new class in their code, the views of all developers are updated. If a second developer removes a class from their code and adds a new method invocation from a second class to a third class, again the views of all developers are updated to reflect these changes. Other code modifications that similarly influence the design structure are propagated alike. Note that, instead of waiting until workspace changes are checked in, which potentially can be days, weeks, or sometimes months, it is critical that these updates happen in real time, so conflicts and problems can be spotted as they slowly surface.

It is important that the emerging design is constantly and peripherally available. Much of the benefit comes from the presentation of an up-to-date emerging design, something which cannot be presented full-time on a computer screen while allowing enough room for coding to continue normally (developers would need to make continuous and explicit context switches among the code and design views, which quickly becomes a tiring activity that is simply skipped).


Portions of this site Copyright ©2004-2006 The Regents of the University of California. All Rights Reserved Worldwide.