-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiff.tex
4072 lines (3001 loc) · 528 KB
/
diff.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% This is a template for Ph.D. dissertations in the UCI format.
%
% All fonts, including those for sub- and superscripts, must be 10
% points or larger. Recommended sizes are 14-point for chapter
% headings, 12-point for the main body of text and figure/table
% titles, and 10-point for footnotes, sub- and super-scripts, and text
% in figures and tables.
%
% Notes: Add short title to figures, sections, via square brackets,
% e.g. \section[short]{long}.
%
\documentclass[12pt,fleqn]{ucithesis}
% A few common packages
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{array}
\usepackage{graphicx,subfigure}
\usepackage{natbib}
\usepackage{relsize}
% Some other useful packages
\usepackage{caption}
%\usepackage{subcaption} % \begin{subfigure}...\end{subfigure} within figure
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{nameref}
\usepackage{epstopdf}
\usepackage{booktabs}
\usepackage{enumerate}
\usepackage{longtable}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{hhline}
% plainpages=false fixes the "duplicate ignored" error with page counters
% Set pdfborder to 0 0 0 to disable colored borders around PDF hyperlinks
\usepackage[plainpages=false,pdfborder={0 0 0}]{hyperref}
% Uncomment the following two lines to use the algorithm package,
% which provides an algorithm environment similar to figure and table
% ("\begin{algorithm}...\end{algorithm}"). A list of algorithms will
% automatically be added in the preliminary pages. Note that you
% probably want a package for the actual code to go with this (e.g.,
% algorithmic).
%\usepackage{algorithm}
%\renewcommand{\listalgorithmname}{\protect\centering\protect\Large LIST OF ALGORITHMS}
% Uncomment the following line to enable Unicode support. This will allow you
% to enter non-ASCII characters (such as accented characters) directly without
% having to use LaTeX's awkward escape syntax (e.g., \'{e})
% NOTE: You may have to install the ucs.sty package for this to work. See:
% http://www.unruh.de/DniQ/latex/unicode/
%\usepackage[utf8x]{inputenc}
% Uncomment the following to avoid "widowing", where page breaks cause
% single lines of paragraphs to float onto the next page (this is not
% a UCI requirement but more of an aesthetic choice).
%\widowpenalty=10000
%\clubpenalty=10000
% Modify or extend these at will.
\newtheorem{theorem}{{\sc Theorem}}[chapter]
\newtheorem{definition}{{\sc Definition}}[chapter]
\newtheorem{example}{{\sc Example}}[chapter]
% Uncomment the following to have numbered subsubsections (by default
% numbering goes only to subsections).
%\setcounter{secnumdepth}{4}
% Set this to only select a subset of the includes directives below.
% Very handy to speed up compilation if you're working on a certain
% part of your thesis. It conserves page numbers, references, etc.
% even for non-included files.
\makeatletter
\def\@cline#1-#2\@nil{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\advance\@multicnt-#1%
\advance\@multispan\@ne
\leaders\hrule\@height\arrayrulewidth\hfill
\cr
\noalign{\nobreak\vskip-\arrayrulewidth}}
\makeatother
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF UNDERLINE PREAMBLE %DIF PREAMBLE
\RequirePackage[normalem]{ulem} %DIF PREAMBLE
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1} %DIF PREAMBLE
\providecommand{\DIFaddtex}[1]{{\protect\color{blue}\uwave{#1}}} %DIF PREAMBLE
\providecommand{\DIFdeltex}[1]{{\protect\color{red}\sout{#1}}} %DIF PREAMBLE
%DIF SAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddbegin}{} %DIF PREAMBLE
\providecommand{\DIFaddend}{} %DIF PREAMBLE
\providecommand{\DIFdelbegin}{} %DIF PREAMBLE
\providecommand{\DIFdelend}{} %DIF PREAMBLE
%DIF FLOATSAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddFL}[1]{\DIFadd{#1}} %DIF PREAMBLE
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}} %DIF PREAMBLE
\providecommand{\DIFaddbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFaddendFL}{} %DIF PREAMBLE
\providecommand{\DIFdelbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFdelendFL}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF HYPERREF PREAMBLE %DIF PREAMBLE
\providecommand{\DIFadd}[1]{\texorpdfstring{\DIFaddtex{#1}}{#1}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{\texorpdfstring{\DIFdeltex{#1}}{}} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF
\begin{document}
% Preliminary pages are always loaded (TOC, CV, etc.)
\thesistitle{
Calico: An early-phase deisgn tool to support the design behaviors of software designers at the whiteboard
}
\degreename{Doctor of Philosophy}
% Use the wording given in the official list of degrees awarded by UCI:
% http://www.rgs.uci.edu/grad/academic/degrees_offered.htm
\degreefield{Computer Science}
% Your name as it appears on official UCI records.
\authorname{Nicolas Francisco Mangano}
% Use the full name of each committee member.
\committeechair{Andre' van der Hoek}
\othercommitteemembers
{
Professor David Redmile\\
Professor Gary Olson
}
\degreeyear{2013}
\copyrightdeclaration
{
{\copyright} {\Degreeyear} \Authorname
}
% If you have previously published parts of your manuscript, you must list the
% copyright holders; see Section 3.2 of the UCI Thesis and Dissertation Manual.
% Otherwise, this section may be omitted.
% \prepublishedcopyrightdeclaration
% {
% Chapter 4 {\copyright} 2003 Springer-Verlag \\
% Portion of Chapter 5 {\copyright} 1999 John Wiley \& Sons, Inc. \\
% All other materials {\copyright} {\Degreeyear} \Authorname
% }
% The dedication page is optional.
\dedications
{
(Optional dedication page)
To ...
}
\acknowledgments
{
I would like to thank...
(You must acknowledge grants and other funding assistance.
You may also acknowledge the contributions of professors and
friends.
You also need to acknowledge any publishers of your previous
work who have given you permission to incorporate that work
into your dissertation. See Section 3.2 of the UCI Thesis and
Dissertation Manual.)
}
% Some custom commands for your list of publications and software.
\newcommand{\mypubentry}[3]{
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}p{4.5in}r}
\textbf{#1} & \textbf{#2} \\
\multicolumn{2}{@{\extracolsep{\fill}}p{.95\textwidth}}{#3}\vspace{6pt} \\
\end{tabular*}
}
\newcommand{\mysoftentry}[3]{
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}lr}
\textbf{#1} & \url{#2} \\
\multicolumn{2}{@{\extracolsep{\fill}}p{.95\textwidth}}
{\emph{#3}}\vspace{-6pt} \\
\end{tabular*}
}
% Include, at minimum, a listing of your degrees and educational
% achievements with dates and the school where the degrees were
% earned. This should include the degree currently being
% attained. Other than that it's mostly up to you what to include here
% and how to format it, below is just an example.
\curriculumvitae
{
\textbf{EDUCATION}
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}lr}
\textbf{Doctor of Philosophy in Computer Science} & \textbf{2012} \\
\vspace{6pt}
University name & \emph{City, State} \\
\textbf{Bachelor of Science in Computational Sciences} & \textbf{2007} \\
\vspace{6pt}
Another university name & \emph{City, State} \\
\end{tabular*}
\vspace{12pt}
\textbf{RESEARCH EXPERIENCE}
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}lr}
\textbf{Graduate Research Assistant} & \textbf{2007--2012} \\
\vspace{6pt}
University of California, Irvine & \emph{Irvine, California} \\
\end{tabular*}
\vspace{12pt}
\textbf{TEACHING EXPERIENCE}
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}lr}
\textbf{Teaching Assistant} & \textbf{2009--2010} \\
\vspace{6pt}
University name & \emph{City, State} \\
\end{tabular*}
\pagebreak
\textbf{REFEREED JOURNAL PUBLICATIONS}
\mypubentry{Ground-breaking article}{2012}{Journal name}
\vspace{12pt}
\textbf{REFEREED CONFERENCE PUBLICATIONS}
\mypubentry{Awesome paper}{Jun 2011}{Conference name}
\mypubentry{Another awesome paper}{Aug 2012}{Conference name}
\vspace{12pt}
\textbf{SOFTWARE}
\mysoftentry{Magical tool}{http://your.url.here/}
{C++ algorithm that solves TSP in polynomial time.}
}
% The abstract should not be over 350 words, although that's
% supposedly somewhat of a soft constraint.
\thesisabstract
{
The abstract of your contribution goes here.
}
%%% Local Variables: ***
%%% mode: latex ***
%%% TeX-master: "thesis.tex" ***
%%% End: ***
\preliminarypages
% Include the different components of your thesis, in separate files.
\newpage \chapter{Introduction}
\label{chapter:introduction}
Often when developers are faced with a design challenge, they will turn to the whiteboard. This is typical during the conceptual stages of software design, when no code is in existence yet, but may also happen when a significant code base has already been developed, for instance, to plan new functionality or discuss optimizing a key component. Design sessions at the whiteboard may even arise spontaneously, such as when a developer has to refactor some code or discuss how to best integrate a new feature.
Compared to the polished, precise, and typically detailed models software designers produce using modern software design tools, the content they create at the whiteboard consists of rough sketches and imprecise approximations of the design they have in mind, which are continuously modified and refined as part of the design activity [3]. The sketches on the whiteboard wall shown in Figure \ref{figure:software-whiteboard} illustrate this point. The sketches are the result of many design sessions at a startup software company. While the sketches clearly are unintelligible to those who were not present during the design sessions, they serve a crucial role for those who were: they were the vehicle for working through a complex design problem and making key decisions that defined the software to be developed.
\begin{figure*}[tbh]
\centering
\includegraphics[width=16cm,keepaspectratio]{./figures/software-whiteboard}
\caption{Whiteboard wall at a startup company.}
\label{figure:software-whiteboard}
\end{figure*}
Developers turn to the whiteboard for the flexibility and fluidity that it offers in the design experience \cite{cherubini2007let}. On a whiteboard, developers can freely sketch, branch off to another part of the design problem, return to a previous part, erase some portion of their work, redraw it, and so on, all without the typical restrictions one might find in a traditional software design environment. They can focus on designing without worrying about particular notations, how to navigate within a tool, etc.
While a preferred medium for design, a significant disadvantage of the whiteboard is that it is a passive medium: it has no facilities that purposefully support the design process. Particularly, whatever is drawn or written remains static and cannot be manipulated, other than drawing over it or erasing it. This is a less than desirable situation, because it is known that software designers often wish to manipulate a design at hand in more advanced ways than merely adding or erasing content \cite{dekel2007notation}. The whiteboard, thus, limits what they are able to do, or at least how efficient they might be at doing so.
The research community has acknowledged this problem and has contributed many approaches that rely on an electronic whiteboard to provide more advanced support (e.g., \cite{chen2008sumlow, landay1995interactive, hammond2006ladder, damm2000supporting, chung2005inkkit}). This support can be divided into two broad categories: (1) approaches that focus on sketch recognition, and (2) approaches that focus on management of sketched content. Approaches in the first category, sketch recognition, attempt to interpret the strokes made by the user to turn them into formal objects. Early work offered a predefined visual vocabulary for converting sketches into formal objects, such as UML diagrams \cite{chen2008sumlow} or user interface mockups \cite{landay1995interactive}, with tools that provided feedback to the designer based on the rules of the formal notation they support. Later work made visual vocabularies expandable by users \cite{hammond2006ladder} and made using the tools more flexible by delaying interpretation until it was desired by the user \cite{damm2000supporting}, sometimes even while retaining a sketchy appearance \cite{chung2005inkkit}.
Approaches in the second category, sketch management, help organize the potentially many and varied sketched artifacts that may be produced during meetings (Figure \ref{figure:software-whiteboard} is an illustration of this point). Early approaches provided access to a large number of whiteboards through a filmstrip \cite{stefik1987beyond}, hyperlinks \cite{Streitz:1994:DIM:192844.193044}, or hierarchical perspectives \cite{newman2003denim}. Later work automated particular aspects of managing sketches by automatically grouping clusters of sketches in close spatial proximity \cite{mynatt1999flatland}, shrinking sketches when moved to the periphery \cite{guimbretiere2001fluid}, or using metaphors such as Post-It Notes to organize and relate sketches \cite{klemmer2001designers}.
In examining these and other existing sketching tools, it is useful to consider their respective underlying motivations. In so doing, I observe that every sketch tool was designed to support a particular way of working at the whiteboard. For instance, Knight supports designers in refining initial rough sketches into more formal representations \cite{damm2000supporting}. As another example, Flatland supports designers in creating many different diagrams by automatically clustering sketches and adding specialized behaviors to those clusters \cite{mynatt1999flatland}.
In this dissertation, I define these ways of working as design behaviors. More precisely, I define a design behavior as a recurrent, recognizable set of actions serving a single purpose within a design meeting. In the remainder, I scope these actions to pertain to the whiteboard, that is, focus on creating and modifying its content, navigating the content created, and collaborating in all of these. That is, two designers calling up a colleague is not a design behavior in which I am interested. One designer refining a diagram drawn by another is.
Quite a few design behaviors have been identified in the literature, despite the fact that the study of software designers ``in action'' is still in its infancy. For example, in addition to refinement of sketches and supporting multiple different types of sketches, studies of designers at OOPSLA’s DesignFest found that software designers improvise their own notations and evolve their diagrams across many canvases \cite{dekel2007notation}. As another example, in-the-field observations at software companies found that software designers deliberately switch among formalisms and use provisionality to engage in a dialog with incomplete ideas \cite{petre2009insights}.
Broadly speaking, design behaviors that software designers perform can be be described as falling into three high level categories. The first is how they create and modify the kinds of things they draw, such as the different types of sketches they create and their improvisation of notations. The second is how they navigate those sketches, such as shifting focus between sketches of different types. The third is how they collaborate over their sketches, such as when designers switch from working together on a sketch synchronously to working asynchronously.
The key insight motivating our research is that software designers do not ``operate in'' or apply just one behavior for an entire design meeting. Rather, designers interleave design behaviors over the course of a design meeting, switching among them as they see fit to navigate a design problem and its potential solutions. For instance, a designer may first sketch two diagrams and juxtapose them side-by-side to evolve them in parallel, then record patterns of execution in one of the diagrams using an impromptu notation, and thereafter shift to a different aspect of the design problem altogether. Throughout, the designer fluidly exhibits a range of these different design behaviors, typically without an explicit trigger. Designers shift opportunistically, addressing the design at hand in the way they see most beneficial at that moment.
During a meeting, it is a natural choice for designers to limit themselves to a single tool to support them. That tool is typically a whiteboard or paper \cite{petre2009insights}, though in some cases it may be a computerized tool like the ones I have described above (e.g., SUMLOW \cite{chen2008sumlow}, Knight \cite{damm2000tool}, Flatland \cite{mynatt1999flatland}. In the latter case, the choice of tool determines the behavior or small set of behaviors that are now supported, as designers will seldom move between tools during meetings, because of the high cost associated with switching, both in terms of the cognitive burden on the user to switch contexts and in terms of the effort required to import or manually copy the contents. The cost is simply too great and designers, thus, are stuck with support for at best a few of their behaviors as embedded in the tool they happen to be using.
What is desired is a tool that supports a broad range of behaviors and allows developers to use the features naturally when they need them. Creating such a tool, however, is a non-trivial exercise. Simply picking up functionality from one tool and dropping it in another, and doing this repeatedly to support a multitude of behaviors, leads to tools that are highly disjoint. It is unclear, for instance, what it would mean for a tool to have available both multiple canvases in a filmstrip and functionality that automatically makes room on the current board? As another example, a tool that automatically recognize sketches and also supports emergent notations is equally difficult to envision as being conceptually clear to its users. Existing solutions do not necessarily stack their functionality gracefully, and the approach taken by one tool may collide with the support provided by another.
This dissertation explicitly addresses the interleaving behaviors that designers exhibit during software design at the whiteboard by taking a step back, examining a collection of behaviors, and contributing a new tool that is designed from the ground up to support this collection of behaviors with a small set of conceptually coherent functionalities. In order to put this into practice, I first built a basic sketching interface so that, as a baseline, designers may sketch and perform the same activities as they normally would on a whiteboard, but in a digital medium. Building on this foundation, I incrementally introduced features that support one or more design behaviors, yet minimally obstruct the support for other behaviors.
This approach was realized by the construction of a software tool called Calico. In this dissertation, I describe two versions of the tool, the first of which is an initial exploration in supporting a subset of the design behaviors with a sketch-based tool, and the second of which significantly iterates on the first to support the complete set of design behaviors I set out to support.
The first version of Calico supported an initial subset of the design behaviors with three main features. Figure \ref{fig:calico-version-one} depicts the interface for this version of Calico. The first feature, scraps, supported the kinds of sketches that designers created by providing a mechanism to create representations for box-and-arrow type diagrams and for manipulating sketches. The second feature, the grid, supported designers in navigating between sketches by providing a grid-layout of all canvases. Depicted in Figure \ref{fig:calico-version-one-grid}, users can partition their work over the canvases in the grid, and move the resulting canvases around to organize their work. The third feature, the palette, allowed users to save scraps (depicted on the right of Figure \ref{fig:calico-version-one-canvas}), and reuse them by dragging them back onto the canvas. Chapter 3 explains these features in greater detail.
\begin{figure}
\centering
\subfigure[Canvas perspective] {
\label{fig:calico-version-one-canvas}
\includegraphics[width=8.5cm,keepaspectratio]{./figures/CalicoVersionOneCanvas}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\subfigure[Grid perspective] {
\label{fig:calico-version-one-grid}
\includegraphics[width=6.5cm,keepaspectratio]{./figures/CalicoVersionOneGrid}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\caption {Calico version one}
\label{fig:calico-version-one}
\end{figure}
Calico version one was evaluated in a controlled laboratory study in which I compared the design activity of computer science graduate students engaged in a challenging software design problem using Calico against those using a regular whiteboard. I presented all participants with a prompt to design an educational traffic simulator and asked them to either design it using either Calico or the whiteboard. I found that the same design behaviors performed at the whiteboard were also performed in Calico, but in a slightly different manner. The participants in the Calico groups did use Calico's advanced feature set to perform the design behaviors, and reported that they found the features useful. However, the participants rarely used the palette. The design conversation of the groups were also analyzed using protocol analysis, which was done by breaking down the sessions into segmented phrases belonging to different categories of design. The breakdown of the categories demonstrated a very high correlation with reports from past research of how software design was performed at actual software companies, providing evidence that the design as it happened in our study matched that of design ``in the wild''. Lastly, the groups reported that the limitation of the interactive whiteboard used to only accept a single person drawing at a time hindered their ability to perform parallel work.
Following our experiences with Calico Version One, I rebuilt the tool from the ground up in Calico version two. The features in the second version of Calico significantly iterate on those in the first version to support the whole set of fourteen design behaviors I identified as crucial to designers at the whiteboard. This version is depicted in Figure \ref{fig:calico-version-two}. The scraps feature was significantly revised based on user feedback to better support the designers in the kinds of sketches designers create. The grid feature was replaced with intentional interfaces, depicted in Figure \ref{fig:calico-version-two-ii}, in order to better support designers in navigating among projects and the canvases capturing each project. In our experience with the grid, I saw that users typically dedicated entire rows or columns to a single topic. That behavior inspired intentional interfaces, in which canvases are layed out in a circle, and a set of canvases focusing on a particular topic can extend outwards radially (Figure \ref{fig:calico-version-two-ii}). Relationships between associated canvases are explicitly captured as well using light-weight tagging. Lastly, the software architecture of Calico itself was rebuilt using a client-server architecture in order to allow designers on different machines to collaborate on the same sketch. Chapter 5 explains these features, as well as others, in more detail.
\begin{figure}
\centering
\subfigure[Canvas perspective] {
\label{fig:calico-version-two-canvas}
\includegraphics[width=8.5cm,keepaspectratio]{./figures/CalicoVersionTwo/CalicoVersionTwoCanvas}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\subfigure[Intentional interfaces perspective] {
\label{fig:calico-version-two-ii}
\includegraphics[width=6.5cm,keepaspectratio]{./figures/CalicoVersionTwoCluster}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\caption {Calico version two}
\label{fig:calico-version-two}
\end{figure}
Calico Version Two was evaluated by deploying it at three field sites, including a commercial open source software company, an interaction design company, and a geographically distributed research group. All groups had access to a large electronic whiteboard running a Calico client, as well as pen-based tablets to connect to a shared Calico server. Members of each respective group conducted extensive design sessions using Calico to perform their own work within their respective organization. I collected and reviewed usage logs from the Calico server, and also conducted semi-structured face-to-face interviews. From this data, I evaluated the use of Calico's features in supporting the representations they created, their strategies for navigating between sketches, and how they collaborated on their sketches.
Overall, the field evaluations gave insight into how Calico supports design in a real world setting. Usage at the commercial open source software company provided insight in how Calico supported a group engaged in detailed coding, with the group at large and individuals using Calico multiple times, and also personal sessions over both software components and software code. Usage at the interaction design group provided insight into how Calico helped them create personas and storyboards, for example, by organizing pictures of those they interviewed in one- and two-dimensional plots. Lastly, usage by the research group provided insight into how Calico supported a set of distributed researchers in a long-term collaboration. Their use included the development of a software system over a period of several months, with intensive sessions during which they designed process flow diagrams to model the behavior of their software. Overall, the four features collectively supported all fourteen of the design behaviors both in ways that I did and did not expect.
\section{Thesis structure}
This thesis is organized into nine chapters. The remaining chapters are structured as follows:
\textbf{Chapter \ref{chapter:motivation} - \nameref{chapter:motivation}.} This chapter introduces the definition of design behaviors in detail and presents the grand set of design behaviors that I aim to support. The research question of this thesis is also introduced here.
\textbf{Chapter \ref{chapter:research-question} - \nameref{chapter:research-question}.} We pose the topic that this dissertation will address, layout a method by which I approach this topic, and how I will evaluate this approach.
\textbf{Chapter \ref{chapter:calico-version-one} - \nameref{chapter:calico-version-one}.} I describe the approach and features of the first version of Calico. This chapter introduces the first concepts of scraps, the grid, as well as the palette. The approach is evaluated in a comparative study between Calico and the regular whiteboard, both with respect to the design behaviors performed as well as the design conversations that took place.
\textbf{Chapter \ref{chapter:calico-version-two} - \nameref{chapter:calico-version-two}.} The second and final version of Calico is introduced in this chapter. The new features are introduced, including the revised interaction for scraps, the intentional interfaces features that replaces the grid, the distributed nature of the architecture, as well as other features targeted at supporting the full set of design behaviors.
\textbf{Chapter \ref{chapter:evaluation} - \nameref{chapter:evaluation}.} Here I present our evaluation of the final version of Calico ``in the wild'' at a commercial open source company, an interaction design company, and a distributed research group. A comprehensive evaluation was performed across three field sites, examining the use of features to support the representations used, the navigation among the sketches, and the collaboration patterns.
\textbf{Chapter \ref{chapter:discussion} - \nameref{chapter:discussion}.} In this chapter, I take a step back and put my work in a broader context. I discuss the implications of my findings, reconnect my work to the broader design literature, and provide some findings and observations that are outside the evaluative framework of the design behaviors, but are worthwhile to highlight nonetheless.
\textbf{Chapter \ref{chapter:related-work} - \nameref{chapter:related-work}.} I review the existing literature of tools that support software design on an electronic whiteboard, covering both tools that support sketch recognition and those that support the management of sketches.
\textbf{Chapter \ref{chapter:conclusions} - \nameref{chapter:conclusions}.} This chapter summarizes the contributions of my dissertation, and also provides some concluding remarks, and offers an outlook at future work. I particularly suggest the following future avenues of research : (1) the concept of compositional notations, which builds on scraps to provide more targeted support for software design notations, (2) informal analysis of scraps in order to provide intelligent feedback on designs in progress such as critiquing the performance of an activity diagram, (3) contextualized sketching, which may import artifacts from an existing code repository to help with design discussions in Calico, and (4) design histories, which may help with reflecting on design activities performed.
%%% Local Variables: ***
%%% mode: latex ***
%%% TeX-master: "thesis.tex" ***
%%% End: ***
\newpage
\newpage \chapter{Motivation}
\label{chapter:motivation}
\section{Design Behaviors}
Before introducing the design behaviors that I aim to address in my research, it is useful to firmly define a design behavior. I define a design behavior as \emph{a recurrent, recognizable set of actions serving a single purpose within a design meeting.} This definition recognizes the breadth of activities that may occur during a design meeting, from phoning a colleague, to using sticky notes to brainstorm, to sketching some concepts. For purposes of this dissertation, however, we scope our investigation to design behaviors that occur at the whiteboard, and specifically those pertaining to creating and modifying whiteboard content, navigating the content created, and collaborating in doing so.
I make four important observations regarding this definition:
\begin{itemize}
\item \textbf{\emph{recurrent}} -- A design behavior can be observed to happen consistently across many design meetings and across many designers. Performing a particular action once in a meeting, such as drawing a diagram of an intersection, does not make 'intersection drawing' a design behavior. Repeated behavior, particularly as applied to different types of diagrams, across multiple design meetings is required.
\item \textbf{\emph{recognizable}} -- A design behavior stands out as a coherent set of actions within an overall design meeting. The actions clearly belong together and can be distinguished from other groups of actions.
\item \textbf{\emph{set}} -- A design behavior necessarily unfolds over time with multiple actions that a designer undertakes. A single stroke or gesture does not qualify.
\item \textbf{\emph{serving a single purpose}} -- A design behavior has a purpose in the overall exploration of a design problem and its potential solutions. The set of actions contribute to furthering the exploration.
\end{itemize}
With this definition in hand, I examined both the software design literature and the broader design literature for design behaviors. What I found was that the general design literature is more mature than the software design literature, in that it has identified quite a few design behaviors that span across different design disciplines. For instance, designers across building architecture, engineering, and product design use constraints to guide their design thinking \cite{cross2007designerly}. As another example, designers in multiple fields use visual similarity between their sketches and the final product to help them envision the eventual physical artifact \cite{do1998right}.
The software design literature is only now beginning to catch up to the topic of design behaviors, with the emergence of studies that are beginning to look at software designers ``in action'' (e.g., \cite{baker2012guest,cherubini2007let,dekel2007notation,petre2009insights}). These studies, thus far, confirm the behaviors seen in other design disciplines, but at the same time do not confirm all of them yet, simply because the number of studies remains small. In the below, I include a subset of the design behaviors found in the general design literature, quite a few of which have already been confirmed in the software design literature (i.e., Behaviors 1, 2, 3, 4, 6, 7, 8, 9, 10, and 13) and some of which I believe will be confirmed in future (i.e., Behaviors 5, 11, 12, and 14). I feel confident in making this assumption because of my own informal observations of software designers in action, particularly in studying the videos of the SPSD 2010 workshop \cite{baker2012guest}. While I have not performed full studies of those videos expressly for the purpose of corroborating the general design literature, informally I have seen multiple instances of all of the behaviors I discuss in the below.
I separate the fourteen behaviors I intend to support with Calico into three categories:
\begin{enumerate}
\item Kinds of sketches software designers produce
\item How they use the sketches to navigate through a design problem
\item How they collaborate on them
\end{enumerate}
Each of these categories I detail below.
\section{Kinds of sketches software designers produce}
\label{chapter:motivation:kinds}
The first category deals with what the designers draw. The sketches that designers make at the whiteboard are typically not the goal in and of themselves and, as such, the types of sketches that designers make will vary depending on their current design activity. Sometimes, the sketches are used to help the designer in their thinking, by externalizing their ideas and thoughts onto the whiteboard \cite{lawson1994design}. Other times, the whiteboard is simply a medium to explain a thought, idea, or design in progress. The developer is not using it for problem solving, but instead to communicate information to a listener or collaborator \cite{eugene1992engineering}. Because of these different purposes, what designers draw is dependent on what they work on at what point during a design meeting. This leads to the following design behaviors.
\begin{enumerate}
\item \emph{They draw different kinds of diagrams.} In order to explore a design problem, software designers sketch many different types of diagrams, often within the same canvas [5,17]. They may sketch, for instance, entities and relationships, interface mockups, scenarios, architectures, and other kinds of diagrams \cite{cherubini2007let}. The freedom to sketch multiple kinds of diagrams in the same space is fundamental to supporting the exploration of the design space, as it enables designers to explore an issue from different angles, at different levels of abstraction, or even in different ways altogether. The sketches in Figure \ref{figure:motivation-designbehavior-kinds}, which contains a snapshot of the whiteboard from a design session in which two software designers are designing an intersection in a traffic simulator, present such an example. On the right, the designers used the sketch of a traffic intersection to help them in working through and refining the UML model of some of the entities in the simulation on the left. In turn, their work on the entities lead to revisions to the sketch of the intersection on the right. This behavior of working with multiple representations aligns well with the observed phenomenon that tools which restrict designers to use one notation hinder the design exploration and lead to fewer alternatives being considered \cite{shipman1999incremental}.
\begin{figure*}[tbh]
\centering
\includegraphics[width=8cm,keepaspectratio]{./figures/motivation-designbehavior-kinds.png}
\caption{Diagram from a design session that includes UML diagrams, a map, and annotations.}
\label{figure:motivation-designbehavior-kinds}
\end{figure*}
\item \emph{They produce sketches that draw what they need, and no more.} Of the many sketches that software designers create, few are drawn in full detail. Software designers typically can get what they need from a quick and incomplete sketch, e.g., a barebones user interface or boxes-and-arrows sketch \cite{virzi1996usability}. The benefit of a low-detail sketch is that it can be created quickly, and modified easily, giving the designer more rapid feedback \cite{cherubini2007let,petre2009insights}. Further, providing too much structure too soon can create unconscious barriers to change, resulting in a less exploratory and a less broad search for candidate solutions \citep{wong1992rough}. This behavior further breaks down into two parts:
\begin{enumerate}
\item \emph{They only draw what they need with respect to the design at hand.} Low-detail sketches tend to “incorporate relevant information and omit the irrelevant” \cite{tversky2002sketches}, including only as much detail as necessary to advance the designers' thinking. When talking, they will only draw what they need to reinforce what they want to communicate \cite{petre2009insights}. When thinking, they will only draw the details relevant to the immediate issue to help them reason \citep{dekel2007notation}. For example, the elements in the left of Figure \ref{figure:motivation-designbehavior-kinds} differ in the amount of detail they contain, where some contain data attributes and others contain only a name.
\item \emph{They use only those notational conventions that suit drawing what they need.} Sketches only include as much notational convention as the designer needs in a given situation \cite{petre2009insights}. For instance, if a sketch can express an idea using only boxes-and-arrows, then no more will be drawn, but if a sketch must represent a hierarchical relation, then a richer array of arrows will be present, typically following the convention of an existing formal notation.
\end{enumerate}
\item \emph{Over time, they refine and evolve their sketches.} The level of detail that designers want in their sketches varies over time. Early on, they may need very little, but later they may need much more as they expand on their ideas \citep{ossher12flexible}. Figure \ref{figure:motivation-designbehavior-refinement} presents an example of such a refinement, which details the evolution of the diagrams from Figure \ref{figure:motivation-designbehavior-kinds} from a relatively simple list, to a complex box-and-arrow diagram. As designers discuss and work through an idea, they will evolve their sketches with additional details to capture their decisions. In general, as part of this refinement process, the sketches will contain more visual precision, and the designer will rework the design to fix any inconsistencies \citep{damm2000supporting}. This behavior, too, breaks down into two parts:
\begin{enumerate}
\item \emph{They detail their sketches with increasing notational convention.} As a designer’s understanding of the design space matures, so does the representation that they use. As I already discussed, while the designer is aware of the full expressive powers of formal notations, they only borrow from those notations what they need at the time. However, as the designer progresses and the decisions firm up and additional, less-critical decisions are made, they tend to use more and more of the formal notational convention to represent their commitment to the chosen direction \citep{ossher2010flexible}. The formal elements in Figure \ref{figure:motivation-designbehavior-refinement} illustrate the decisions captured by the designers, where some arrows contain information about cardinality and some elements are contained in a bounding box to reflect their status as an entity in the model. Note that this move towards a more formal notation is not a strictly uniform activity, as different parts of the design may exist at different levels of maturity \citep{petre2009insights}.
\begin{figure*}[tbh]
\centering
\includegraphics[width=8cm,keepaspectratio]{./figures/motivation-designbehavior-refinement.png}
\caption{Diagram from a design session that was refined from a list into a UML diagram.}
\label{figure:motivation-designbehavior-refinement}
\end{figure*}
\item \emph{They appropriate a sketch in one notational convention into another notational convention.} Refinement of sketches does not always mean refinement toward and in a single notational convention. Sometimes, designers appropriate one kind of diagram into another \citep{dekel2007notation}. For example, the designers initially created the data model in Figure \ref{figure:motivation-designbehavior-refinement} as a list, then later added boxes, then boxes with arrows, and finally evolved the sketch into a UML class diagram. The designer in all likelihood did not plan this, but in working out their design in place, they re-appropriated the sketch to suit their needs \citep{mangano2012design}. They use what is readily available over re-creating a similar diagram, especially if they do not anticipate needing the original diagram later.
\end{enumerate}
\item \emph{They use impromptu notations.} Designers do not exclusively work with the notational convention they know (e.g., UML, ER, etc.), but also, at times, will improvise in the moment. The deviations that they make from standard notations, such as annotating UML diagrams with custom symbols, are deliberate additions that break convention to capture insights before an idea is forgotten. Beyond such annotations and minor deviations, developers also will sometimes adapt wholly new notations on the fly. These often relate to the problem domain that they are explaining, since few domain-specific notations exist, but shorthand is still needed to support the design process \cite{dekel2007notation}. For example, Figure \ref{figure:motivation-designbehavior-impromtu-1} uses freeform text to annotate what looks like a stripped down UML diagram rather than standard UML notation to include additional information. Further, Figure \ref{figure:motivation-designbehavior-impromtu-2} uses rectangular boxes with circles inside to represent a queue of cars waiting for a traffic light, circles with edges to represent traffic lights that govern each queue of cars, and a clock symbol to signify that events in the intersection occur according to a timer component. The designers created these notations on the spot to capture the ideas in their conversation.
\end{enumerate}
\begin{figure}
\centering
\subfigure[UML class diagram] {
\label{figure:motivation-designbehavior-impromtu-1}
\includegraphics[width=8.5cm,keepaspectratio]{./figures/motivation-designbehaviors-impromtu}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\subfigure[Traffic intersection] {
\label{figure:motivation-designbehavior-impromtu-2}
\includegraphics[width=6.5cm,keepaspectratio]{./figures/motivation-designbehaviors-impromtu-2}
% \resizebox{.45\hsize}{.35\hsize}{ }
}
\caption {Diagrams using impromtu notations}
\label{figure:motivation-designbehavior-impromtu}
\end{figure}
\section{How they use the sketches to navigate through a design problem}
\label{chapter:motivation:navigation}
The second category pertains to how designers use sketches to navigate the design space. While designers may create many different sketches over the course of a design meeting that vary in detail, notation, and what they represent, there is typically a thread of thought that relates the sketches and the ideas represented in them to one another.
\begin{enumerate}
\setcounter{enumi}{4}
\item \emph{They move from one perspective to another.} Software designers create many sketches through which they shift their focus between perspectives. The designer in Figure \ref{figure:motivation-designbehavior-perspectives}, for example, is working on the user interface component for a map, and may navigate to the two different views of the intersection to his left, or explore the UML model of its data model to the far left. The designer uses each new perspective to better understand how the parts of a design fit into the whole, asking questions such as: ``[what] if we look at it like this, from this angle, it fits together like this'' \cite{petre2009insights}. Each perspective presents a new way of looking at the same design, and what may be subtle in one perspective, may be more pronounced and easier to understand in another.
\begin{figure*}[tbh]
\centering
\includegraphics[width=14cm,keepaspectratio]{./figures/motivation-designbehavior-perspectives.png}
\caption{The designer navigates between different types of diagrams and abstractions.}
\label{figure:motivation-designbehavior-perspectives}
\end{figure*}
\item \emph{They move from one alternative to another.} In a sufficiently complex software design task, a software designer will generate sketches of competing solutions before committing to a particular choice \cite{zannier2007comparing}. Expressing alternatives as sketches rather than simply mentioning them aloud allows designers to manage their focus and more effectively explore alternative solutions \cite{myers2008designers}. Once created, designers can compare alternatives and weigh their trade-offs \cite{buxton2010sketching} (see behavior 5). They may shift their attention back and forth between alternatives and adopt ideas proposed in one into another, or synthesize the ideas of several alternatives into an entirely new alternative \cite{jones1992design}. For example, the sketches in Figure \ref{figure:motivation-designbehavior-alt} depict two approaches that could be used to model a traffic light, where the left sketch models the light as a single signal with a red, yellow, green, and left turn signal, and the two right sketches use two lights that are separate and make the left turn signal independent from the regular traffic symbol. Placing these diagrams side-by-side helps designers in visualizing and discussing the differences between the two.
\begin{figure*}[tbh]
\centering
\includegraphics[width=5cm,keepaspectratio]{./figures/motivation-designbehaviors-alt}
\caption{Two diagrams that designers used to discuss alternative approaches for modeling a traffic light.}
\label{figure:motivation-designbehavior-alt}
\end{figure*}
\item \emph{They move from one level of abstraction to another.} Software designers move between different levels of abstraction, either by ``diving into'' parts of their design to explore them in more detail or by shifting ``back up'' to the higher-level representation. For example, the designer in Figure \ref{figure:motivation-designbehavior-perspectives} has navigated to the sketch of a map, which presents a zoomed-out view of the two intersections to his left. This shift in abstraction happens often in software design, as many of its notations are hierarchical in nature. A software architect may shift their focus from working out how software components interact with each other to choosing a component and working out how it functions, perhaps by drawing its internal architecture and diving in even further. This behavior typically leads to a multitude of sketches that together consider different abstractions simultaneously \cite{petre2009insights}. Many scenarios requiring shifts of abstraction have been documented, including the design of user interfaces \cite{da2001user}, web pages \cite{van2003design}, and so on.
\item \emph{They perform mental simulations.} Software designers use mental walkthroughs to gain insight into the consequences of their design \cite{zannier2007model}. They may need to understand how information flows among components, or inspect their design by mimicking how an end user would interact with it. The software designers `interrogate' their design by testing it against hypothetical inputs and scenarios, often marking over their existing sketch while simulating. For example, while discussing the logic cars use in moving through intersections, the designer in Figure \ref{figure: motivation-designbehaviors-mentalsimulation} runs his finger along the path of the map (shown by the white arrow) to mentally simulate the path that a hypothetical car may take, and verbally walks through the logic the car uses while doing so. Through these mental exercises, the designers can bring to light their implicit assumptions and expose flaws in the design \cite{petre2009insights}.
\begin{figure*}[tbh]
\centering
\includegraphics[width=12cm,keepaspectratio]{./figures/motivation-designbehaviors-mentalsimulation}
\caption{Designers sometimes use their sketches to mentally simulate their designs in use.}
\label{figure: motivation-designbehaviors-mentalsimulation}
\end{figure*}
\item \emph{They juxtapose sketches.} In order to compare and contrast ideas, software designers will often juxtapose sketches across perspectives, alternatives, and abstractions \cite{petre2009insights}. A class diagram may be examined in parallel with a sequence diagram to aid the designer in determining how a message is passed between components. As another example, the designer in Figure \ref{figure:motivation-designbehavior-juxtapose} points to both a data model and a map to understand how a car object is passed between components as it travels through an intersection. The juxtaposed diagrams help the designer in reasoning how the design might work, using the knowledge gained from one diagram to help identify the omissions or mistakes in another, as well as any inconsistencies between them \cite{petre2009insights}.
\begin{figure*}[tbh]
\centering
\includegraphics[width=12cm,keepaspectratio]{./figures/motivation-designbehavior-juxtapose.png}
\caption{Designers juxtaposing two sketches by pointing.}
\label{figure:motivation-designbehavior-juxtapose}
\end{figure*}
\item \emph{They review their progress.} Not all time spent during design is dedicated towards producing new content or verifying whether the design does what the designer intends it to do. At some point, the designers must take stock of what they have done. They momentarily take a step back, away from the design, and consider the progress that they have made and what they have yet to do \cite{mangano2012design}. They may return to the problem statement or list of requirements and mark off everything they have done to address it, they may generate a new list of issues that they further need to address, or simply just talk amongst themselves, to assess where they are. As an illustration, the designers from Figure \ref{figure:motivation-designbehavior-review} circled a particular subset of their requirements list and explicitly related the items related to that requirement that may have issues that are intertwined with another issue.
\begin{figure*}[tbh]
\centering
\includegraphics[width=12cm,keepaspectratio]{./figures/motivation-designbehavior-review}
\caption{While reviewing progress, designs may mark up their requirement lists.}
\label{figure:motivation-designbehavior-review}
\end{figure*}
\item \emph{They retreat to previous ideas.} Periodically, designers may reach a stopping point in the exploration of their current set of sketches, such as when they become stuck or simply have exhausted an alternative. They then may choose to return to a previous state of the design (and its sketches) to start anew \cite{zannier2007model}. For example, an abandoned proposal for a time-based architecture may become a more lucrative option if an event-based architecture proves too costly in system memory usage. In returning to past ideas, the designer may bring new insights and a matured understanding from the exploration they just exhausted, which they can use to explore the past ideas further.
\end{enumerate}
\section{How they collaborate on them}
\label{chapter:motivation:collaboration}
Software design is a highly collaborative activity, especially at the whiteboard where sketching and design exploration is almost always performed in collaboration with others. The behaviors in this section result from the collaborative aspects of working toward a single vision of the design that is shared by all parties.
\begin{enumerate}
\setcounter{enumi}{11}
\item \emph{They switch between synchronous and asynchronous work.} While much of the work that takes place at the whiteboard is typically synchronous, with all participants focusing on a single aspect of the design they are discussing, it is known that designers occasionally break away to explore an idea independently while the others continue with the main discussion \cite{dekel2005supporting}. This typically occurs when a sudden inspiration strikes, or when a designer wishes to develop a counterexample or alternative to what is being discussed now. The designers in Figure \ref{figure:motivation-designbehaviors-asynch}, for example, have split to independently work on different aspects of the design. The female on the left is exploring exactly how the timing of an intersection would work using a line graph, whereas the male on the right is working through a UML representation that explores the persistent aspects of the timing mechanism.
\begin{figure*}[tbh]
\centering
\includegraphics[width=12cm,keepaspectratio]{./figures/motivation-designbehaviors-asynch}
\caption{Designers sometimes break into independent groups to work out solutions, before later synchronizing their insights.}
\label{figure:motivation-designbehaviors-asynch}
\end{figure*}
\item \emph{They explain their sketches to each other.} After any independent work takes place, and even in cases where one designer is drawing on behalf of the group and ``has the floor'', the designers must synchronize their mental models of the state of the design \cite{dekel2007notation}. This behavior relates to Behavior 9, but represents its collaborative version. They will need to verbalize their mental simulations to explain the consequences of a particular choice, clarify the meaning of a sketch, or even simply explain their assumptions or inspiration. While explaining, they may sketch on top of the existing diagram, using their marks to guide attention or add detail, or simply gesture over the diagram if they do not want to edit the sketches.
\item \emph{They bring their work together.} Sometimes, as a result of asynchronous work, the designers need to integrate their ideas from separate sketches into a unified design. This may involve bringing parts of a sketch over, creating a new sketch that integrates both, or sometimes working on a third alternative that combines the best aspects of each, but requires a different underlying approach to make that work \cite{dekel2007notation}.
\end{enumerate}
\section{Summary}
Taken together, these fourteen design behaviors capture ways in which designers work at the whiteboard, ways that we seek to support in my work. Designers continuously exhibit these behaviors, making choices such as how much or how little they sketch out a design, how they navigate their focus from one sketch to the next, or how they collaborate over these sketches.
These design behaviors, of course, never stand in isolation. Quite the contrary, any design meeting consists of an interleaved sequence of them. In explaining a design, a designer may navigate between different perspectives, alternatives or abstractions, and create and refine diagrams of different detail in the process. For example, the designer in Figure \ref{figure:motivation-designbehaviors-interleaving} explains an idea to her design partner (Behavior 12) by mentally simulating a car moving along the map (Behavior 8), and points to different perspectives (Behavior 5) during the mental simulation to show how it affects various parts of the program.
\begin{figure*}[tbh]
\centering
\includegraphics[width=12cm,keepaspectratio]{./figures/motivation-designbehaviors-interleaving}
\caption{The designer interleaves many design behaviors.}
\label{figure:motivation-designbehaviors-interleaving}
\end{figure*}
Given that these design behaviors occur naturally at the whiteboard, I aim to provide support for all fourteen design behaviors in order to improve the capability of the designer at the whiteboard. The design behaviors must be equally supported, where the support for any particular one should not impede the designer's ability to perform another. As such, I must take an incremental approach in exploring support for these behaviors to ensure any added features meet this criterion.
\chapter{Research Question}
\label{chapter:research-question}
Now that I have introduced this set of design behaviors, I return to what it would mean to build support for it. I first recognize that there is a spectrum of ways in which the design behaviors could be supported. On one end of the spectrum lies the whiteboard itself, a minimally intrusive, informal medium that supports only drawing and erasing of content. The naturally occurring behaviors are permitted, but not necessarily supported, which is the basic problem that this research is trying to address. On the other end of the spectrum is the formal design tool, a highly structured, heavy-weight environment with hosts of explicit features. Examples of such tools are Rational Rose \cite{Quatrani} and ArgoUML \cite{robbins2000cognitive}. Theoretically, they support a number of the behaviors, such as, for instance, Behavior 5 by providing multiple views on the same model, or Behavior 6 by maintaining many projects. They, however, do not nearly support all, and the ones that they do are not nearly as fluidly supported as necessary.
Between the informal whiteboard and the formal tool lies a range of possible approaches that provide different blends of the strengths of each. This leads to my research question:
\newenvironment{myindentpar}[1]%
{\begin{list}{}%
{\setlength{\leftmargin}{#1}}%
\item[]%
}
{\end{list}}
\begin{myindentpar}{1cm}
\emph{What minimally invasive, coherent set of features can be designed that is sufficient to effectively support these behaviors?}
\end{myindentpar}
I am particularly interested in exploring this question in the context of an electronic whiteboard, that is: what kind of support can we implement that transforms the interactive whiteboard from a place where software designers just sketch like they normally would to a place where their design behaviors are explicitly enabled through the functionality of the tool they are using? Most tools, today, support one behavior or at best a few.
In presenting this research question, it is useful to examine its precise phrasing:
\begin{itemize}
\item \emph{\textbf{minimally invasive} -- I seek to build support that does not completely abandon the whiteboard experience. People go to the whiteboard for its fluidity and flexibility. Any solution that I design must preserve the feel of the traditional whiteboard as much as possible.}
\item \emph{\textbf{coherent set of features} -- I wish to arrive at a set of features that build on each other using a unified set of design principles and metaphors. Building an isolated feature for every behavior would not satisfy my research goal.}
\item \emph{\textbf{sufficient to support all of these behaviors} -- Each behavior should in some way be supported by the overall set of features, and support for any particular behavior should not come at the cost of another. }
\end{itemize}
Having put forward this research challenge, I must analyze the resulting effect of the support for the design behaviors as well. This is a difficult question to answer, particularly since the literature to date has documented that these design behaviors take place, but has not yet fully articulated their effects on the design process and design product. For instance, switching among perspectives (Behavior 5) seems to have a positive effect on the eventual design \cite{baker2010ideas}, and, in certain cases, it has been documented that the consideration of multiple alternatives (Behavior 6) also seems to lead to a better design \cite{buxton2010sketching}. However, even these studies are hard pressed to provide absolute answers. The first study does not examine the optimal length of time a perspective should be explored: is thirty seconds too short, thirty minutes too long, or what is the general distribution? Similarly, the second study does not talk about the number of alternatives: is three sufficient, should twenty be explored, or does it depend on the design problem in some way? These are questions that cannot be objectively answered at this time.
For this reason, my evaluation must be exploratory. An obvious evaluation would examine factors such as the frequency of design behaviors, time spent working in each behavior, and how my solution impacts the interleaving of the design behaviors. A more comprehensive evaluation would attempt to correlate the appearance of these design behaviors with the quality of the process and the quality of the design by, for instance, relying on outside experts to rate the designs that are produced and correlating this quality with the frequency, interleaving, etc. of the design behaviors. While this would possibly lead to a conclusive statement with respect to the impact of my solution, it would be very challenging to perform this evaluation given that a typical design exhibits complex interleavings of many design behaviors, making achieving any statistical relevance difficult.
My evaluation, therefore, will take a qualitative approach. By observing Calico in practice and by interviewing users of the tool, I will analyze the usage of Calico within the scope of the design behaviors and analyze the impact of the features on those design behaviors. Additionally, while the observations will likely pertain to the existing set of fourteen behaviors, I of course do not rule out that new behaviors may emerge, as enabled by the features of the software, that might be worthy of study.
As such, the summary of the approach in the remainder of this dissertation is that I will describe Calico (two different versions) as well as the result of a qualitative evaluation of Calico in use at several local companies.
%%% Local Variables: ***
%%% mode: latex ***
%%% TeX-master: "thesis.tex" ***
%%% End: ***
\newpage
\newpage \textsf{•}\chapter{Calico Version One}
\label{chapter:calico-version-one}
Calico Version One is the first complete prototype that was built and evaluated to directly support the design behaviors of Chapter \ref{chapter:motivation}. The prototype was built toward testing the feasibility of my approach. That is, 1) can I successfully build on top of the existing whiteboard experience with features that support the design behaviors, and 2) can I do so without obstructing the design activity itself.
I target only a subset of the design behaviors with the first version of Calico. In particular, this first versions supports design behaviors 1, 2, 3, and 5, as summarized here:
\begin{itemize}
\item Design behavior 1: they draw different kinds of diagrams.
\item Design behavior 2: they produce sketches that draw what they need, and no more.
\item Design behavior 3: they refine and evolve their sketches over time.
\item Design behavior 5: they move from one perspective to another.
\end{itemize}
Our express purpose with this first version is to evaluate the viability of the overall idea of supporting design behaviors with tool functionality at the whiteboard. The features are therefore limited, as compared to the full version of Calico described in Chapter \ref{chapter:calico-version-two}, and the evaluation focuses on building a basic understanding of the effect the features. Specifically, the evaluation presented in Section \ref{results} looks at how often Calico's advanced features were used, whether use of the features coincided with design behaviors, and whether the resulting design process -- as judged by the nature of the design conversations -- resembles that of design at the regular whiteboard.
In designing the first features of Calico, I avoided those which would inhibit the flexibility and fluidity of the whiteboard. Features from traditional point-and-click interfaces such as different modes, extensive menus, or a selection lasso were not included because such functionality is likely to be frustrating on a pen-based interface \ref{apitz2004crossy} and may disrupt the fluidity of the whiteboard experience. Further, rather than including support by providing sketching support for an existing software design tool (such as with Marama Sketch \cite{Grundy}), I took the approach of building a basic sketching tool first, and adding features incrementally to this foundation.
Through an iterative process of design, experimentation, and careful assessment, I arrived at four features. The features are: (1) a grid to manage multiple canvases in the workspace, (2) scraps that enable advanced manipulation of sketched content, (3) a palette to save and reuse scraps, and (4) a gesture-based interaction scheme to tie all features to stylus-based input.
The remainder of this Chapter is organized as follows. Section \ref{calico} presents Calico and how it addresses the stated goals. Section \ref{experimentaldesign} presents my methods for evaluating Calico. My results are presented in Section \ref{results}. Section \ref{discussion} includes a discussion of the results and Section \ref{threatstovalidity} reviews the threats to validity within the study. Lastly, Section \ref{conclusions} summarizes the chapter and its contributions.
\section{Features}
\label{calico}
In this section, I present the four novel features of Calico Version One, describe them in detail through various examples, and carefully relate them back to the subset of supported design behaviors I target in Chapter \ref{chapter:motivation}. As a guide, Table \ref{table:1} shows a mapping between the subset of four behaviors targeted design behaviors and the main features of Calico.
Before I discuss the features, it should be noted that Calico is intended to be used on an electronic whiteboard (or Tablet PC, in the case of sole person use), and is optimized to take its input from a digital stylus, not a mouse. The designer stands in front of the electronic whiteboard and uses the digital stylus to draw, write, and control Calico (see Figure \ref{fig:2}). The nature of this interaction shaped the design of Calico, particularly the mechanisms with which it enables designers to manipulate a design.
Note that all of the examples I use in this section draw from the evaluation design sessions I describe in Section \ref{experimentaldesign}.
\subsection {Basic Features}
\label{calico:1}
% For one-column wide figures use
\begin{figure}
\centering
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\resizebox{0.8\hsize}{!}{ \includegraphics{./figures/CalicoVersionOne/figure2.png}}
% figure caption is below the figure
\caption {Physical setup of Calico}
\label{fig:2} % Give a unique label
\end{figure}
%
\begin{table}
\centering
\caption{Calico features as they address the targeted subset of four design behaviors from Chapter \ref{chapter:motivation}}
\begin{tabular}{ p{4cm}p{2cm}p{9cm} }
\toprule
Design behavior & Feature & Effect \\
\midrule
\multirow{2}{4cm} {Design behavior 1: Use different kinds of diagrams} & Scraps & Scraps maintain the shape of the objects that are drawn, and thus, together with rapid manipulation and creation of arrows, can emulate different notations and diagrams\\
& Palette & Scraps can be copied into the palette from which they can later be reused \\
\midrule
\multirow{1}{4cm} {Design behavior 2: Draw only what they need} & Scraps & Scraps do not force the user to draw more than they want to; they require no additional manipulations other than simply drawing the scrap. The user, thus, can draw as little or as much of a notation as they wish.\\
\midrule
\multirow{2}{4cm} {Design behavior 3: Refine and evolve sketches over time} & Grid & Abstract sketches can be partitioned and evolved across several canvases, which can be meaningfully organized on the grid \\
& Scraps & Strokes can be transformed from plain sketches to first order objects by making them into scraps, and then related to one another with arrows \\
\midrule
\multirow{2}{4cm}{Design behavior 5: Navigate between different perspectives} & \multirow{2}{2cm}{Grid} & Sketching effort can be partitioned across multiple canvases \\
& & Tabs permit quick shifting between, and copying of, canvases \\
\bottomrule
\end{tabular}
\label{table:1}
\end{table}
Figure \ref{fig:3} presents Calico as it first appears when a developer starts it. Users can immediately draw or write, without needing to enter any mode or selecting a widget to create new content. Just as on a standard whiteboard, they make any marks they wish, anywhere, in any shape. The drawing canvas has just a few visible widgets to maintain the appearance of a standard whiteboard. Seven colored buttons at the bottom left allow a user to change colors. The colors were carefully chosen to be in direct correspondence to the standard pen colors available on a regular whiteboard.
\begin{figure}
\centering
\resizebox{0.8\hsize}{!}{ \includegraphics{./figures/CalicoVersionOne/figure3.png}}
\caption {Calico appearance at the start of a design session}
\label{fig:3} % Give a unique label
\end{figure}
%
In addition to changing colors, Calico provides a small handful of features familiar to computer users. Users can pan a canvas, save and load designs, export sketches as images for use in other programs, as well as undo and redo actions. The undo and redo actions are globally stored, so if a previous action was performed on another canvas, the user's view will shift to that canvas and the action will be undone. Also, while Calico does not recognize or formalize shapes drawn by the user, Calico does compensate for the typically low polling rate of touch-based hardware by appoximating the curve of the user's strokes using B\'ezier curves. Calico does not support text entry, relying on users to simply write on the board in order to avoid unwanted breaks in concentration due to the need to switch to an extraneous keyboard. While Calico will run on any touch-based device with Windows, Linux, or Mac OS (see Section \ref{calico:5}), all of my experimentation was performed on a board with a projector
resolution of 1024x768.
\subsection{Grid}
\label{calico:2}
Calico's first novel feature is the grid, which is my answer to the designer's need to not only easily navigate between perspectives (Behavior 5), but to also be able to keep track of their design at hand. Shown in Figure \ref{fig:4}, the grid provides the designer with a bird's eye perspective of the design process as it has unfolded thus far by showing multiple canvases at once. By tapping on a canvas on the grid, the developer enters that particular canvas, where they can create new sketches or modify any sketches already in existence. By tapping the grid icon (see top right of Figure \ref{fig:3}), the designer returns to the grid.
% For one-column wide figures use
\begin{figure}
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\resizebox{1\hsize}{!}{ \includegraphics{./figures/CalicoVersionOne/figure4.png}}
% figure caption is below the figure
\caption {Grid in use}
\label{fig:4} % Give a unique label
\end{figure}
%
The grid naturally leads to a partitioning of design effort, while at the same time supporting straightforward movement between the emerging parts of this overall effort. For instance, a designer can make a to-do list in one canvas, use other canvases to work out each item on the to-do list in isolation, and return to the to-do list periodically to check and mark progress. As another example, the designer could choose to examine a design problem from various perspectives or at varying levels of detail in different canvases. The grid becomes the record keeper of this exploration, allowing rapid shifting from one perspective or level of detail to another.
Previous tools have used the filmstrip metaphor to support multiple canvases, with a scrollbar at the bottom, typically in reverse order of manipulation \citep{Stefik}. With frequent updating of the content of different canvases, this leads to a volatile representation in terms of the order of the canvases in the filmstrip, making it difficult to navigate and easily shift between perspectives. The grid advances on the filmstrip by transitioning from a time-based metaphor to a spatial metaphor. The grid keeps all of the canvases in a constant location, which means that a user can not only easily locate individual sketches based on where they exist in the grid relative to each other, but also navigate to adjacent canvases without first having to switch to the grid. They can move left, right, up, or down one canvas at a time by using the tabs that are located in the middle of each edge of the canvas (see Figure \ref{fig:3}). Tapping the white part of the tab enacts the move to the adjacent canvas in that direction.
Tabs also support a different form of navigating between sketches: exploration of alternatives. On a standard whiteboard, it is difficult to fork ideas. One has to manually replicate a sketch elsewhere before modifying it. This is clearly undesirable and either leads to less exploration or direct manipulation of the sketch in question, the latter destroying the original from which the departure is being made and making it difficult to return to a previous state. By tapping the grey half of a tab, a canvas' content is copied in its entirety to the corresponding adjacent canvas, which in turn is placed into focus. With a single ``click'', thus, the designer is provided with a fresh copy of an entire canvas, which they can then further explore, refine, or modify. Using this technique repeatedly, a trail of historical revisions is built that documents how an idea evolved, providing a safety net to always return to previous versions.
Managing different perspectives is further aided by the fact that canvases are moveable on the grid, allowing a user to rearrange the various canvases according to whichever concern they wish to address. That is, they may move ``old'' ideas aside, cluster canvases by phases of design, group topics, or even juxtapose different perspectives.
\subsection {Scraps}
\label{calico:3}
% For one-column wide figures use
\begin{figure}
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\centering
\resizebox{0.8\hsize}{!}{ \includegraphics{./figures/CalicoVersionOne/figure5.png}}
% figure caption is below the figure
\caption {Scraps}
\label{fig:5} % Give a unique label
\end{figure}
%
Scraps address a subset three of design behaviors from Section \ref{chapter:motivation:kinds} in Chapter \ref{chapter:motivation}: drawing different kinds of sketches (design behavior 1), creating low-detail sketches that have only as much precision as needed (design behavior 2), and the tendency to move from generic representations to more refined ones (design behavior 3).
Scraps leverage a key action that users of a whiteboard naturally perform: circumscribing some area of sketched or written content \citep{Hendry}. They typically do this to indicate some object of sorts, or to simply mark an area as important. In Calico, the act of circumscription using the secondary button on the digital stylus has visually the same result: the area that is circumscribed is highlighted with a thin border and grey background. In addition, however, the area becomes an object in Calico that can be further manipulated and has several preassigned behaviors. In particular, scraps are implicit groups that are movable, stackable, and relatable. I review these properties one by one.
\emph{Implicit groups}. Scraps build upon the approach taken in Translucent Patches \citep{Kramer}, which allows users to explicitly declare an area as a group. Anything that is either entirely circumscribed in the first place or otherwise written or drawn in this area afterwards is automatically part of the group. Consider the literal sketch of a car visible in the bottom right of Figure \ref{fig:5}. It was first drawn on the canvas, then circumscribed by the stylus to become a scrap. The scrap is now a persistent object with a grey background. Any further additions to the car automatically become part of the scrap.
\emph{Movable}. Scraps are movable. Right-clicking and dragging using the digital stylus will move a scrap and its contents to a different location on the board. This seemingly innocuous action in reality represents a significant improvement over the standard whiteboard: content drawn can be rapidly reorganized. It particularly is important that such reorganization takes place in the language of the user: elements that they have deemed of sufficient importance to promote to being a scrap are the elements that are moved.
\emph{Stackable}. Moving a scrap to a position where some part, or all of it, overlaps another scrap attaches it to the scrap behind it, allowing users to quickly create a stack of scraps (thereby creating hierarchically composed groups), as one would a pile of papers. For instance, the scraps labeled ``Speed'' and ``Position'' in Figure \ref{fig:5} are part of the scrap labeled ``Car Component.'' If ``Car Component'' is moved, ``Speed'' and ``Position'' are moved as well. Dragging a scrap off of another scrap un-groups it. Moving the scrap labeled ``Position'' from its current location on the canvas to where it overlaps the scrap containing the intersection will ungroup it from ``Car Component'' and group it with the intersection scrap in one fluid motion. Note that dragging a scrap implicitly moves it to the top of the order of scraps; scraps do not slide under other scraps.
\emph{Relatable}. By dragging the digital stylus from one scrap to another, an arrow is created between two scraps. The arrow is persistent and anchored to the places where it originated and ended. When scraps are moved, the arrows move accordingly and keep the two scraps related. In Figure \ref{fig:5}, the scrap ``Position'' relates to the intersection scrap, and the scrap ``Car Component'' relates to the car scrap.
Complementing these basic scrap behaviors are several more specialized behaviors accessible via a small radial menu on the scrap itself. First, a scrap's content can be dropped onto a scrap behind it or, if there is no scrap behind it, back onto the canvas. This allows designers to combine content from multiple scraps. Second, scraps can be given a more regular box shape, and, third, scraps can be made transparent. This latter functionality supports divergence at the micro level of individual scraps (as opposed to the macro level of entire canvases through the grey tabs). By drawing on a translucent scrap that overlays another scrap, developers can explore modifications to this other scrap's content without overwriting its content. If they are satisfied with the result, they could choose to combine the two scraps by dropping the content of the translucent scrap. Alternatives can be compared in this manner as well via multiple translucent scraps capturing different deviations.
Scraps are also fundamental to addressing the behavior of using a mix of notations. By virtue of having physical presence, scraps provide a natural basis for serving as a representation for more structured, though still informally drawn, figures, such as user interface sketches or class diagrams. Since scraps are amorphous, and take on the shape of a designer's stroke, shaping them in visually identifiable forms (e.g., boxes, circles, buttons) allows the designer to informally convey a certain meaning. Particularly when combined with arrows, this supports sketching of numerous types of box-and-arrow-like diagrams.
\subsection {Palette}
\label{calico:4}
The palette is the third feature that I incorporated in response to the subset of design behaviors I target from Chapter \ref{chapter:motivation}. It specifically addresses the issue of using different types of sketches (design behavior 1).
Palettes are not new, but their typical incarnation in drawing programs is to include a prepopulated set of figures that are not configurable beyond changing the entire set. In design, however, it is not uncommon that a spontaneous notational convention emerges that does not necessarily adhere to any pre-existing or fixed set of figures. Calico's palette, thus, starts empty, and is filled with content by the designer, enabling the reuse of sketched elements. This allows a temporary vocabulary to be created and leveraged within a design session (as exemplified by the impromptu notations in Figure \ref{fig:11}, as further described in Section \ref{results:2}).
% For one-column wide figures use
%\begin{figure}
% \centering
% \resizebox{1\hsize}{!}{ \includegraphics{figure-palette.png}}
% figure caption is below the figure
%\caption {Palette populated with scraps from the lefthand side}
%\label{fig:palette} % Give a unique label
%\end{figure}
%
The palette leverages scraps for this purpose. Designers can store a scrap simply by dragging it into the palette on the side of Calico's canvas. The palette has a number of cells, each of which may hold one or more scraps. By dragging from a palette cell onto the canvas, any scraps inside that cell are copied to the canvas at the position of the stylus. Once populated, the user can rapidly create variations of a design simply by dragging key scraps from the palette.
Note that the palette serves as a global clipboard; scraps can be stored and reused from any canvas.
\subsection {Implementation Notes}
\label{calico:5}
Calico Version One's implementation consists of approximately 37,000 lines of code written in Java 6.0. Calico was developed using the Eclipse development environment, and was tested on Hitachi FX-Duo Starboard interactive whiteboards. It is portable across several operating systems (i.e., Windows XP/Vista, Linux, and Mac OSX), though all of my laboratory evaluations described below were performed using a Starboard connected to a Windows laptop that ran Calico.
\subsubsection {Architecture}
\label{calico:5.1}
Figure \ref{fig:arch} provides a summary of the architecture of Calico, which is based on the model-view-controller pattern. The model is responsible for keeping track of all of the sketched content, including strokes, scraps, arrows, and any relationships that exist among them. Strokes and scraps are stored as sequences of raw coordinates; arrows are stored as a start point and end point. Two relationships are supported. First, when scraps fully contain other content, whether strokes, other scraps, or arrows, a containment relation is kept so that, when scraps are moved, copied, or deleted, the contained elements are also moved, copied, or deleted. Second, an anchoring relation is kept if an arrow's start point or end point is within a scrap, so that when the scrap is moved, the corresponding point also moves. All content is managed by an ObjectHandler, which is responsible to provide not just convenient access, but also accessory methods for creating and restoring from a serialied back-up.
Lastly, the grid of canvases exists virtually as a set of two-dimensional coordinates within the components in the model. Each stroke, scrap, or arrow has attached an (x, y) identifier to which canvas it belongs.
The Controller is responsible for interpreting the actions of the user on the canvas and translating those, if needed, to Calico actions. The Gesture Controller is the primary point of access, taking as input the mouse events that are generated when the user interacts with the Hitachi Starboard (I use mouse events only and specifically chose not to take advantage of any special Hitachi Starboard features in order to avoid limiting ourselves to just this electronic whiteboard). Based on the location of the stroke and any pre-existing content that may already exist on its path, the Gesture Controller distinguishes strokes that draw on the canvas from strokes that indicate some action to be performed (see also Section \ref{calico:5}). Strokes that draw on the canvas are passed on directly to the Canvas Controller for creation in the model. Strokes that represent actions are passed on to the Canvas Controller as ``action objects'' using a command pattern, in order to facilitate future extensions with other gestures and actions.
% For one-column wide figures use
\begin{figure}
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\centering
\resizebox{0.5\hsize}{!}{ \includegraphics{./figures/CalicoVersionOne/arch.png}}
% figure caption is below the figure
\caption {Calico architecture}
\label{fig:arch} % Give a unique label
\end{figure}
%
The User Interface is built using Piccolo \citep{Bederson}, a zoomable interface that optimizes screen refreshing. Piccolo was chosen because of its available source code and relatively lightweight footprint. The Shape Painters, UI Widgets, Palette, and Grid all extend the Piccolo Framework and comprise the interface with which the user interacts. The Shape Painters mirror the data model using nodes from the Piccolo Framework to draw content on the canvas; any changes to the data model are then automatically propagated. The UI Widgets take care of Calico functionality such as the tabs, panning, and undo and redo. The Palette also exists as a separate UI widget, albeit with special functionality to hold scraps that can be reused. Upon initialization, Calico instanciates a fixed number of canvases and stores them in the grid, which can be referenced using the (x,y) identifier.
\subsubsection {Gesture-Based Input}
\label{calico:5}
Permeating across the subset of four targeted design behaviors from Chapter \ref{chapter:motivation} is the need for gesture-based input. Many of the creative, exploratory activities that Calico supports rely on the fluidity and quickness of sketching. Interactions supplemental to the primary sketching activity should be equally quick. The design flow must be maintained, shapes should be created the way designers want them, and the effort of making changes should be low. Essentially, ``viscosity'' \citep{petre2009insights}, the cost of making changes, has to be low or designers will be discouraged from exploring opportunities in design.
In order to maintain the natural feel of sketching in the interaction, I have chosen to use a mixed mode approach: many features are ready-at-hand through simple gestures, but some more esoteric functionality that would otherwise require integration of complicated gestures is available in a pie menu off of scraps (visible in Figure \ref{fig:gesturespie}).
\label{results:22}
\begin{figure}%
\centering
\subfigure[Create scrap] {
\label{fig:gesturesa}
\resizebox{.2\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesa.png}}
}
\subfigure[Delete scrap] {
\label{fig:gesturesb}
\resizebox{.2\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesb.png}}
}
\subfigure[Expand scrap] {
\label{fig:gesturesc}
\resizebox{.2\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesc.png}}
}
\subfigure[Pie Menu] {
\label{fig:gesturespie}
\resizebox{.2\hsize}{.11\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gestures-piemenu.png}}
}
\subfigure[Create arrow] {
\label{fig:gesturesd}
\resizebox{.4\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesd.png}}
}
\subfigure[Delete arrow] {
\label{fig:gesturese}
\resizebox{.4\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturese.png}}
}
\subfigure[Expand arrow] {
\label{fig:gesturesf}
\resizebox{.4\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesf.png}}
}
\subfigure[Contract arrow] {
\label{fig:gesturesg}
\resizebox{.4\hsize}{.15\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure-gesturesg.png}}
}
\caption {Gestures in Calico for scraps and arrows}
\label{fig:gestures}
\end{figure}%
Interaction is driven by a small set of context-sensitive gestures, as shown in Figure \ref{fig:gestures}. Each stroke of the stylus performs a unique action depending on where it travels. For example, dragging the pen while holding the secondary stylus button on the canvas creates a scrap, but performing the same action on a scrap will move the scrap. With ordinary strokes, dragging the stylus along the canvas draws directly onto the canvas, but slashing it across a scrap, as shown in Figure \ref{fig:gesturesb}, will delete it. The gestures take into consideration where the stylus begins, which object(s) it intersects along its path, and where the stylus ends. This is sufficient to build a straightforward interaction scheme that allows the user to create scraps, manipulate them in various ways, draw arrows from one scrap to another, and navigate the entire Calico interface with ease. Each action has a priority, such that stylus strokes spanning multiple interactions behave predictably. For instance, when a user draws a line from one scrap to another that crosses an existing arrow, a new arrow is created and the existing arrow is not deleted, despite the fact that the stroke struck through it (a gesture that normally deletes that arrow).
\section{Experimental Design}
\label{experimentaldesign}
To evaluate Calico Version One, I conducted an exploratory, comparative study in which I asked pairs of participants to perform a software design task using either Calico or a regular whiteboard. My goals were threefold: first, I wanted to ensure that, when Calico is used for an actual design activity, people moved beyond basic whiteboard sketching and used Calico's advanced features. Second, given that Calico was designed to support specific design behaviors, I wished to observe whether these behaviors actually did occurred. Lastly, I wished to assess the structure of the design conversation in the pairs that used Calico, and compare it with that of the pairs that used the whiteboard.
\subsection {Recruitment and Participants}
\label{experimentaldesign:1}
Sixteen pairs of participants (32 participants in total) were given one hour and fifty minutes to complete a given design task. Eight of the pairs used Calico to perform the design task, and eight of the pairs used the regular whiteboard.
I recruited participants at my university using email advertisements and snowball sampling. In a pre-experiment survey, I asked participants to declare their area of expertise, and their industrial experience. All participants were computer science graduate students with some degree of experience designing software systems. The average amount of industrial experience was three years, and ranged from none to seven years of experience. To balance pairs, I paired participants with the similar industrial experience together to avoid having the more experienced designer take over the session. I then gave each pair a rating based on the average experience of its members, and distributed these pairs equally among the whiteboard and Calico conditions so that each condition had an equal amount of experienced and inexperienced pairs.
\subsection {Procedure}
\label{experimentaldesign:2}
Each session lasted between two and two a half hours. When participants arrived, they were given an informed-consent form that included details about the nature of the study. Those in the Calico session were given a 30-minute tutorial, while those in the whiteboard activity were allowed to begin immediately, upon which they were given the two page prompt (see below). Participants were asked to use the whiteboard and to not write on the prompt or any other paper so that cameras could have a clear view of anything they wrote. Pairs were given one hour and fifty minutes of design time, after which they briefly recapped their design in their own words (5-10 minutes). After pairs finished their design activity, they were given five minutes to collect their thoughts and then to summarize their design in a ten-minute explanation. Afterward, I interviewed them for ten minutes about their opinions and experience concerning the activity, and their past experience with similar technology. At the end of the session, each participant was given \$100 as an incentive and a \$250 prize was awarded to the pair with the best design. As a result, all pairs took the exercise seriously and were fully engaged throughout the design exercise.
Each session was recorded on video camera for subsequent analysis. Additionally, Calico produced detailed logs that captured each individual user action (e.g., scribble drawn; scrap created, moved, or deleted; switch canvas in the grid).
\subsection {Task}
\label{experimentaldesign:3}
Each pair received the same design prompt, asking for the design of an educational traffic signal simulator to be used by students in a civil engineering course (the same prompt was used in the Studying Professional Software Design workshop; it is included in its entirety in the introduction to the Design Studies journal special issue dedicated to this workshop \citep{Petreb}). The prompt, provided a series of open-ended goals and requirements, asking the pairs to design a system that allowed engineering students to: (1) create a visual map of the roads, (2) describe the behavior of the lights at each intersection, (3) simulate traffic flow, and (4) change parameters of the simulation, such as traffic density. The prompt also instructed pairs to produce a design that they could present ``to a pair of software developers who will be tasked with implementing it.''
\subsection {Measures}
\label{experimentaldesign:4}
Our goal was to: (1) measure how often Calico's advanced features were used, (2) examine how those features were used with respect to the design behaviors I outlined earlier, and (3) assess the structure of the design conversation in both the whiteboard and Calico sessions. I also asked a standard set of exit interview questions concerning the group's satisfaction with the tool and the design process that they followed.
\emph{Use of features}. In order to objectively verify that participants move beyond just sketching like they would on a regular whiteboard and actually use the advanced features of Calico, I measured the amount of usage that each feature received. To perform this, I reviewed the videos and made a note of each time a particular feature was used.
\emph{Design behaviors}. After I had recorded all instances of the features being used, I performed a qualitative analysis of how the features were used. I was interested in seeing how well those features supported the targeted subset of four design behaviors from Chapter \ref{chapter:motivation}. For the first design behavior, using different types of diagrams, I watched out for situations where participants mixed several notations together in a single canvas, and highlighted occurrences of impromptu notations that were unique to a particular pair and did not appear in others. For the second design behavior, drawing only what they need, I noted the general diagrams that participants sketched, and paid particular attention to what models participants created, and if and how they used scraps to do so. For the fourth design behavior of moving from abstract to concrete, I compared photos of diagrams at various stages, and noted how pairs restructured their diagrams and added additional detail. When considering the fifth design behavior, navigating between perspectives, I was particularly attentive to the reason that participants moved out of one canvas and into another within the grid, and I classified the general activities that occurred in each of the canvases as well.
\emph{Structure of Design Conversations}. After qualitatively assessing the videos for evidence of the design behaviors, I assessed the impact that Calico had on the structure of the design conversation by coding audio transcripts of the design sessions for what kinds of activity took place at each moment. The categories and guidelines for the coding scheme were adopted, with minor changes, from a previous study on design meetings \citep{Olson}. As the authors of that study explain, the categories were derived from the Design Rationale literature \citep{Moran} as well as studies of group activity \citep{PUTNAM}, and reflect key aspects of the design activity. With respect to the activities from design rationale, statements were separated into \emph{Issues} at hand, the \emph{Alternatives} or solutions raised, and the \emph{Criteria} used to evaluate an idea. Within the same coding scheme, statements could also be organized into organizational activities, i.e., conversations the group had to organize itself (specifically called \emph{Meeting Management}, \emph{Summary}, \emph{Walkthrough}, and \emph{Goal}), to \emph{Clarify} their ideas, or to engage in \emph{Digressions}. Two additional categories not part of the original coding scheme, \emph{Technology Management} and \emph{Technology Confusion}, were inspired by a previous study based on the same coding method that analyzed a tool's effect on the design process \citep{Olsonb}. \emph{Technology Management} refers to the times when the participants' focus was devoted to the tool itself rather than the activity at hand, and \emph{Technology Confusion} refers to time lost due to system failure. Lastly, any category that did not fit into any of the above was categorized as \emph{Other}.
Due to limited time and resources, only a subset of the sessions, specifically six Calico and six whiteboard sessions, were coded (see Table \ref{table:3} and Table \ref{table:4}). While this is not enough to claim statistical significance, it is enough to gain a sense if there is, in fact, an apparent difference in process between the two conditions.
In order to verify the validity of the coding, I performed an interrater reliability test, and also consulted with researchers who previously applied this coding in their own past studies. After initial training, two individuals independently coded a session, and then compared their coded transcripts to perform an interrater reliability test. I obtained a Cohen's k value of 82\% at this level of granularity. I then compared the total time that each coder had for each category, and found a correlation of .998. These measures are well within the accepted tolerance for behavioral analysis.
\emph{Satisfaction and perceptions of participants}. At the end of each session, I interviewed participants in order to learn how Calico affected their approach to the design task, and what the positive or negative aspects of Calico were for the users. I did this by first asking participants to reflect on their designs and the process they used to get there. I then asked them explain how they used each of the advanced features, their overall satisfaction with each feature, and whether they had any suggestions for improvement.
\section{Results}
\label{results}
% For one-column wide figures use
\begin{figure}
\centering
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\subfigure[] {
\label{fig:6a}
\resizebox{0.64\hsize}{0.36\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure6a.pdf}}
}
\subfigure[] {\label{fig:6b} \resizebox{0.64\hsize}{0.36\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure6b.pdf}} }
\subfigure[] {\label{fig:6c} \resizebox{0.64\hsize}{0.36\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure6c.pdf}} }
% figure caption is below the figure
\caption{Feature usage across the eight calico pairs}
\label{fig:6} % Give a unique label
\end{figure}
%
The discussion of my results is organized by the major categories of analysis described in the previous section: use of features, design behaviors, design conversations, and satisfaction. In this section, I only present the results that I observed; I do not make attempts to interpret them. In Section \ref{results:2}, I bring the results together and draw my conclusions about the value of Calico.
\subsection{Feature use}
\label{results:1}
I first focused on whether participants would move beyond just basic sketching to using the advanced features of Calico. This point is important, given that there was no incentive for participants to use any of the advanced features other than the features being useful to their task at hand; they could have instead chosen to sketch as they normally would on a standard whiteboard without the help of scraps or the grid.
Figure \ref{fig:6} shows the result, marking each time the grid (a), scraps (b), or palette (c) was used. From the graph, it can be seen that the grid was unanimously used by all pairs, with heavy usage by most pairs and moderate by some. The pairs predominantly switched to the grid view first for navigating to different canvases, though as time went on, several incorporated the use of the tabs to navigate to adjacent canvases (see Section \ref{results:21}).
There was a wide distribution in the frequency of scrap use, with some pairs strongly relying on scraps, others exhibiting more moderate use, and a few barely using them. The palette was the least used feature, with just two pairs using it some and three other pairs using it twice each.
\subsection{Design behaviors}
\label{results:2}
Given my goal of supporting the specific subset of four design behaviors of the total set in Chapter \ref{chapter:motivation}, this section focuses on occurrences of these behaviors in the various pairs, as well as how the advanced functionality of Calico was used in the presence of these behaviors.
\subsubsection{Design behavior 1: Drawing different types of diagrams}
\label{results:23}
As expected, numerous notations were used by the participants as part of their design process. These include class diagrams, user interface components, and diagrams specific to the domain of traffic simulation. These different types of diagrams were often created in response to one another. In the whiteboard sessions, this led to heterogenous content in different notations spread out over the whiteboard. In the Calico sessions, the pairs broke up their designs across different canvases, as exemplified in Figure \ref{fig:7}, and as a result most canvases used just a single notation. Pairs sometimes did mix different notations in a single canvas, such as in the Figure \ref{fig:8d}, where one of the pairs uses representations of a traffic intersection in the top of the image with pieces of code representations in the bottom-right of the image, on the same canvas. This pair, as well as other pairs that similarly mixed representations, used the different representations to juxtapose different views of the design.
Pairs had no ready notation to represent traffic structions, and so they created their own on the fly. For instance, the image in Figure \ref{fig:9-a} shows how one pair used scraps to model a state diagram that is part of their vision for how civic engineering students will specify the timing of traffic lights in their simulation. Note how the state diagram exists on one of two tabs meant to be part of the user interface. Next, in Figure \ref{fig:9-b}, the same pair applied a similar notation to define the logic that is executed once a car arrives at an intersection. Here the pair reused the same diagrammatic elements by copying scraps. In Figure \ref{fig:9-c}, another pair created dozens of small scraps and placed them in a grid configuration to simulate the interface for traffic flow. They filled in select canvases with the pen to simulate a particular route, and experimented with different routes by erasing and filling in other scraps. In all three examples within Figure \ref{fig:9}, pairs were able to create copies of their scraps and reuse them to attempt alternate combinations.
\begin{figure}%
\centering
\subfigure[State diagram for defining light combinations at an intersection] {
\label{fig:9-a}
\resizebox{.3\hsize}{.4\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure9a.png}}
}
\subfigure[State machine that is executed when a car arrives at an intersection] {
\label{fig:9-b}
\resizebox{.3\hsize}{.4\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure9b.png}}
}
\subfigure[Simulation of traffic flow on the map and the controls to regulate it] {
\label{fig:9-c}
\resizebox{.3\hsize}{.4\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure9c.png}}
}
\caption {Several impromptu notations emerged in the design sessions}
\label{fig:9}
\end{figure}%
\subsubsection{Design behavior 2: Drawing only what they need}
\label{results:22}
\begin{figure}%
\centering
\subfigure[] {
\label{fig:8a}
\resizebox{.45\hsize}{.35\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure8a.png}}
}
\subfigure[] {
\label{fig:8b}
\resizebox{.45\hsize}{.35\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure8b.png}}
}
\subfigure[] {
\label{fig:8c}
\resizebox{.45\hsize}{.35\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure8c.png}}
}
\subfigure[] {
\label{fig:8d}
\resizebox{.45\hsize}{.35\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure8d.png}}
}
\caption {Examples of models in varying amounts of detail}
\label{fig:8}
\end{figure}%
I observed the use of low-detail models in every single design session. The pairs that used Calico created the same type of low-detail models that I saw on the whiteboard, and in most cases they used scraps to create these models. Of the eight Calico pairs, two simply sketched directly on the canvas as they would have on a traditional whiteboard, and did not further manipulate their sketches. In the cases where pairs did use scraps, they benefited from the extra functionality, such as moving scraps to reorganize a design, copying them in order to create variations, and arrows to define relatioships.
The images in Figure \ref{fig:8a} and \ref{fig:8b} illustrate an example of how many of the pairs used scraps to create box-and-arrow representations of code structures. The pairs that did not use scraps, such as the pair that produced Figure \ref{fig:8c}, drew boxes and arrows, but did not heavily restructure their diagrams. The pairs that did use scraps engaged in more organization of their box-and-arrow diagrams through the moving and copying of scraps. Additionally, they typically refined their scrap-based models into UML-like models, showing how scraps can be used as the basis for such refinement from low detail to more detail. In the case of Figure \ref{fig:8b}, the designers annotated some of their scraps with ``I'' to indicate that it is an interface, and on the right-hand side they created lists of parameters for each object.
Many of the other diagrams produced in Calico shared similar qualities with the low-detail diagrams, with Figures \ref{fig:8c} and \ref{fig:8d} providing two more examples. These diagrams were quick sketches that participants initially used to help them understand a particular situation. The designers in Figure \ref{fig:8c} did not use scraps heavily and so they experimented with traffic configurations by simply drawing and erasing different scenarios. The designers in Figure \ref{fig:8d} used scraps to accomplish a similar task. In this case, they used scraps of different shades to represent traffic configurations, and experimented with different configurations by moving and copying the scraps. Additionally, they used scraps to pull pieces of the design from surrounding canvases in order to understand how a particular traffic configuration would work within the context of other parts of the system.
\subsubsection {Design behavior 3: Refinement of representations}
\label{results:24}
Both the grid and scraps were used in the refinement of representations over time. At the most general level, the grid partitioned the design space so that participants could separate high level and low level representations. Many pairs used spatial orientation to navigate from higher level representations to lower level representations, where higher level representations would exist at the typically left-most canvases, and the details of components in adjacent canvases to the right or below the originating canvas. Next, when members made the transition to more concrete representations, they would transform sketches into scraps, and create copies on other canvases where they would expand them in more detail and create relationships between them.
There were two patterns of this behavior that occurred frequently within pairs. Figure \ref{fig:11} illustrates a representative example of the first pattern, which occurred in over half of the Calico pairs. Most pairs, but not all, began by creating several lists of design requirements, goals, and what they viewed as major aspects of the system. The example in Figure \ref{fig:11-a} contains several high-level components such as Maps, Intersections, Cars, and so on. After brainstorming lists such as these, pairs would commonly convert them into scraps (Figure \ref{fig:11-b}) and copy them into another canvas, where they would expand on these in more detail, as in Figure \ref{fig:11-c}. However, creating lists such as these was not common in all pairs, two pairs chose to jump right to diagramming. In the exit interviews, these two pairs both reported that they were first concerned with understanding the requirements and the world that they were modeling. They both began by creating concrete representations of what they knew was true within intersections, and then developed a high level understanding by drawing on top of and discussing these models with their partner. To accomplish this, they created many diagrams of intersections, and from these jumped to writing down assumptions in lists contained in other canvases. When they encountered a new concept that they sensed was complex, such as how to handle the timing within intersections, they would loudly say, ``let's leave this for later'', and leave it as a generic annotation.
A second pattern that occurred more frequently was the breaking down of the design across multiple canvases. A representative example is depicted in Figure \ref{fig:12}, in which the participants from that pair partitioned their code structure across many spaces. They created a high level perspective of the architecture in one canvas using scraps (Figure \ref{fig:12-a}) and then copied these scraps to adjacent canvases, where a particular scrap would be expanded to include more detail. In Figure \ref{fig:12}, the participants divided the architecture of their program into UI, Map, and Simulation Logic. They copied the contents of this canvas to an adjacent canvas, where they subsequently fleshed out the details of Simulation Logic, but left Map and UI with no additional detail. They then used a third canvas to work out the details of Map, while leaving Simulation Logic and UI as is. Using this divide and conquer strategy, the participants were able to effectively partition their design. This behavior of spreading diagrams across several canvases is similar to what Dekel and Herbsleb \citep{dekel2007notation} observed in their studies, where diagrams in one drawing space would depend on references located in other spaces.
\begin{figure}%
\centering
\subfigure[List of high level objects] {
\label{fig:11-a}
\resizebox{.3\hsize}{.4\hsize}{ \includegraphics{./figures/CalicoVersionOne/figure11a.png}}