Steve Reiss' research focuses on making programming easier. He is particularly interested in software tools and environments. He has developed a series of powerful programming environments and tools, including PECAN, GARDEN, FIELD, DESERT and, most recently, CLIME. PECAN demonstrated the power of workstations and multiple views in the early 1980s. GARDEN demonstrated the utility of visual languages in a multilingual conceptual framework. FIELD pioneered the concept of message-based (control) integration and illustrated a variety of program visualizations. It was highly successful and formed the basis (either conceptually or literally) for most UNIX programming environments in the 1990s. DESERT combined control integration, an inexpensive data-integration mechanism, and a common editor based on Framemaker to produce a comprehensive programming and design environment. CLIME used constraints and model checking techniques to manage software evolution and check statically for programming problems.
Software visualization has been a focus of many of the tools in these environments. PECAN provided graphical views of the syntax and semantics of the program and GARDEN provided dynamic visualization of program execution based on visual langauges. FIELD offered interactive visualizations of data structures, call graphs, the class hierarchy, build dependencies, performance data, I/O behavior, and memory utilization. DESERT provided tools that let the user quickly specify what data should be visualized and how it should be displayed, allowing new three-dimensional (3D) visualizations to be created in a matter of minutes. Beyond this, the BLOOM visualization system combines extensive trace collection facilities, a variety of data analysis including statistical and inferential approaches, a simplified visual query language for defining what to visualize, and a variety of 3D visualization tools. His more recent work in this area looks at the visualization of the behavior of real systems in real time. JIVE provides views of thread and class behavior and JOVE provdes views of where execution is occurring at the statement level. Current work in this area involves developing a system that lets the user quickly define problem and program specific dynamic visualizations.
Other recent work has focused on the confluence of web services, grid computing, peer-to-peer computing, and open source. The TAIGA system provides a framework for experimenting with the various issues that arise when programs call other programs on remote computers, when data is shared globally, and when programs are written by unknown or untrusted sources and run on untrusted machines. The key idea behind TAIGA is that programming needs to be done with a component model where the component interface includes the semantics of the component and where implementations can be tested against this semantics. Semantics in this case is used in the broad sense and includes formal semantics, contracts, test cases, privacy and security constraints, recovery information, and an economic model for using the component.