Alex Baker: Research Design
Software Design
Software Design Education
_ Home - Research - Publications - Contact - Interests

I have a variety of research interests, major topics include:

Software Design Meetings
My dissertation research is focused on software developers working together to solve software design problems. In particular, I'm interested in the work that designers do when working together at whiteboards;
- What kind of drawings are created?
- What discussions take place?
- What needs underlie these actions?
- What patterns govern the processes that tend to emerge?

In practical terms, this work centers around protocol analysis of recorded software design sessions, gathered according to a variety of methods:
- Videotaping expert software designers working in a laboratory setting.
- Videotaping expert software designers working in meeting rooms "in the wild".
- Recording fine-grained logs of users' sessions with Calico, an electronic whiteboard-based sketching tool that I co-designed with members of my research group. These logs are then analyzed via a log visualization tool that I developed (depicted below).

The data gathering and analysis phases of this research are currently ongoing.



Software Design (in General)
Two fundamental beliefs underlie my study of software design:
- The whole of the software development process should be considered a design process, including activities traditionally categorized as "requirements" and "implementation".
- Designing software presents a different kind of challenge than designing a physical product. But the software process is not fundamentally unique, and has a role within the broader concept of design.

These viewpoints have not been broadly accepted by the software engineering research community, but they provide great potential for understanding the software process. We have a great deal to learn from other design fields' communities, and from the body of work written about design in general. I have written a series of position papers on the subject, one entitled Examining Software Design from a General Design Perspective being the most recent.



Software Design Education
I've long been interested in software design education, and once again, two main principles underlie my perspective on the subject:
- Being an effective software designers involves more than structuring code.
- Learning how to design software requires multiple attempts, and critiques of those attempts. It cannot be understood in the abstract.
Of course, providing even a single broad experience of designing software to students in a classroom setting is challenging enough; providing several can be downright daunting.

I recently worked with Professor van der Hoek on creating a new 2-part course on software design at UCI. This course presented a general design perspective on the subject, as well as a studio-like setting in which several designs were created, explored and critiqued. Several approaches were used: students sometimes created high-level designs, critiqued each others' designs, or implemented another team's design. The courses are described in more detail in the paper An Experience Report on the Design and Delivery of Two New Software Design Courses, which is to appear at SIGCSE 2009.

Another approach that I've explored is the simulation of software development processes, as a way to illustrate the importance of particular choices, without the time and resource costs associated with engaging students in a real project. In particular, I developed Problems and Programmers, a physical card game for teaching software engineering. This provides an interactive, explorable experience, with the benefits of face-to-face interaction between the students. I consider the game to be a work in progress, and have several ideas for improvement, but this remains a secondary research focus for the time being.



Novel Tool Support
Finally, I've been involved in the high-level design of several tools for supporting software design. One such project was Lighthouse, a tool that provides an up-to-the-minute view of a project's emerging design alongside a developer's primary coding window. One possible use of the tool, utilizing two monitors side-by-side, is depicted on the left below. In addition, I was involved in the early design of Easel, though the tool has since evolved into a slightly different form than initially conceived. It is depicted on the right below. And, of course, I continue to be involved in the development of Calico and its related log file visualizers.