The thesis of this paper is that software engineering advances are required to support the research endeavors in ubiquitous computing. In Section 2 we will present two ubiquitous computing projects conducted at Georgia Tech --the Classroom 2000 project and the Cyberguide project. These projects will be used in Section 3 to help define the three common features of ubicomp applications --transparent interfaces, context-awareness and automated capture. We then categorize the important software engineering issues that must be met in order to support continued ubicomp research. These issues are toolkit design (Section 4), software structuring for separation of concerns (Section 5), and component integration(Section 6).