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.
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.
We have one book chapter accepted for publication, "Elemental Design Patterns and Compositional Detection Methods for Object Oriented Source Code," to appear in Design Pattern Formalization Techniques, T. Taibi (ed.), Idea Group, Inc., Fall 2006.
A paper on extending this work to software architecture analysis was presented at the "Extending SPQR to Architectural Analysis by Semi-Automated Training," Working IEEE/IFIP Conference on Software Architecture (WICSA), Pittsburgh, PA, Nov. 6-10, 2005.
Towards a Science of Design
Position paper at NSF workshop, Nov. 2003
SPQR: Flexible Automated Design Pattern Extraction from Source Code
IEEE Automated Software Engineering '03, Montreal, Oct. 2003
Basic EDP's
IEEE/NASA SEL Workshop, Dec. 2002
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).
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
First Facetop demo
UIST 2003
FaceSpace; Endo- and Exo-Spatial Hypertext in the
Transparent Video Facetop
ACM Hypertext 2004 (accepted to appear)
Support for Distributed Paired Collaborations in the
Transparent Video Facetop
ACM CSCW 2004 (submitted)
"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.
Support for Distributed Pair Programming in the
Transparent Video Facetop
XP/Agile Universe 2004 (received Best Research Paper Award)
Virtual Teaming: Experiments and Experiences with Distributed Pair Programming
XP/Agile Universe, 2003
Exploring the efficacy of distributed pair programming
XP/Agile Universe, Chicago 2002
Do the benefits of XP and PP hold with remote, distributed development?
OOPSLA 2002
Educators Workshop:
Exploring Pair Programming in Distributed
Object-Oriented Team Projects
JAX
XP/Agile Universe 2002
Formal methods for systematic XP testing with JUnit
HUnit
Hunit is a publicly contributed version of the popular testing tool
JUnit. We developed it for the functional language Haskell
as part of our research in interoperable environmental
science models.
WWW 2002:
Model Checking CobWeb Protocols for Verification
of HTML Frames Behavior
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:
AJAX
Automating an Informal Formal Method for Systematic JUnit Test
Suite Generation
ISSTA 96
Daistish Automated Axiomatic Testing for OO Programs
FaceSpace; Endo- and Exo-Spatial Hypertext in the
Transparent Video Facetop
ACM Hypertext 2004 (accepted to appear), use of OvalTine trackers in
broader context
OvalTine
ACM Hypertext, San Antonio, 2000
Face tracking for hyperlinks in real-time video streams
Ovid
ACM Hypertext, College Park, 2002
OvalTine applied to stored video, digital libraries
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.
WWW 2002:
Model Checking CobWeb Protocols for Verification
of HTML Frames Behavior
Distributed Multimedia Systems 2002:
CobWeb: Visual Design of Collaboration Protocols for
Dynamic Group Web Browsing
ACM TOIS, '98
Hyperdocuments as Automata (browsing semantics and verification)
WWW 1996
Enhanced Graph Models in the Web: Multi-client, Multi-head, Multi-tail Browsing
WWW 1995
Multi-head/Multi-tail Mosaic: Adding Parallel Automata Semantics to the Web
Distributed Multimedia Systems 2002:
3D Sliders, Programming Uses for 3D Object Warping in Collaborative
Virtual Environments
The Perl Scripting Language
Book Chapter in Wiley's Internet Encyclopaedia