<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Developing a Visual Code-dependency Analysis Tool for the Visual Studio IDE: Research Meets Practice in Showing Containment in an Interactive Diagramming Tool</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tim Dwyer</string-name>
          <email>timdwyer@microsoft.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Microsoft Corp.</institution>
          ,
          <addr-line>One Microsoft Way, Redmond, WA</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The Microsoft Visual Studio IDE includes various tools for diagrammatic code understanding. I am currently involved in the final stages of preparing the next major version (11) for release later this year. In particular, I am working on a visual dependency analyzer that enables developers to dynamically build up a diagram from a particular piece of code or functionality. In designing and developing this product we have explored a number of methods for showing containment of various code elements to different types of grouping. Such a grouping⎯ for example, members within types, types within namespaces, and so on⎯ is fundamental to organizing object-oriented software, but is also the ticket to scalability of diagrams representing code. That is, grouping at various levels provides degrees of abstraction that can be applied to reduce the complexity of the visualization.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Using the Euler diagramming convention to show these groupings as overlapping
regions seems very natural. However, as many researchers in the field have observed,
the topology of these overlapping regions can quickly become complex and extremely
difficult to draw in a readable way. In our exploration of the design space for visual
code understanding we have experimented with many different ways to effectively
convey grouping in code-dependency diagrams. It is a cross-disciplinary effort
involving developers and UX researchers from within the Visual Studio team, in
collaboration with HCI and algorithms researchers from Microsoft Research. Some of
this work has been published as research papers while some of it has given us
valuable insight but has not yet been distilled into easily publishable units. In this talk, I
look forward to sharing some of these anecdotes as I reminisce the experience of
developing a high-quality commercial domain-specific diagramming tool for
mainstream customers. A process that has also necessitated exploration of novel visual
conventions, layout techniques and interaction.</p>
    </sec>
  </body>
  <back>
    <ref-list />
  </back>
</article>