skip to main content
10.1145/1368088.1368195acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

A study of student strategies for the corrective maintenance of concurrent software

Published: 10 May 2008 Publication History

Abstract

Graduates of computer science degree programs are increasingly being asked to maintain large, multi-threaded software systems; however, the maintenance of such systems is typically not well-covered by software engineering texts or curricula. We conducted a think-aloud study with 15 students in a graduate-level computer science class to discover the strategies that students apply, and to what effect, in performing corrective maintenance on concurrent software. We collected think-aloud and action protocols, and annotated the protocols for a number of behavioral attributes and maintenance strategies. We divided the protocols into groups based on the success of the participant in both diagnosing and correcting the failure. We evaluated these groups for statistically significant differences in these attributes and strategies.
In this paper, we report a number of interesting observations that came from this study. All participants performed diagnostic executions of the program to aid program comprehension; however, the participants that used this as their predominant strategy for diagnosing the fault were all unsuccessful. Among the participants that successfully diagnosed the fault and displayed high confidence in their diagnosis, we found two commonalities. They all recognized that the fault involved the violation of a concurrent-programming idiom. And, they all constructed detailed behavioral models (similar to UML sequence diagrams) of execution scenarios. We present detailed analyses to explain the attributes that correlated with success or lack of success. Based on these analyses, we make recommendations for improving software engineering curriculums by better training students how to apply these strategies effectively.

References

[1]
Copse project. http://www.cse.msu.edu/sens/copse/, 2008.
[2]
EclipseUML. http://www.omondo.com/, 2007.
[3]
G. R. Andrews. Concurrent Programming: Principles and Practice. Addison-Wesley, 1991.
[4]
M. Biberstein, E. Farchi, and S. Ur. Choosing among alternative pasts. In IPDPS '03: Proceedings of the 17th International Symposium on Parallel and Distributed Processing, 2003.
[5]
L. C. Briand, Y. Labiche, and Y. Miao. Towards reverse engineering of UML sequence diagrams. In WCRE '03: Proceedings of the 10th Working Conference on Reverse Engineering, 2003.
[6]
J. Chen and S. MacDonald. Testing concurrent programs using value schedules. In ASE '07: Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering, pages 313--322, New York, NY, USA, 2007. ACM.
[7]
J.-D. Choi and H. Srinivasan. Deterministic replay of Java multi-threaded applications. In Proceedings of the ACM SIGMETRICS Symposium on Parallel and Distributed Tools, pages 48--59, Aug. 1998.
[8]
D. Diaper, editor. Task Analysis for Human Computer Interaction. Ellis Horwood, 1989.
[9]
K. A. Ericsson. Valid and non-reactive verbalization of thoughts during performance of tasks. Journal of Consciousness Studies, 10(9-10):1--19, 2003.
[10]
K. A. Ericsson and H. A. Simon. Protocol Analysis: Verbal Reports as Data. MIT Press, 1993.
[11]
P. Godefroid. Model checking for programming languages using VeriSoft. In POPL '97: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1997.
[12]
A. J. Ko, H. Aung, and B. A. Myers. Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks. In ICSE '05: Proceedings of the 27th International Conference on Software Engineering, pages 126--135, New York, NY, USA, 2005. ACM.
[13]
Y. B.-D. Kolikant. Learning concurrency: evolution of students' understanding of synchronization. Int. J. Hum.-Comput. Stud., 60:243--268, 2004.
[14]
P. V. Koppol and K.-C. Tai. An incremental approach to structural testing of concurrent software. In ISSTA '96: Proceedings of the 1996 ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 14--23, New York, NY, USA, 1996. ACM.
[15]
T. D. LaToza, D. Garlan, J. D. Herbsleb, and B. A. Myers. Program comprehension as fact finding. In ESEC-FSE '07: Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 361--370, New York, NY, USA, 2007. ACM.
[16]
B. Long and P. A. Strooper. A classification of concurrency failures in Java components. In Proc. of the IEEE International Parallel and Distributed Processing Symposiom (IPDPS'03), page 287, 2003.
[17]
J. Magee and J. Kramer. Concurrency: State Models and Java Programs. John Wiley & Sons, 2000.
[18]
R. H. B. Netzer and B. P. Miller. What are race conditions?: Issues and formalizations. ACM Letters on Programming Languages and Systems, 1(1):74--88, Mar. 1992.
[19]
A. Newell and H. Simon. Human Problem Solving. Prentice Hall, 1972.
[20]
L. Prechelt, B. Unger, W. Tichy, P. Brossler, and L. Votta. A controlled experiment in maintenance comparing design patterns to simpler solutions. IEEE Transactions on Software Engineering, 27(12):1134--1144, 2001.
[21]
M. P. Robillard, W. Coelho, and G. C. Murphy. How effective developers investigate source code: An exploratory study. IEEE Transactions on Software Engineering, 30(12):889--903, 2004.
[22]
M. Ronsse and K. D. Bosschere. RecPlay: a fully integrated practical record/replay system. ACM Trans. Comput. Syst., 17(2):133--152, 1999.
[23]
A. Rountev, O. Volgin, and M. Reddoch. Static control-flow analysis for reverse engineering of UML sequence diagrams. In PASTE '05: Proceedings of the 6th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, 2005.
[24]
D. Schmidt et al. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, volume 2. John-Wiley & Sons, 2000.
[25]
D. Schmidt and S. D. Huston. C++ Network Programming: Mastering Complexity with ACE and Patterns, volume 1. Addison-Wesley, 2002.
[26]
E. Soloway, R. Lampert, S. Letovsky, D. Littman, and J. Pinto. Designing documentation to compensate for delocalized plans. Communications of the ACM, 31(11), 1988.
[27]
K. Taniguchi, T. Ishio, T. Kamiya, S. Kusumoto, and K. Inoue. Extracting sequence diagram from execution trace of Java program. In Proc. of the 8th International Workshop on Principles of Software Evolution, 2005.
[28]
M. W. van Someren, Y. F. Barnard, and J. A. C. Sandberg. The Think Aloud Method. Academic Press, London, 2004.
[29]
A. M. Vans, A. von Mayhauser, and G. Somlo. Program understanding behavior during corrective maintenance of large-scale software. Int. J. Hum.-Comput. Stud., 51(1):31--70, 1999.
[30]
C. Wallace, C. Cook, J. Summet, and M. Burnett. Assertions in end-user software engineering: a think-aloud study. In Proc. of IEEE 2002 Symposia on Human Centric Computing Languages and Environments, pages 63--65, 2002.

Cited By

View all
  • (2018)Program comprehension through reverse‐engineered sequence diagramsJournal of Software: Evolution and Process10.1002/smr.196530:11Online publication date: 14-Nov-2018
  • (2017)On the Positive Effect of Reactive Programming on Software ComprehensionIEEE Transactions on Software Engineering10.1109/TSE.2017.265552443:12(1125-1143)Online publication date: 1-Dec-2017
  • (2017)An empirical study on code comprehensionProceedings of the 25th International Conference on Program Comprehension10.1109/ICPC.2017.23(275-285)Online publication date: 20-May-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '08: Proceedings of the 30th international conference on Software engineering
May 2008
558 pages
ISBN:9781605580791
DOI:10.1145/1368088
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 10 May 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concurrent programming
  2. software maintenance
  3. think-aloud method

Qualifiers

  • Research-article

Conference

ICSE '08
Sponsor:

Acceptance Rates

ICSE '08 Paper Acceptance Rate 56 of 370 submissions, 15%;
Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 19 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2018)Program comprehension through reverse‐engineered sequence diagramsJournal of Software: Evolution and Process10.1002/smr.196530:11Online publication date: 14-Nov-2018
  • (2017)On the Positive Effect of Reactive Programming on Software ComprehensionIEEE Transactions on Software Engineering10.1109/TSE.2017.265552443:12(1125-1143)Online publication date: 1-Dec-2017
  • (2017)An empirical study on code comprehensionProceedings of the 25th International Conference on Program Comprehension10.1109/ICPC.2017.23(275-285)Online publication date: 20-May-2017
  • (2016)Debugging for reactive programmingProceedings of the 38th International Conference on Software Engineering10.1145/2884781.2884815(796-807)Online publication date: 14-May-2016
  • (2016)Abstraction and mining of traces to explain concurrency bugsFormal Methods in System Design10.1007/s10703-015-0240-549:1-2(1-32)Online publication date: 1-Oct-2016
  • (2014)How Developers Use Data Race Detection ToolsProceedings of the 5th Workshop on Evaluation and Usability of Programming Languages and Tools10.1145/2688204.2688205(43-51)Online publication date: 21-Oct-2014
  • (2014)An empirical study on program comprehension with reactive programmingProceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering10.1145/2635868.2635895(564-575)Online publication date: 11-Nov-2014
  • (2011)Bug WarsJournal of Computing Sciences in Colleges10.5555/2038836.203884227:2(43-50)Online publication date: 1-Dec-2011
  • (2011)Designing useful tools for developersProceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools10.1145/2089155.2089166(45-50)Online publication date: 24-Oct-2011
  • (2011)Evaluation of work product defects during corrective & enhancive software evolutionACM SIGMIS Database: the DATABASE for Advances in Information Systems10.1145/1952712.195271642:1(59-73)Online publication date: 18-Feb-2011
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media