Research

My research involves building development tools that help programmers deal with complexities of modern software development. This page presents some of the research projects that I have been involved with over the years.

Agitar Software Laboratories

Agitar Software was an advanced stage technology start-up in Mountain View, CA. Agitar’s mission was to make unit testing – the practice in which developers test their code as they write their code – easy and effective. In July 2008 Agitar Software was acquired by McCabe Software. My research at Agitar spaned a wide range of software development problems related to automated testing of software, from program analysis algorithms to software development productivity. I also managed Agitar’s relations with the academic research community.

  • Brett Daniel and Marat Boshernitsan. Predicting Effectiveness of Automatic Testing Tools. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, L’Aquila, Italy. September 2008. [Paper] [More…]
  • Brett Daniel and Marat Boshernitsan. Predicting and Explaining Automatic Testing Tool Effectiveness. Technical Report UIUCDCS-R-2008-2956. University of Illinois at Urbana-Champaign, April 2008. [Report] [More…]
  • David Saff, Marat Boshernitsan, Michael D. Ernst. Theories in Practice: Easy-to-Write Specifications that
    Catch Bugs.
    Technical Report MIT-CSAIL-TR-2008-002. MIT CSAIL, Cambridge, MA, Jan 14 2008. [Report] [More…]
  • David Saff and Marat Boshernitsan. The Practice of Theories: Adding “For-all” Statements to “There-Exists” Tests. Unpublished Whitepaper. December 1, 2006. [Paper] [More…]
  • Marat Boshernitsan, Roongko Doong, Alberto Savoia. From Daikon To Agitator: Lessons and Challenges in Building a Commercial Tool for Developer Testing. In Proceedings of the 2006 International Symposium on Software Testing and Analysis, Portland, ME, July 2006. [Paper] [Slides] [More…]

iXj: Interactive Source-to-Source Transformations for Java

iXj is a tool for editing source code using program transformations. iXj automates the process of making similar, conceptually identical changes to a large number of source code locations, significantly decreasing the effort expended on this clerical task. Unlike canned refactorings found in some modern programming tools, iXj transformations are constructed by the programmers and can be task- and project- specific. iXj was prototyped in Eclipse, with the Harmonia framework providing the necessary analysis infrastructure.

  • Online demonstration of iXj: Flash | Quicktime
  • Marat Boshernitsan, Susan L. Graham, Marti A. Hearst. Aligning Development Tools with the Way Programmers Think About Code Changes. In Proceedings of the 2007 SIGCHI Conference on Human Factors in Computing Systems, San Jose, CA, May 2007. [Paper] [Slides] [Demo: Flash | Quicktime] [More…]
  • Marat Boshernitsan. Program Manipulation via Interactive Transformations. Ph.D. Dissertation, Technical Report UCB/EECS-2006-100. University of California, Berkeley, CA, July 25 2006. [Report] [Slides] [More…]
  • Marat Boshernitsan and Susan L. Graham. Interactive Transformation of Java Programs in Eclipse. In Proceedings of the 28th International Conference on Software Engineering, Shanghai, China, May 2006. [Paper] [Slides] [More…]
  • Marat Boshernitsan and Susan L. Graham. iXj: Interactive Source-to-Source Transformations for Java. In Companion to the 19th annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, Vancouver, BC, Canada, October 2004. [Paper] [Poster] [More…]
  • Marat Boshernitsan and Susan L. Graham. A Case for Interactive Source-to-Source Transformations. In Proceedings of the Software Transformation Systems Workshop at the Third International Conference on Generative Programming and Component Engineering, Vancouver, BC, Canada, October 2004. [Paper] [Slides] [More…]
  • Marat Boshernitsan and Susan L. Graham. Program Manipulation via Interactive Transformations. In Companion to the 18th annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, Anaheim, CA, USA, October 2003. [Paper] [Slides] [Poster] [More…]

Harmonia: A Framework for Constructing Interactive Language-Aware Programming Tools

Harmonia is a framework providing an infrastructure for building language-based interactive tools. The framework includes a persistent document mode, incremental lexical, syntactic, and semantic analysis engines, as well as other language-based facilities. The analysis engine can support any textual language that has formal syntactic and semantic specifications. Descriptions exist for C, C++, Java, Cool, XML, Scheme and a few other languages. The document model includes non-linguistic entities such as whitespace and comments, and supports malformed, incomplete, or inconsistent document states.

Harmonia is the work of many people. Many of the Harmonia components were originally part of Ensemble, an earlier Berkeley project. My contributions to Harmonia include the overall architecture of the framework, improvements to the analysis algorithms, new tools for the development of language plug-ins, and the foreign language binding mechanism for Tcl and Java. More recently, I designed and implemented a Harmonia/Eclipse plug-in, integrating Harmonia’s incremental program analysis and persistent document representation with Eclipse JDT. This plug-in provides the necessary infrastructure for iXj.

  • Harmonia Project Web Site
  • Andrew Begel, Marat Boshernitsan, Susan L. Graham. Transformational Generation of Language Plug-ins in the Harmonia Framework. Technical Report UCB/CSD-05-1370. University of California, Berkeley, January 2005. [Report] [More…]
  • Marat Boshernitsan. Harmonia: A Flexible Framework for Constructing Interactive Language-Based Programming Tools. M.S. Thesis, Technical Report UCB/CSD-01-1149. University of California, Berkeley, June 2001. [Report] [More…]
  • Marat Boshernitsan and Susan L. Graham. Designing an XML-based exchange format for Harmonia. In Proceedings of the Seventh Working Conference on Reverse Engineering, Brisbane, Australia, November 2000. [Paper] [Slides] [More…]

CodeProcessor

CodeProcessor is an advanced source-code editor that uses automatic formatting based on the typographic conventions to improve readability of program source code. CodeProcessor was originally conceived by Michael L. Van De Vanter of the Sun Microsystems Laboratories. Together with Michael, I developed a prototype implementation while interning at SunLabs. CodeProcessor demonstrates that a program editor utilizing a token-based document model (rather than plain text) can provide very powerful word processor-like capabilities for presentation and manipulation of source code.

  • CodeProcessor screenshot
  • Michael L. Van De Vanter and Marat Boshernitsan. Displaying and Editing Source Code in Software Engineering Environments. In Proceedings of the Second International Symposium on Constructing Software Engineering Tools (CoSET’2000), Limerick, Ireland, 2000. [Paper] [More…]