@PhdThesis{U-SFU-SCS:PhD:2002:Walenstein, Author = "Andrew Walenstein", Title = "Cognitive Support in Software Engineering Tools: A Distributed Cognition Framework", School = "School of Computing Science, Simon Fraser University", Year = 2002, Month = may, Pages = "402", Abstract = "Software development remains mentally challenging despite the continual advancement of training, techniques, and tools. Because completely automating software development is currently impossible, it makes sense to seriously consider how tools can improve the mental activities of developers apart from automating them away. Such mental assistance can be called ``cognitive support''. Understanding and developing cognitive support in software engineering tools is an important research issue but, unfortunately, at the moment our theoretical foundations for it are inadequately developed. Furthermore, much of the relevant research has occurred outside of the software engineering community, and is therefore not easily available to the researchers who typically develop software engineering tools. Tool evaluation, comparison, and development are consequently impaired. The present work introduces a theoretical framework intended to seed further systematic study of cognitive support in the field of software engineering tools. This theoretical framework, called RODS, imports ideas and methods from a field of cognitive science called ``distributed cognition''. The crucial concept in RODS is that cognitive support can be understood and explained in terms of the computational advantages that are conferred when cognition is redistributed between software developer and their tools and environment. The name RODS, in fact, comes from the four cognitive support principles the framework describes. With RODS in hand, it is possible to interpret good design in terms of how cognition is beneficially rearranged. To make such analyses fruitful, a cognitive modeling framework called HASTI is also proposed. The main purpose of HASTI is to provide an analysis of ways of modifying developer cognition using RODS. RODS and HASTI can be used to convert previously tacit design knowledge into explicit and reusable knowledge. RODS and HASTI are evaluated analytically by using them to reconstruct rationales for two exemplar reverse engineering tools. A preliminary field study was also conducted to determine their potential for being inexpensively applied in realistic tool development settings. These studies are used to draw implications for research in software engineering and, more broadly, for the design of computer tools in cognitive work domains." }