University Survey on Program Comprehension

"P. S." <[email protected]>
Newsgroups gmane.comp.jakarta.bcel.devel
Message-ID <[email protected]>
Hi All,
   I hope that is appropriate for me to post this message to your developer list. I am a postgraduate student doing research into program comprehension ie. the way in which programmers go about understanding code. At present, I am gathering requirements for a software visualisation tool that will facilitate such comprehension. If you are a Java developer and would like to answer some of my questions I would be very grateful. I can send you any references if you like and keep you posted on the research. If you are kind enough to answer my questions your identity will remain anonymous.
   If you do not have time to answer all my questions (there are 7 questions in total), then you may answer just Q1 and Q2. Thank you so much for your time. The following in an introduction followed by the questions which you may email to me directly ([email protected]).


Survey Aim: To gather requirements from experienced programmers for a Software Visualisation Tool. The aim of the tool is to support understanding of the code and to facilitate the tracking of bugs during maintenance.

Some definitions in the context of our research before we begin:

[Software Visualisation] : a means to summarise parts or part of a complex software system either graphically or textually or both for the programmer. The visualisation can include both static and dynamic views of the software system.

[Program Comprehension] : the level of understanding that the programmer has of the system, for example, are they familiar with the entire system source code or parts of it, etc ? Also, the techniques the programmer employs to achieve such comprehension.

[Abstraction] : a software system can be represented by examining it from many varying views, for example, the software architecture view, data flow view, control flow view, source code view, etc. The software architecture view is among the highest abstractions while the source code would be the lowest (more fine grained). 


If you are emailing me your answers could you also please include some short answers on the following:

(i) How long have you been programming in Java ? and how long in OO ?

(ii) Are you a member of the developer team for the project ? What is the name of the project(s) ?

(iii) How would you rate your Java programming expertise ? 
(1 to 10, where 1 is basic knowledge and 10 is a Java expert having worked with various Java API's etc.)


---------------------------
Q1. Consider a software system that is divisible into abstraction layers with software architecture being one of the most abstract and the source code being at the opposite end of the abstraction scale (most detail), with control flow, data flow views etc. in the middle somewhere. Then, what other abstractions would you use to describe a software system ? and where would they be place on the abstraction scale ?






---------------------------

Most Important Question is Q2:
Please feel free to do any rough sketches and include them. You may also describe a problem you have solved before if this is easier for you.


Q2. Which abstraction(s) do you commonly use as an aid during maintenance and problem solving ? How would you describe/visualise these abstractions ? Please note that the abstractions listed above are only examples, you may name your own abstractions.

(for example, if you feel that examining "DATA" is vital to your problem solving, please describe how you examine the "DATA", ie. do you examine data values, types, flow, structures, objects, etc.) 

Draw sketches of how you visualise these when working with them. These sketches may be from your head or sketches you draw on paper when programming or from a tool you use. Please state if the sketches are from a visualisation tool that you use and which tool.







-----------------------------
Other shorter Questions if you have time:


Q3. What are the most common tasks you perform when programming ?

(eg. code reading, bug fixes, adding new features, etc.)







-----------------------------


Q4. Which abstractions do you rate as most important when performing each of the above task types ?






-----------------------------


Q5. Which abstractions would you most commonly use together, if any ? 

(eg. do you switch between software architecture/UML views and source code a lot ? or would you be looking for control loops in the source code a lot ? or would you be looking at variable values and control loops together ?, etc.)






-----------------------------

Q6. Within the abstractions you find the most helpful for your tasks, what sort of queries are most important within them ?

(eg. if you find DATA and SOFTWARE ARCHITECTURE extremely helpful, then what sort of queries do you make of the DATA (looking for variable names or object names is one example, etc.). Then in the SOFTWARE ARCHITECTURE views, do you mostly examine inheritance or other types of relationships etc. ?)






-----------------------------


Q7. Do you have a pattern for helping you solve reoccurring problems ? Please state the problems first.

(eg. for NullPointer Exceptions I always use print statements to check initialisation, etc.)








-----------------------------




Thank you very much for your time. It is very much appreciated. Please let me know if I can provide you with any other information and I will be happy to forward it on.





-- 
_______________________________________________
For the largest FREE email in Ireland (25MB) and 20MB of online file storage space - Visit http://www.campus.ie

Powered by Outblaze
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.