Kuhn, Adrian (2011). Software Cartography and Code Navigation. (Dissertation, University of Bern, Philosophisch-naturwissenschaftliche Fakultät)
Text
kuhn-phd.pdf - Published Version Restricted to registered users only Available under License Publisher holds Copyright. Download (3MB) |
Despite common belief, software engineers do not spend most time writing code. It has been shown that an approximate 50--90 of development time is spent on code orientation, i.e. navigation and understanding of source code. This may include reading of local source code and documentation, searching the internet for code examples and tutorials, but also seeking help of other developers.
In this dissertation we argue that, in order to support software engineers in code navigation and understanding, we need development tools that provide first-class support for the code orientation clues that developers rely on. We argue further that development tools need to tap unconventional information found in the source code in order to provide developers with code orientation clues that would be out of their reach without tool support.
In a qualitative user study we identify four fundamental categories of orientation clues that developers use for code navigation and code understanding: lexical clues referring to identifier names and concepts, social clues referring to a developer's personal network and to internet communities, episodic clues referring to personal first-hand memories of a developer, and spatial clues referring to the system's architecture or to source code's on-screen position as displayed by development tools.
We introduce the following approaches that tap unconventional information found in the source code in order to better support code orientation: The EvoCloud tool uses lexical information found in source code to summarize parts of a system, the whole system, or even the system's entire evolution. The Hapax tool clusters software systems using lexical information found in source code. The Chronia tool addresses the episodic memory of developers by providing them with a visualization that tells the story of the team collaboration as recorded by the version control system. The Devlect tool uses lexical information found in contributions that developers shared with open source systems to build a recommendation model for bug reports. The Bender tool uses cross-project collaboration of developers in open source projects to estimate the credibility of code search results.
Among the code orientation strategies used by developers, spatial clues stand out for not having a first-class representation in the ecosystem of source code. Therefore, we introduce Software Cartography, an approach to create spatial on-screen visualization of software systems based on non-spatial properties. Software maps are stable over time, embedded in the development environment, and can be shared among teams. We implement the approach in the CodeMap tool and evaluate it in a qualitative user study. We show that software maps are most helpful to explore search results and call hierarchies.
Item Type: |
Thesis (Dissertation) |
---|---|
Division/Institute: |
08 Faculty of Science > Institute of Computer Science (INF) 08 Faculty of Science > Institute of Computer Science (INF) > Software Composition Group (SCG) [discontinued] |
UniBE Contributor: |
Kuhn, Adrian |
Subjects: |
000 Computer science, knowledge & systems 500 Science > 510 Mathematics |
Language: |
English |
Submitter: |
Anja Ebeling |
Date Deposited: |
29 Jan 2018 14:54 |
Last Modified: |
11 Apr 2024 16:11 |
BORIS DOI: |
10.7892/boris.104579 |
URI: |
https://boris.unibe.ch/id/eprint/104579 |