The Artima Developer Community
Sponsored Link

Exploring Design Spaces
The Creative Side of Software Design
by Bill Venners
May 19, 2003

<<  Page 3 of 4  >>


ServiceUI, Place, and SuiteRunner

The ServiceUI project clearly involved exploring fresh territory. Figuring out how to associate user interfaces with service proxy objects hadn't been done before. It was not clear how to do it. Over the course of nine months in 1999 and 2000, over 40 members of the Jini Community collaborated on the design of the ServiceUI API, primarily via the project's mailing list. Although I released several iterations of ServiceUI API code along the way, the main way we explored this project's space was via discussion on the mailing list. About a year after I started the project, I released the specification and code for ServiceUI API Version 1.0. The ServiceUI API was accepted as a de facto standard in the Jini Community, and was recently approved as the first de jure Jini Community standard via the new Jini Community Decision Process (JDP).

After the ServiceUI API was released, I turned my open-source attention to how users would organize their relationships to network services delivered as objects. The original vision I had was of a network service that worked similarly to the Macintosh Finder. But instead of organizing files in directories, this organizer would organize services into places, where each place was itself a network mobile service represented by a proxy object. I started the Place project to investigate this new territory.

Although the Macintosh Finder certainly already existed, delivering a Finder-like service across a network was a very different problem. The vision for this project was harder to explain than that of the ServiceUI project, and fewer members of the Jini Community participated. But over the course of two years Berco Beute, Jakob Eg Larsen, Frank Sommers and I tried to figure it out. The nature of exploration in this project was primarily in-person discussion at rather infrequent face-to-face meetings. We also built and iteratively refactored a Place API—code that helped us find our way.

The Place project proved to be difficult path. In late 2001, I got to a point where I lost confidence in the API, because our exploration had uncovered as many issues as answers. In addition, I felt the Place API was too complicated, and I couldn't see how to make it any simpler.

About that time I needed to write a conformance test kit for the ServiceUI API, to prepare it for being proposed as a standard via the JDP. This effort spawned my third open-source project, Artima SuiteRunner, a JUnit-like testing toolkit. For the next year I put the Place project on hold and focused instead on Artima SuiteRunner.

The SuiteRunner project was to a great extent an attempt to redesign JUnit, the de facto standard open source testing toolkit for Java. Because of the existence of JUnit, and dozens of JUnit extensions, the design path for Artima SuiteRunner was much clearer than that of the ServiceUI or Place APIs. But even though we could draw insights from the prior work of others, the design of Artima SuiteRunner nevertheless involved a lot of exploration.

For example, one area I wanted to address better than JUnit was distributed systems testing, including Jini and J2EE systems, but I wasn't sure how to do it. I initially released SuiteRunner without solving the distributed systems testing problem. One day I received a zip file in an unsolicited email from Matt Brauer. Matt had been frustrated with testing J2EE applications with Cactus and JUnitEE, so he made some enhancements to Artima SuiteRunner's code to make it more suitable for testing J2EE systems. One change he made was to add an HTTP server to SuiteRunner so it could serve up the class files of the test to other virtual machines on the network. I thought that was a great idea, one which helped me see a path that will make SuiteRunner more suitable for distributed systems testing.

<<  Page 3 of 4  >>

Sponsored Links

Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use