240 likes | 380 Views
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information During Software Maintenance Tasks. Written by: Andrew J. Ko , Brad A. Myers, Michael J. Coblenz, and Htet Aung IEEE Transactions on Software Engineering, December 2006
E N D
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information During Software Maintenance Tasks Written by: Andrew J. Ko, Brad A. Myers, Michael J. Coblenz, and HtetAung IEEE Transactions on Software Engineering, December 2006 Presented by: Bennie Lewis and VolodymyrPryyma School of Electrical Engineering and Computer Science University of Central Florida
Overview • Introduction • Related Work • Methodology • Results • Limitations • Implications for Theory • Implications for Tools • Conclusions
Introduction • Useful software life cycle • Brief period of development • Longer period of maintenance • Development tools • Help to understand software • Help to efficiently modify source code
Introduction • Task context • Parts of artifacts relevant to developer working on maintenance task • Tools based on task context • Task context representation • Manually building task context • Inferring relevant task context
Introduction • Exploratory study • 10 developers • Eclipse 2.1.2 • Small, unfamiliar system • Goals • Discover developers’ strategies • How are development environments related to the strategies
Related Work • Strategies for understanding programs • Questions regarding • Structure • Intent • Behavior • Other studies • Collaboration • Representation
Methodology • 10 developers in laboratory setting • 5 maintenance tasks • 70-minute time limit • Interruptions • Nature of tasks • 3 debugging tasks • 2 enhancement tasks
Methodology • Participants • 31 were considered initially • Narrowed down to 10 participants • Undergraduate and graduate students • Based on self-reported survey • 7 Experts • 3 Above average
Methodology • Paint application • Java Swing application • Allowed users to draw, erase, clear, and undo • Not as complex as programs used for other studies
Methodology • Tasks • Invented complaints/requests • No task names were given • Brief description of requirements
Methodology • Tools and instrumentation • Eclipse 2.1.2 IDE • Project with 9 source files • Allowed to use other tools • Experimenter to clarify/answer questions
Methodology • Interruptions • Came from a server • Produced audible alert • Required developer’s full attention • Designed to mimic real world interruptions • Came every two and a half to three and a half minutes
Methodology • Procedure • Initial survey • 5 tasks in 70 minutes • $10 per correct task completion • Lose $2 per ignored interruption • Once done, experimenter checked work and paid developers accordingly
Results • Division of labor • Spent more time on difficult tasks • Fifth of their time on reading code • Fifth of their time on editing code • Quarter of their time on textual searches • Tenth of their time on testing
Results • Task structure • Developers activities were not independent • Had to find code first • Then determine what to edit • And then edit the code • Developers introduced errors that had to be fixed, thus interleaving the sequence of activities
Results • Forming perceptions of relevance • Involved several levels of engagement • Based on different types of cues • Common observation • Look at file name • If relevant, open file • Look for code identifiers, comments, etc • If found relevant method, examine more closely
Results • Representing task contexts • Package explorer/file tabs • 2 developers used bookmarks • Windows task bar for running applications • Web browser for documentation • 2 developers used paper notes
Results • Impact of interruptions • Only had an impact if two conditions were met • 1) an important task was not externalized at the time of acknowledging the interruption • 2) developers could not recall the state after returning from interruption • Developers always completed edits before acknowledging interruptions
Limitations • Subjective and base on authors’ interpretations • Program size not representative • Small sample size • Inexperienced subjects
Implications for Theory • There is a need for a new model of program understanding • Authors’ model • Searching, relating, and collecting relevant information • Forming perceptions of relevance
Implications for Tools • Navigating between dependencies was a major concern • Took on average 19 minutes • Many repeated navigations • Could be reduced if more helpful tools were available
Conclusions • Developers must locate and understand relevant portions of code before making a change • This study inspired a new model • Based on searching, relating, and collecting • Reliance of environment cues • Study identifies a need for more streamlined environments
Paper Critique • Pros • Poses interesting questions • Introduces a model for identifying relevant tasks • Cons • The participants were students • Self-reporting survey to gauge expertise • Relatively simple program • Strange methods • Interruptions every 2-3 minutes • Judging relevance by developer behavior