One difficulty in software maintenance is that the relationship
between observed program behavior and source code is not
always clear. In this paper we are concerned specifically with the
maintenance of graphical user interfaces (GUIs). User interface
code can crosscut the decomposition of applications making GUIs
hard to maintain. A popular approach to develop and maintain
GUIs is to use “What you see is what you get” editors. They allow
developers to work directly with a graphical design view instead
of scattered source elements. Unfortunately GUI editors are limited
by their ability to statically reconstruct dynamic collaborations
between objects. In this paper we investigate the
combination of a hybrid dynamic and static approach to allow for
view-based maintenance of GUIs. Dynamic analysis reconstructs
object relationships, providing a concrete context in which maintenance
can be performed. Static checking restricts that only
changes in the design view which can meaningfully be translated
back to source are allowed. We implemented a prototype IDE
plugin and evaluate our approach by applying it to five open
source projects