David Stotts

     Web homepage

     Full CV

     Selected Papers

Research Summary ( recent items, past year or so )

The work described in the following links has been supported in whole or in part by the U.S. Environmental Protection Agency's Science to Achieve Results (STAR) program, grant #R-82795901. Although the research described here has been funded by the EPA, it has not been subjected to any EPA review and therefore does not necessarily reflect the views of the Agency, and no official endorsement should be inferred.

Elemental Design Patterns and Automated Design Pattern Analysis

In this work we have identified smaller program architectural units called elemental design patterns (EDP's). These EDPs (16 of them) can be composed to form all the OO Design Patterns in the now classic Gang of Four (GOF) text. Moreover, they are formally described in sigma calculus rather than informally defined. Being small, they are easy to find in source code (unlike the large GOF patterns). Being formally defined, we can use a theorem prover to locate their compositions, hence automate the discovery of the larger GOF patterns in source code.

This work is a completed PhD dissertation (Jason Smith, 12/2005).

UNC has a patent pending on this technology.

Scientific Model Federations

This work has produced a recent conference paper, an MS thesis (Dean Herington), and the software tool HUnit. HUnit is a publicly contributed Haskell version of the test tool JUnit.

Deco: A Declarative Coordination Framework for Scientific Model Federations
IEEE Automated Software Engineering '03, Montreal, Oct. 2003

Called DeCo, the software we have developed is a functional layer for interconnecting scientific models to produce large, federated scientific computations that cross the traditional boundaries of the various subdisciplines of science. The resulting federation is larger, more complex, and more complete than a model that could be produced by any single researcher. MIMS allows filters to be constructed and inserted between model programs that will transform data formats, manage mismatches in time scale and space scale, as well as perform any transformations needed to convert between different mathematical methods (such as meshes, grids, and differential equations).

we have plans to expand to model federations in biology, physiology, and bioinformatics.

Our current experiments are in the domain on environmental science, and are beginning experiments in broader domains. One investigation is for use in bioinformatics (cross-database and multi-tool genome searching); another is in cystic fibrosis research, producing a comprehensive human lung model (R. Superfine and 14 other UNC researchers in physics, medicine, computing, mathematics, chemisty, and biology).

Transparent Video Facetop

A novel video-based UI for both single-user PCs and paired collaborations, such as distributed pair programming (to follow).

This is a very new project. Here are some pictures of the single-user Facetop to give an idea of the concept. We have demo'ed it at UIST in November 2003

We have one conference paper accepted and one submitted on uses for the Facetop

Distributed Pair Programming and Distributed XP

"Distance matters" is a truism in collaborative systems. As a general aphorism, this has some merit. However the experiments I am doing with Laurie Williams at NC State are showing that distance doesn't always matter, and when it does, it doesn't matter as much as we thought.

Dr. Williams and I have been running experiments jointly between NCSU and UNC. We are working to answer several questions related to pair programmin, XP, and agile methods. If we presume that software must be developed distributedly, across the Internet (as many companies are finding they must do), will the benefits that are seen in side-by-side pair programming translate into the distributed environment? If so, how about full distributed XP? Is distributed development best done with synchronous, close pair collaboration, or are traditional methods with remote integration phases better? Will projected, large-screen video give synchronous collaborators a better sense of presence in software development, and will this make the development process more effective?

We organized a dPP/dXP workshop at the XP/Agile Universe conference in Chicago. It was attended by over 40 people, including Watts Humphrey and other representatives of the SEI.

We are working to create a joint software engineering class that can be offered concurrently at UNC and NC State, to teach distributed XP and distributed Agile Methods. I am teaching my third prototype of this seminar at UNC this spring (2004). All software is being developed using the collaborative infrastructure described in the following two papers.

Informal Formal Methods: Systematic Testing using JUnit

I think one of the most promising and useful ares for progress in formal methods is what I call "informal formal methods." This is where a formalism is used to guide a software engineer in accomplishing a task better, faster, more reliably, or more effectively, yet a full formal specification is not required. The result is a large percentage of the benefits of formal semantics without the full weight of the formality bearing on the developers. Our recent example comes from the area of using algebraic ADT semantics for guiding systematic testing; we used the very successful and popular JUnit tool as an experimental platform. Our early experiments have shown that the JAX systematic approach finds more errors than an ad hoc approach. Research with another successful formal method, model checking:

We are currently working to automate the JAX method using an approach we first developed for OO languages using C++. This work was based on Gannon's DAISTS system. The current goal is to retain as much informality as possible while still maintaining unambiguous semantics. Towards this end we use the programming language ML for specifications, assuming that programmers will like programming better than writing algebras. In essence we have them write algebras, but we just tell them its programming:

OvalTine and Ovid: Hyperlinks in Real-time and Stored Video Streams

My most recent accomplishments in the Hypermedia field have been in trying to make video data a first class form... meaning creating methods for allowing hyperlinks into video streams in as many ways as they can be put into text documents. We first produced OvalTine, a system that did real-time tracking of faces to allow hyperlinks in real-time video streams (like collaborative teleconferences). We then produced Ovid, a system to use the real-time tracking of OvalTine to do automated link markup of stored video data, as you find in digital libraries.

Model Checking and Web Research

This work produced a recent PhD dissertation (Jaime Navon).

I am interested in applications of model checking (automated verification) in software engineering and hypermedia documents. Application to hypermedia documents is a unique capability of my work, resulting from my view (developed in the Trellis project of the late 80's and mid 90's) of hyperdocuments as process descriptions rather than more static data structures in the traditional document sense.

Viewing hyperdocuments (web documents) as processes descriptions, analysis of them necessarily is more similar to analysis of programs than to documents. We have developed model checking methods for resolving the validity of browsing semantics of hypermedia, and for checking any expressible dynamic property.


Some recent work in using 3D object warping to disambiguate certain user interface situations in collaborative virtual environments, and a book chapter I wrote recently.