Since my graduate studies I have worked on several software tools independently as well as with my students and colleagues. A great many did not see much light of day, and died slow deaths as research prototypes. Others were longer lived, and and had some fruitful use in niche contexts. Here are a few notable examples and their stories…

TestFirstGauge – TFG (2004-2008)

I conceived the idea and designed this tool following a research project at Politecnico di Torino upon suggestions and input from colleagues Maurizio Morisio and Marco Torchiano. The initial version of TFG analyzes developer actions logged by University of Hawaii’s Hackystattool to gauge a developer’s adherence to the test-design development practice. The design was implemented by NRC guest worker Michelle Yihong Wang using Visual Basic, Excel, and Java. The tool inspired the PhD thesis of Hongbing Kou and the Zorro plugin for the Hackystat tool. In an earlier version of Hackystat, TFG’s functionality was fully re-implemented with several ehnancements in the Zorro plugin for the Eclipse environment . TFG’s design and functionality were revised in early 2009 by me and Dr. Burak Turhan to work with the Visual Studio environment for use in an industrial study of test-driven development. The revisions are being implemented by Burak Turhan.

Lizzy (2003-2005)

Implemented using the test-driven development practice in Perl together with lead author Alain Désilets(with contributions from Marta Stojanovic and Patrick Paul) at NRC, Lizzy started as an experiment. It’s one of the earlier wiki implementations based on Ward Cunningham’s original WikiWikiWeband QuickWiki. Several instances of Lizzy have been deployed within NRC’s Institute for Information Technology as a collaboration and project management tool between 2004 and 2009. The Lizzy project inspired later work by Alain Désilets and Marta Stojanovic on wiki usability, pedogogical use of wikis, and multilingual support in collaboration tools.

Interpreter and Visualizer for the Extended Style Notation – ESN (1997)

Developed in Java with Dr. Oryal Tanir of Bell Canada and NRC intern Stefan Koupenov, ESN tools allowed a user to symbolically specify classes of topologies, visualize them, and map those topologies to compose distributed system specifications in a simulation language invented by Dr. Tanir.

SPINe (1994)

SPINe was an extension to the popular SPIN tool for specifying and validating distributed system specifications. Written in C, it allowed the SPIN tool originally developed by AT&T Labs’ Gerard Holzmann with the ability to check behavioral equivalences between two distributed protocol specifications written in SPIN’s C-like specification language Promela. SPINe was the first of equivalence checking implementation in an industrial-scale validation tool.

DCP Synthesizer (1989)

The DCP system was originally developed in Common Lisp by my Master’s thesis supervisor Robert deB Johnston of INRS-Télécommunications to implement a process algebra called Discrete Communicating Processes. DCP system allowed formal reasoning about concurrent programs based on behavioral inequalities. As part of my master’s thesis work, I extended DCP’s interpreter component with the ability to synthesize state machines satisfying such behavioral equalities.