: In this paper, we present a software engineer's view of user-interface development. First, we illustrate the main problem areas responsible for difficulties in building high-quality user-interfaces. Among them are design problems, the technical complexity of direct-manipulation interfaces - due to issues like concurrency, complex dependencies and semantic feedback -, and the lack of appropriate tools. In the second part of the paper, we turn to a structured view of user-interface development. The task of building user-interface software is divided into three subtasks, namely the development of an appropriate software architecture, the description of screen layout, and the specification of the dialog behavior. For each of these subtasks we discuss typical approaches with emphasis on concepts used in DIWA, a user-interface development system currently under work in Hagen.