User interfaces are assuming an increasing importance within the design of a software product. This paper examines the various levels and components of window user interfaces and exposes their impact on software maintenance. It covers window systems, user interface toolkits, user interface management systems (UIMSs), dialogue separation and other user interface development concepts that will lead to more maintainable software. It also examines the research work on the testing of user interface software that is being pursued at the University of Durham.