What is the impact of software design attributes when programmers try to understand code during a maintenance project?
1-2 short or long theses
Background:
Earlier studies of code smells have not analyzed yet their effects on program comprehension of the developers. Earlier work has suggested that expert programmers perform better on plan-like programs, than on unplan-like programs. On unplan-like programs, experts’ performance deteriorated, as they seemed confused by the rule violations, and indeed their performance levels dropped to near the level of the novice programmers. Since code smells can also be seen as anti-patterns, they could be used as indictors of unplan-like programs. One possible effect is if code smells provide misleading information, the developers might be affected and loose time inspecting insignificant code. For instance, we might ask how inconsistent names combined with dead code can affect the perception of the developer about relevant information. To which point could they be misleading? What is the impact on a real-life project?
What you will do:
You will help to carry out a Controlled, multiple case study, where several programmers will be asked to conduct a series of maintenance tasks in several versions of a web-based information system (each of them with similar functionality but very different design). Some of the responsibilities (not limited to) will include:
1. Review different program comprehension models in order to identify different comprehension activities expected to be performed by the programmers during the study.
2. Based on the literature review, help to build a protocol for interviews and think-aloud sessions with programmers, more specifically:
- Sketch for semi-structured interviews
- Sketch for open-ended interviews
- Protocol for think-aloud sessions
3. Help to perform think-aloud sessions and collect data on each of the sessions during the study. The main purpose is to record the most representative comprehension activities and how they were hindered or supported by the design of the different software designs.
You will from this thesis:
· Learn how to conduct a case study with industry practitioners
· Get insight on how observational studies are conducted
· Learn about program comprehension models
· Establish contacts with software industry at international and local level
