Exclamations during Finding --------------------------- 1: tool; "I don't know why it's complaining" 2: manual; "borderline, doesn't feel too long" 2: tool; "kind of ignoring after a while" 3: tool; large method: "obviously!" 4: manual; large method: "this method is insane!" 4: tool; feature envy: "yea! wow! that's nice" 4: tool; large class: "not terribly large -> that why not that big" 5: tool: "I could see how long method could grow!" 5: tool: data clumps: "where they at?" 5: tool: data clumps: "I don't really see the problem" 5: tool: when between methods, "must not be a long class" 5: tool: "how do I get back to the hairline?" 5: manual: "I don't know the objects well enough to know what feature envy" 7: tool: feature envy: totally agree! 8: tool: "I'll trust it" 8: tool: "if it fits on the page, it's reasonable" 8: tool: "I think that's definetely helpful" 8: tool: "I wouldn't know where to start" (?) 8: tool: "this [long method petal] tells me it's really big... that's helpful!" 8: tool: "it caught my eye" 9: manual: "I think feature envy is hard to find on your own" 10:tool: data clumps: "where?" 10:tool: "I prefer instanceof over polymorphism" 10:tool: feature envy: "it's hard to sift through to find the the particular class" 10:tool: "it's good to be more specific" 10:manual: "it's hard to find data clumping... I have to go back and forth" 11:switch: "can't believe I didn't see it!" 12:manual data clumps: "not their fault" 12:manual "indenting is killing me!" 12:manual "trying to remember the 8" 12:manual "I realize I forgot about the Long Method one" - at end of manual inspection 12:tool "typecast: I'd totally forgotten!" 12:tool "I concur", "Don't know if I'd agree", "relative; maybe configure?" Exclamations during Inspection --------------------------- 5: when I point out staple, "that's a useful feature" 6: when using tool to assess widespreadness, "very clear!" 7: duplication is compelling reason to refactor 7: on envy1 with tool: "I don't see this smell" 7: "it's a lot harder without the tool, I'll tell you that!" 8: "no 'does the tool suggest anything?'" 10:"how do I scroll down?" 10:"it's referencing itself a lot" (not really: must be referring to something other than "this") 11:"actually, you can tell by the color tool" 11:"I'm going to go with the color thing here... it's easier" 12: manually, "it's static, so we're not referencing it in thsi class" 12: "read only - that's a good choice" Get Attention at Right Times? --------------------------- 1: yes, (something) not useful 2: biggest thing is (something) out a lot of information at one time 3: yes 4: probably 5: yes 6: yes, but would prefer to use it after coding 7: yes 8: yes 9: yes / configurable somehow 10:probably notice it all the time 11:yes, helpful for beginner 12:maybe too subtle (more useful in the review process?) Too Distracting? --------------------------- 2: no, less info, more in my face 3: yes, right amount (read: no) 4: nope 5: no, would see if all of a sudden have huge problem 6: not much -> get used to it 7: line in middle a little distracting, otherwise no prob 8: no, but would prefer to turn it off at will 9: no 10:not very distracting 11:no 12: not usually Increased Confidence? --------------------------- 1: yes 3: yes 4: oh yea 5: not usually -> not in depth didn't get to try refactorings 6: yes -> didn't make judgement for you. 7: yes 8: yes, definitely 9: yes, window made it obvious about how challenging it will be 10:yes 11:yes, in some cases 12:yes, it gives you a second lookg, but some not much Make Informed Judgments? --------------------------- 2: yes, see (something) many times 3: yes 4: oh yea 5: yes, brings (something) to forefront (general) 6: yes 7: yes 8: yes, but would like a suggestion of someting 9: yes, more apparent, rather than manually 10:yes 11:yes 12:yes Tool Suggestions --------------------------- 2: Wanted to see a summary of the whole source code 4: Would prefer to see large method be counting statements 4: smaller/larger indicator for large method 4: larger indicator for feature envy (self: neural network approach?) 4: should analyze static blocks 4: zoom out? see whole method at once? 4: how much of each wedge is used? 4: "it would take tgetting used to; 4: which is which" highlighting of worst 4: more intuitive position (?) 4: highlight the worst smells; use different colors? 5: uses size of case in wedge size estimation 5: message chain should be bigger, especially for long ones 5: long method could be smaller 5: color blind; moving over the classes helps, but would be better to have line between 6: should be bigger for longer Messages 6: long method shouldn't show anything for some methods 7: long method too large 7: expect clicking to work on detail 7: have some way to show all ref'd classes: scroll bar? 7: click on a member to go to source 8: exclude comments when judging length 8: clicking should do something 8: faster scrolling (notices scroll lag) 8: shortcuts for using tool (very keyboard oriented) 9: size should be based on characters, but without comments 9: click to go to source 9: high level smells in gutter 9: scale pie chart -> bigger/smaller 11:message chain too small 11:how many references to each member? 11:would rather see names instantaneously than wait (12 disagreed, I recall) 11:show all labels at once, rather than just one 11:show all labels when I stop scrolling 12:little icon? some way to tell icons aprt? 12:remove comments from calculation 12:character length punish good naming; use AST, expressions or statements 12:folding to hide some of the class details in Detail View 12:apply to whole packages or projects 12:make class appear different, since it applies to whole class Notes to Self: --------------------------- 1: Judges large class based on size of scrollbar 1: At end, I explain the difference between the ones at the top and bottom 2: Says "Large Class" 4 times; probably tool shouldn't flash 2: Not sure what he would do about Feature Envy; suggests that tool doesn't suggest solution 3: Have to remind him what the size of the wedge means 3: Appears to be getting better at ignoring wedges 4: uses a lot of up/down scrolling 4: says he's familiar with Azureus 4: always goes back to Large Method wedge, even when smell 4: At end, I explain the difference between the ones at the top and bottom (2nd appearance) 4: says he has turned off underlining in IDE, because it's too distracting - relies on sidebar marks 5: tends to ignore Large Class on second file (and didn't mark it) 5: scrolls back and forth 5: appears to be good at manually looking for a variety of smells (e.g., first file looked for all but typecast) 5: not too familiar with refactoring for judgments 6: asks questions, but kind of quiet 6: successfully ignoring smaller wedges 6: tends to go to lower wedges last 6: participant picks up OS move too -> very sharp! 7: asks for definition of refactoring 7: mostly skips small wedges 7: looks first, verifies with tool (two methods) 7: uses feature envy heuristic 7: when manually judging feature envy, looks at one potential variable at a time, first file, then string, then set 8: not thorough looking for data clumps 8: uses quick outline and find/replace dialog 8: tool doesn't work so well backwards ("where's instanceof?") 9: takes a while to get comfortable with finding task / tool 9: successfully ignores small wedges 9: tends to scroll up and down when using tool 9: looks at code first, verifies with tool 9: manual data clump estimation is a guess (I ask, says the fact that there are 6 parameters is a heuristic) 9: during manual judgment, ignores this references 9: post "something annoying -> highlights all these errors (general)" 9: post "delay on refresh" 9: post "onobtrusive" "quite handy" 10:asks what is refactoring 10:forgetful of definitions of smells 10:he doesn't seem to be using tool much 10:uses "find next" a lot, even when tool gives that information 11:scrolls up and down for manual finding 11:keeps coming back to large class 12:knows a bit about azureus 12:asks for wedge positioning rationale Generally: people seem to do the same judgments with and without tools, although they sometimes missed details Bugs --------------------------- Nested Fields (Foo.bar.baz) Window extends off screen Seemingly random coloring