SlideShare a Scribd company logo
1 of 63
Download to read offline
Supporting Developers’
Coordination in The IDE
Guzzi, Bacchelli, 

Riche, van Deursen
Supporting Developers’ Coordination in The IDE
Supporting Developers’ Coordination in The IDE
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Supporting Developers’ Coordination in The IDE
Devising and evaluating
an IDE extension to support
teamwork.
Investigating how developers
experience teamwork
and
identify problems they face
when working in team.
Exploratory Investigation
Exploratory Investigation: Methodology
brainstorming

(9 experts)
interviews
(11 professional developers)
analysis of transcripts and memos
with card sorting
themes’ analysis
with affinity diagram
working
situation
working
situation
How developers experience teamwork
1. They spend most the time doing individual work
2. Most of their interaction is to coordinate (e.g., through daily stand-ups)
3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings)
4. Their intention for collaboration is mostly coordination, leading to individual work
Exploratory Investigation: Findings
individual work
coordination
collaboration
interaction

level
Exploratory Investigation: Findings
individual work
coordination
collaboration
interaction

level
information
How developers experience teamwork: role of information
1. They spend most the time doing individual work
2. Most of their interaction is to coordinate (e.g., through daily stand-ups)
3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings)
4. Their intention for collaboration is mostly coordination, leading to individual work
Exploratory Investigation: Findings
Three problematic scenarios
inefficient
task assignment
simultaneous
conflicting changes
breaking
changes
Needed information
ProblematicCommunicated Visible
✔ ✔ ✘
✘ ✔ ✘
✘ ✘
Exploratory Investigation: Findings
Three problematic scenarios: role of information
inefficient
task assignment
simultaneous
conflicting changes
breaking
changes
Exploratory Investigation: Selected implications
support for coordination
has more potential
literature must be tested
on current practices
receiving internal changes
is experienced as painful
Supporting Developers’ Coordination in The IDE
Devising and evaluating
an IDE extension to support
teamwork.
support for coordination
has more potential
literature must be tested
on current practices
receiving internal changes
is experienced as painful
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Current IDEs’ support for receiving changes
Current IDEs’ support for receiving changes
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Current IDEs’ support for receiving changes

no support for:

- recognition over recall
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Recognition over recall
“Memory for recognizing things is better than memory for
recalling things” —Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Visibility of system status
“The system should always keep users informed about what is
going on” —Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Clearly marked exits
“A system should never capture users in situations that have no
visible escape” — Molich & Nielsen 1990
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Help and documentation
“[Documentation should] be easy to search, focused on the
user’s task, list concrete steps to be carried out, and not be too
large” — Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation

- help recognize, diagnose, and recover
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Unmet usability heuristics
Help users recognize, diagnose, and recover from errors
— Nielsen 1995
Current IDEs’ support for receiving changes

no support for:

- recognition over recall

- visibility of system status

- clearly marked exits

- help and documentation

- help recognize, diagnose, and recover
h"p://online.visualstudio.com4 Visual4Studio4 r!
James4Green4444/4444Paint4
EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE
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"
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"

 
Pending Outgoing

 ! 
Pending Incoming
app.config
LinePaint.cs
PaintCanvas.cs
PaintCanvasCommands.cs
PencilPaint.cs
RectPaint.cs
Window1.xaml.cs replaced




Window1.xaml.cs
 edited
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
"""///"<summary>"
"""///"TODO:"Autogenerated"comment"
"""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());"
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
using"System;"
using"System.Collections.Generic;"
using"System.Linq;"
using"System.Text;"
using"System.Windows;"
using"System.Windows.Controls;"
using"System.Windows.Data;"
using"System.Windows.Documents;"
using"System.Windows.Input;"
using"System.Windows.Media;"
using"System.Windows.Media.Imaging;"
using"System.Windows.Navigation;"
using"System.Windows.Shapes;"
"
namespace"Paint"
{"
""""///"<summary>"
""""///"Interaction"logic"for"Window1.xaml"
""""///"</summary>"
""""public"partial"class"Window1":"Window,"IPaintObjectConstructorListener"
""""{"
""""""""private"PaintObjectConstructor"objectConstructor;"
"
""""""""public"Window1()"
""""""""{"
""""""""""""InitializeComponent();"
""""""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);"
""""""""}"
"
""""""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor"="new"PaintObjectConstructor(this);"
""""""""""""objectConstructor.setType("Paint.PencilPaint");"
""""""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor("
""""""""""""objectConstructor.setThickness(5);"
"
""""""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr"
""""""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC"
""""""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon"
""""""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru"
""""""""}"
"
""""""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)"
""""""""{"
""""""""""""objectConstructor.setColor(e.ColorValue);"
""""""""}"
"
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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0
edited
edited
edited
edited
added
edited
Design requirements:
- recognition over recall
- visibility of system status
- clearly marked exits
- help and documentation
- help recognize, diagnose, and recover
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015

More Related Content

Similar to Supporting Developers’ Coordination in The IDE #cscw2015

Innovators_Guidebook_workdifferently_gravitytank
Innovators_Guidebook_workdifferently_gravitytankInnovators_Guidebook_workdifferently_gravitytank
Innovators_Guidebook_workdifferently_gravitytank
Pooja Merai
 
Chapter 9 case study tools for visualising designs
Chapter 9 case study  tools for visualising designsChapter 9 case study  tools for visualising designs
Chapter 9 case study tools for visualising designs
grainne
 
MINDSTORMING: UPA 2011 full presentation
MINDSTORMING: UPA 2011 full presentationMINDSTORMING: UPA 2011 full presentation
MINDSTORMING: UPA 2011 full presentation
Dante Murphy
 
Please use HeadingsTemplates provided below when responding to th.docx
Please use HeadingsTemplates provided below when responding to th.docxPlease use HeadingsTemplates provided below when responding to th.docx
Please use HeadingsTemplates provided below when responding to th.docx
stilliegeorgiana
 
Problem Solving And Creativity
Problem Solving And CreativityProblem Solving And Creativity
Problem Solving And Creativity
feoropeza
 
Principal VT September 15
Principal VT September 15Principal VT September 15
Principal VT September 15
ISD191
 
Exploration of Voices of Diversity.docx
Exploration of Voices of Diversity.docxExploration of Voices of Diversity.docx
Exploration of Voices of Diversity.docx
write22
 
1 implementation
1 implementation1 implementation
1 implementation
M Wahla
 
Develop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docxDevelop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docx
sdfghj21
 
Develop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docxDevelop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docx
4934bk
 

Similar to Supporting Developers’ Coordination in The IDE #cscw2015 (20)

Innovators_Guidebook_workdifferently_gravitytank
Innovators_Guidebook_workdifferently_gravitytankInnovators_Guidebook_workdifferently_gravitytank
Innovators_Guidebook_workdifferently_gravitytank
 
Evaluating the Impact of Design Thinking in Action III
Evaluating the Impact of Design Thinking in Action IIIEvaluating the Impact of Design Thinking in Action III
Evaluating the Impact of Design Thinking in Action III
 
Group Exercise_Best Practices for Meetings
Group Exercise_Best Practices for MeetingsGroup Exercise_Best Practices for Meetings
Group Exercise_Best Practices for Meetings
 
Getting started with UX research October 2017.pptx
Getting started with UX research October 2017.pptxGetting started with UX research October 2017.pptx
Getting started with UX research October 2017.pptx
 
Blended Learning Professional Development Action Research
Blended Learning Professional Development Action ResearchBlended Learning Professional Development Action Research
Blended Learning Professional Development Action Research
 
Chapter 9 case study tools for visualising designs
Chapter 9 case study  tools for visualising designsChapter 9 case study  tools for visualising designs
Chapter 9 case study tools for visualising designs
 
MINDSTORMING: UPA 2011 full presentation
MINDSTORMING: UPA 2011 full presentationMINDSTORMING: UPA 2011 full presentation
MINDSTORMING: UPA 2011 full presentation
 
Organising UX Research
Organising UX ResearchOrganising UX Research
Organising UX Research
 
Design Thinking Method Sticker 2014
Design Thinking Method Sticker 2014Design Thinking Method Sticker 2014
Design Thinking Method Sticker 2014
 
NCURA Poster-2017
NCURA Poster-2017NCURA Poster-2017
NCURA Poster-2017
 
Davey van der woert - Design Thinking
Davey van der woert - Design ThinkingDavey van der woert - Design Thinking
Davey van der woert - Design Thinking
 
Please use HeadingsTemplates provided below when responding to th.docx
Please use HeadingsTemplates provided below when responding to th.docxPlease use HeadingsTemplates provided below when responding to th.docx
Please use HeadingsTemplates provided below when responding to th.docx
 
Problem Solving And Creativity
Problem Solving And CreativityProblem Solving And Creativity
Problem Solving And Creativity
 
Principal VT September 15
Principal VT September 15Principal VT September 15
Principal VT September 15
 
U Penn Wharton design challenge '17
U Penn Wharton design challenge '17U Penn Wharton design challenge '17
U Penn Wharton design challenge '17
 
Exploration of Voices of Diversity.docx
Exploration of Voices of Diversity.docxExploration of Voices of Diversity.docx
Exploration of Voices of Diversity.docx
 
1 implementation
1 implementation1 implementation
1 implementation
 
AgileLIVE - Collaboration that Scales - Part 1
AgileLIVE - Collaboration that Scales - Part 1AgileLIVE - Collaboration that Scales - Part 1
AgileLIVE - Collaboration that Scales - Part 1
 
Develop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docxDevelop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docx
 
Develop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docxDevelop a team mission statement along with teamwork project.docx
Develop a team mission statement along with teamwork project.docx
 

Recently uploaded

Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
Chemical Tests; flame test, positive and negative ions test Edexcel Internati...Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
ssuser79fe74
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...
RohitNehra6
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
PirithiRaju
 
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptxSCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
RizalinePalanog2
 
Disentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOSTDisentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOST
Sérgio Sacani
 

Recently uploaded (20)

Animal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptxAnimal Communication- Auditory and Visual.pptx
Animal Communication- Auditory and Visual.pptx
 
Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
Chemical Tests; flame test, positive and negative ions test Edexcel Internati...Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
Chemical Tests; flame test, positive and negative ions test Edexcel Internati...
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...
 
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
PossibleEoarcheanRecordsoftheGeomagneticFieldPreservedintheIsuaSupracrustalBe...
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
 
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
High Class Escorts in Hyderabad ₹7.5k Pick Up & Drop With Cash Payment 969456...
 
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
Vip profile Call Girls In Lonavala 9748763073 For Genuine Sex Service At Just...
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
 
Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )
 
Pulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceuticsPulmonary drug delivery system M.pharm -2nd sem P'ceutics
Pulmonary drug delivery system M.pharm -2nd sem P'ceutics
 
Botany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdfBotany 4th semester file By Sumit Kumar yadav.pdf
Botany 4th semester file By Sumit Kumar yadav.pdf
 
GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)GBSN - Microbiology (Unit 2)
GBSN - Microbiology (Unit 2)
 
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptxSCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
SCIENCE-4-QUARTER4-WEEK-4-PPT-1 (1).pptx
 
TEST BANK For Radiologic Science for Technologists, 12th Edition by Stewart C...
TEST BANK For Radiologic Science for Technologists, 12th Edition by Stewart C...TEST BANK For Radiologic Science for Technologists, 12th Edition by Stewart C...
TEST BANK For Radiologic Science for Technologists, 12th Edition by Stewart C...
 
Hire 💕 9907093804 Hooghly Call Girls Service Call Girls Agency
Hire 💕 9907093804 Hooghly Call Girls Service Call Girls AgencyHire 💕 9907093804 Hooghly Call Girls Service Call Girls Agency
Hire 💕 9907093804 Hooghly Call Girls Service Call Girls Agency
 
Disentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOSTDisentangling the origin of chemical differences using GHOST
Disentangling the origin of chemical differences using GHOST
 
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICESAMASTIPUR CALL GIRL 7857803690  LOW PRICE  ESCORT SERVICE
SAMASTIPUR CALL GIRL 7857803690 LOW PRICE ESCORT SERVICE
 
Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on Io
 
Nightside clouds and disequilibrium chemistry on the hot Jupiter WASP-43b
Nightside clouds and disequilibrium chemistry on the hot Jupiter WASP-43bNightside clouds and disequilibrium chemistry on the hot Jupiter WASP-43b
Nightside clouds and disequilibrium chemistry on the hot Jupiter WASP-43b
 
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptxCOST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
 

Supporting Developers’ Coordination in The IDE #cscw2015

  • 1. Supporting Developers’ Coordination in The IDE Guzzi, Bacchelli, Riche, van Deursen
  • 3. Supporting Developers’ Coordination in The IDE Investigating how developers experience teamwork and identify problems they face when working in team.
  • 4. Investigating how developers experience teamwork and identify problems they face when working in team. Supporting Developers’ Coordination in The IDE Devising and evaluating an IDE extension to support teamwork.
  • 5. Investigating how developers experience teamwork and identify problems they face when working in team. Exploratory Investigation
  • 6. Exploratory Investigation: Methodology brainstorming
 (9 experts) interviews (11 professional developers) analysis of transcripts and memos with card sorting themes’ analysis with affinity diagram
  • 7. working situation working situation How developers experience teamwork 1. They spend most the time doing individual work 2. Most of their interaction is to coordinate (e.g., through daily stand-ups) 3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings) 4. Their intention for collaboration is mostly coordination, leading to individual work Exploratory Investigation: Findings individual work coordination collaboration interaction
 level
  • 8. Exploratory Investigation: Findings individual work coordination collaboration interaction
 level information How developers experience teamwork: role of information 1. They spend most the time doing individual work 2. Most of their interaction is to coordinate (e.g., through daily stand-ups) 3. Collaboration happens infrequently and on a need basis (e.g., sprint meetings) 4. Their intention for collaboration is mostly coordination, leading to individual work
  • 9. Exploratory Investigation: Findings Three problematic scenarios inefficient task assignment simultaneous conflicting changes breaking changes
  • 10. Needed information ProblematicCommunicated Visible ✔ ✔ ✘ ✘ ✔ ✘ ✘ ✘ Exploratory Investigation: Findings Three problematic scenarios: role of information inefficient task assignment simultaneous conflicting changes breaking changes
  • 11. Exploratory Investigation: Selected implications support for coordination has more potential literature must be tested on current practices receiving internal changes is experienced as painful
  • 12. Supporting Developers’ Coordination in The IDE Devising and evaluating an IDE extension to support teamwork. support for coordination has more potential literature must be tested on current practices receiving internal changes is experienced as painful
  • 13. h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Current IDEs’ support for receiving changes
  • 14. Current IDEs’ support for receiving changes h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics
  • 15. Current IDEs’ support for receiving changes no support for: - recognition over recall h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Recognition over recall “Memory for recognizing things is better than memory for recalling things” —Nielsen 1995
  • 16. Current IDEs’ support for receiving changes no support for: - recognition over recall - visibility of system status h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Visibility of system status “The system should always keep users informed about what is going on” —Nielsen 1995
  • 17. Current IDEs’ support for receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Clearly marked exits “A system should never capture users in situations that have no visible escape” — Molich & Nielsen 1990
  • 18. Current IDEs’ support for receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Help and documentation “[Documentation should] be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large” — Nielsen 1995
  • 19. Current IDEs’ support for receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Unmet usability heuristics Help users recognize, diagnose, and recover from errors — Nielsen 1995
  • 20. Current IDEs’ support for receiving changes no support for: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover h"p://online.visualstudio.com4 Visual4Studio4 r! James4Green4444/4444Paint4 EXPLORE OPEN SEARCH BUILD TEST CHANGES CONSOLE 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" 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" Pending Outgoing ! Pending Incoming app.config LinePaint.cs PaintCanvas.cs PaintCanvasCommands.cs PencilPaint.cs RectPaint.cs Window1.xaml.cs replaced Window1.xaml.cs edited using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """///"<summary>" """///"TODO:"Autogenerated"comment" """///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor());" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstructor.MouseExited);" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectConstructor.MousePressed);" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectConstructor.MouseReleased);" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstructor.MouseMoved);" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " using"System;" using"System.Collections.Generic;" using"System.Linq;" using"System.Text;" using"System.Windows;" using"System.Windows.Controls;" using"System.Windows.Data;" using"System.Windows.Documents;" using"System.Windows.Input;" using"System.Windows.Media;" using"System.Windows.Media.Imaging;" using"System.Windows.Navigation;" using"System.Windows.Shapes;" " namespace"Paint" {" """"///"<summary>" """"///"Interaction"logic"for"Window1.xaml" """"///"</summary>" """"public"partial"class"Window1":"Window,"IPaintObjectConstructorListener" """"{" """"""""private"PaintObjectConstructor"objectConstructor;" " """"""""public"Window1()" """"""""{" """"""""""""InitializeComponent();" """"""""""""this.Loaded"+="new"RoutedEventHandler(Window1_Loaded);" """"""""}" " """"""""public"void"Window1_Loaded(object"sender,"RoutedEventArgs"e)" """"""""{" """"""""""""objectConstructor"="new"PaintObjectConstructor(this);" """"""""""""objectConstructor.setType("Paint.PencilPaint");" """"""""""""objectConstructor.setColor(ColorSliderPanel.getStartingColor(" """"""""""""objectConstructor.setThickness(5);" " """"""""""""DrawingCanvas.MouseLeave"+="new"MouseEventHandler(objectConstr" """"""""""""DrawingCanvas.MouseDown"+="new"MouseButtonEventHandler(objectC" """"""""""""DrawingCanvas.MouseUp"+="new"MouseButtonEventHandler(objectCon" """"""""""""DrawingCanvas.MouseMove"+="new"MouseEventHandler(objectConstru" """"""""}" " """"""""private"void"SetPaintColor(object"sender,"ColorChangedEventArgs"e)" """"""""{" """"""""""""objectConstructor.setColor(e.ColorValue);" """"""""}" " 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"Window1.xaml.cs,0#latest! Window1.xaml.cs,0#current0 edited edited edited edited added edited Design requirements: - recognition over recall - visibility of system status - clearly marked exits - help and documentation - help recognize, diagnose, and recover