Harmonia Research Project
July 25, 2007. Harmonia Publication: Marat Boshernitsan, Susan L. Graham, Marti A. Hearst. Aligning Development Tools with the Way Programmers Think About Code Changes. In the ACM's Conference on Human Factors in Computing Systems, San Jose, California, April 2007 (PDF)
July 25, 2007. Harmonia Publication: Marat Boshernitsan. Program Manipulation via Interactive Transformations. Ph.D Dissertation. Technical Report EECS-2006-100, University of California, Berkeley, July 25, 2006 (PDF, 1.7M)
Harmonia: A Framework for Language-Aware Programming Tools
Harmonia is an open, extensible framework for constructing interactive, language-aware programming tools. Harmonia is a descendent of our earlier projects, Pan and Ensemble and utilizes many analysis technologies developed for those projects. Harmonia includes an incremental GLR parser (which admits a more natural syntax specification than LR), a static semantic analysis engine, and other language-based facilities. Program source code is represented by annotated abstract syntax trees augmented with non-linguistic material such as whitespace and comments. The analysis engine can support any textual language that has formal syntactic and semantic specifications. The incremental nature of the analysis supports a history mechanism that is used both for history-based diagnostic information and for contextual rollback. New languages can be easily added to Harmonia by giving the system a syntactic and semantic description, which is compiled into a dynamically loadable extension for that language. Among the languages for which descriptions exist are Java, Cool (a teaching language), XML, Scheme, Cobol, C, and C++. Other languages are being added to Harmonia as resources permit.
Harmonia: A Platform for Programmer-Computer Interaction Research
The language technology implemented in the Harmonia framework is being used in two current research projects: support for high-level interactive transformations and programming by voice. Our research in interactive program transformations focuses on the problem of programmers' expression and interaction with a programming tool. We are combining the results from psychology of programming, user-interface design, software visualization, program analysis, and program transformation to create a novel programming environment that enables the programmer to express source code manipulations in a high-level conceptual manner. Programming by voice research augments traditional text editing by allowing the developer dictate chunks of program source code as well as verbalize high-level editing operations. This research helps to lower frustrating barriers for software developers that suffer from repetitive strain injuries and other related disabilities that make typing difficult or impossible.
Harmonia: A Plug-in for Program Editors
Harmonia can be used to augment text editors to robustly support the language-aware editing and navigation of documents, including those that are malformed, incomplete, or inconsistent (i.e. the document can remain in that state indefinitely). We have integrated Harmonia into XEmacs by creating a new Emacs "mode" that provides interactive, on-line services to the end user in the program composition, editing and navigation process.
If you're a Berkeley graduate student or undergraduate looking for projects, please take a look at our available projects. If you are interested in collaborating with us, or wish to know more about the project, please send us email.