User Tools

Site Tools


asking_and_answering_questions_during_a_programming_change_task

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
asking_and_answering_questions_during_a_programming_change_task [2014/01/08 12:33]
yann
asking_and_answering_questions_during_a_programming_change_task [2014/01/08 12:40]
yann
Line 30: Line 30:
     - What are the parts of this type?     - What are the parts of this type?
     - Which types is this type a part of?      - Which types is this type a part of? 
-    - +    - Where does this type fit in the type hierarchy?​ 
 +    - Does this type have any siblings in the type hierarchy?​ 
 +    - Where is this field declared in the type hierarchy?​ 
 +    - Who implements this interface or these abstract methods? 
 +    - Where is this method called or type referenced?​ 
 +    - When during the execution is this method called? 
 +    - Where are instances of this class created?  
 +    - Where is this variable or data structure being accessed? 
 +    - What data can we access from this object? 
 +    - What does the declaration or definition of this look like? 
 +    - What are the arguments to this function?  
 +    - What are the values of these arguments at runtime? 
 +    - What data is being modified in this code?  
 +  - Understanding a subgraph 
 +    - How are instances of these types created and assembled?  
 +    - How are these types or objects related (whole-part)?​  
 +    - How is this feature or concern (object ownership, UI control, etc.) implemented?​ 
 +    - What in this structure distinguishes these cases? 
 +    - What is the behavior that these types provide together and how is it distributed over the types? 
 +    - What is the “correct” way to use or access this data structure?​ 
 +    - How does this data structure look at runtime? 
 +    - How can data be passed to (or accessed at) this point in the code?  
 +    - How is control getting (from here to) here?  
 +    - Why is not control reaching this point in the code? 
 +    - Which execution path is being taken in this case? 
 +    - Under what circumstances is this method called or exception thrown?  
 +    - What parts of this data structure are accessed in this code? 
 +  - Questions over groups of subgraphs 
 +    - How does the system behaviour vary over these types or cases? 
 +    - What are the differences between these files or types? 
 +    - What is the difference between these similar parts of the code (e.g., between sets of methods)? 
 +    - What is the mapping between these UI types and these model types?  
 +    - Where should this branch be inserted or how should this case be handled? 
 +    - Where in the UI should this functionality be added? 
 +    - To move this feature into this code, what else needs to be moved? 
 +    - How can we know that this object has been created and initialized correctly?​ 
 +    - What will be (or has been) the direct impact of this change? 
 +    - What will the total impact of this change be? 
 +    - Will this completely solve the problem or provide the enhancement? ​
  
 At the end, the authors report the frequencies of the questions but among groups of developers, not among sessions: "[i]f a specific question is asked repeatedly in a session, it is counted only once [...]",​ which undermine the usability of the number: it would have been much more interesting to know how often a question is asked in general! Also, the authors identify tool support for the questions but remain quite general. An in-depth study would be required. They conclude that "​[b]ecause tools typically [provide] only limited support for defining the scope over which to operate, [developers] end up asking questions more globally than they intend and, so, the result sets presented will include many relevant items",​ which is "[an opportunity] for tools to make use of the larger context to help [developers] more effectively scope their questions and to determine what is relevant to their higher level questions"​. At the end, the authors report the frequencies of the questions but among groups of developers, not among sessions: "[i]f a specific question is asked repeatedly in a session, it is counted only once [...]",​ which undermine the usability of the number: it would have been much more interesting to know how often a question is asked in general! Also, the authors identify tool support for the questions but remain quite general. An in-depth study would be required. They conclude that "​[b]ecause tools typically [provide] only limited support for defining the scope over which to operate, [developers] end up asking questions more globally than they intend and, so, the result sets presented will include many relevant items",​ which is "[an opportunity] for tools to make use of the larger context to help [developers] more effectively scope their questions and to determine what is relevant to their higher level questions"​.
asking_and_answering_questions_during_a_programming_change_task.txt · Last modified: 2019/10/06 20:37 (external edit)