190 likes | 269 Views
Direction and Scope of Comprehension-Related Activities by Procedural and OO Programmers: An Empirical Study. Paper By: Cynthia L. Corritore , Susan Wiedenbeck Presentation By: Abdulkareem Alali. Cynthia L. Corritore . Position:
E N D
Direction and Scope of Comprehension-Related Activitiesby Procedural and OO Programmers: An Empirical Study Paper By: Cynthia L. Corritore , Susan Wiedenbeck Presentation By: Abdulkareem Alali
Cynthia L. Corritore. • Position: • Associate Professor, Information Systems and Technology, College of Business Administration, Creighton University. • Research: • Online Trust and e-commerce (in business and health care) Technology and Ethics • Comprehension models and strategies in programmers, expert and novice. • Educational strategies and paradigms with technology. • Susan Wiedenbeck. • Position: • Professor, Ph.D. Program Director, iSchool at the University of Pittsburgh. • Research: • human-computer interaction. • empirical studies of end-user programming.
Study Highlights • What information sources programmers use to understand programs during maintenance activities?Scope of comprehension activities. • How the use of the information sources evolves over time? Direction of comprehension activities. • what effect the programming paradigm has on program understanding during maintenance? Procedural vs. OO comprehension. This study track the knowledge sources used by expert programmers during maintenance of a program.
Scope of Comprehension Activities Breadth of familiarity with the program gained by the programmer during comprehension activities. • Systematic strategy: • A broad understanding of the program before modifications. • As-needed strategy: • Minimize the amount of code that has to be understood. • Concentrates on the functioning of selected local parts of the code that are critically involved in the modification.
Direction of Comprehension Activities • Whether the strategic approach to program comprehension is top-down, bottom-up, or a mixture of the two. • A top-down approach appears with understanding; when programmer works in a familiar domain (plans). • A bottom-up approach is for new code and unfamiliar domains.
A bottom-up: Pennington,10KLOC. • Developing a program model: A control flow abstraction from code, Then • Forming a domain model: Data flow and functional abstractions. • Switches from top-down to bottom-up comprehension is frequent, because domain knowledge is different for each part of the program.
Procedural vs. OO Comprehension • No difference in comprehension of function and data flow by the two groups. • OO programmers initially developed stronger knowledge of program structure including the relationships of program objects (domain-level). Poorer knowledge of specific operations and control flow. • After modifying the program, OO programmers improve their program-level knowledge to equal that of the procedural programmers.
Research Questions • Is whether OO experts show a more top-down direction of comprehension activities than procedural experts? - OO-style more structured and emphasis on objects, hierarchy; facilitate a more top-down strategy. • Is whether OO experts have a narrower scope of comprehension activities than procedural experts? - OO objects encapsulate data and functionality. Changes are internal to the object. Means less broad knowledge of the program as a whole. • Is how comprehension strategies change over repeated modification of the same program? - A narrow scope of comprehension activities in initial maintenance of a program may incrementally become a wide scope, as a programmer works with a program over time.
Experiment Setup • Participants • BS degrees in CS or Eng. Average 11.6 years programming. 15 OO/C++ vs. 15 Procedural/C. • Materials • .cc, .h and documentation. 3 levels of abstraction ordered increasingly. • Two functionally equivalent versions of a database program procedural C and OO C++. Same algorithm, length, variable names, very close documentation. • No internal commits but extensive external documents; • Procedure • On-line materials in a graphical Unix environment, Only one document visible at a time. To determine what materials accessed. • Screen capture software records participants’ use of the materials. • Data were collected in three tasks: the study phase and the two modifications.
Findings: Scope Comprehension (1) • The scope of comprehension measured as the proportion of files accessed. • Koenemannand Robertson: Accesses are relevant to programming tasks (localized). This study shows a broader scope of comprehension (more files, functions accessed). • Knowledge accumulates over different tasks on the same program. A greater scope of access to files initially in studying the program. • During the two modification phases scope became narrower and more focused on lower level file access rates, Not much narrowing! 40%- 20% pre-study. Greater complexity of the tasks.
Findings: Scope Comprehension (2) • In a week experiment, programmers return to their code changes, an on-going need to re-familiarize themselves with a program. • Procedural group had a greater scope of comprehension than the OO group. 59% vs. 40% for OO group. More scattered in the procedural paradigm. • In modification tasks, OO group had a narrower scope because encapsulation made the changes more local to a specific class and protected the rest of the program from effects of the changes.
Findings: Direction Comprehension(1) • The direction of comprehension is measured as the level of abstraction of files accessed. • The direction was mixed. Bottom-up was more prevalent, higher access rates to implementation and header files compared to documentation files.
Findings: Direction Comprehension(2) • Direction of comprehension was influenced by phase of the experiment and the paradigm. • During the study period, OO guys used a top-down strongly rely on documentation: 90% documentation files to 60% – 70% of the other files. • Procedural participants used a more bottom-up strategy same period, 60% documentation files but 85% – 90% of the header and implementation files.
Findings: Direction Comprehension(3) • OO group changed their strategy more over time. • Bottom-up orientation was needed to gather all of the information needed to carry out the modifications. • A mixed strategy and the change over time suggest the type of activity. • The programmer’s history of experience with the program play important roles in the direction of comprehension.
Conclusions • Procedural and the OO group, scope comprehension was greater during the initial study period, then narrowed during the modifications. • The scope of comprehension was broader in the procedural than the OO group. • Both use Bottom-up when making successive modifications to the program. • Study phase, OO programmers utilize a top-down orientation. Procedural programmers more strongly bottom-up even during this early phase.
I think … • An interesting study and inspiring, But 30 programs is a small group. 2000 paper! Online Experiments! • Nothing mentioned about how file navigation was? How that effects on counting? • Counting accesses should be supported with many other parameters like: order of files, highly focused locations in files (eye tracking/time, window slicing/time), time spent on each file, ... • Do comprehension activities on OO languages differ?. C++ vs. Java. • It would be interesting to find the frequent sequential patterns for files comprehended. • Re-do the analysis on big open source systems with long histories(eclipse plug-in to track system dev.)
References Direction and Scope of Comprehension-Related Activities by Procedural and Object-Oriented Programmers: An Empirical Study, Cynthia L. Corritore Susan Wiedenbeck.