Evaluating and refining diagrams that support the comprehension of concurrency and synchronization
MetadataShow full item record
Software systems that employ concurrency (e.g. online reservation, e-commerce, banking, brokerage, social networking, and medical systems) are becoming more and more prevalent. For such systems, the safe use of concurrency and synchronization and its optimization are key to success. However, practitioners often find multi-threaded concurrent software systems difficult to design, verify and maintain. Common difficulties inherent in concurrent software include safety, liveness, and non-determinism issues. Our research aims to investigate which aspects of learning about and employing concurrency and synchronization are most difficult and what methods and tools can be used to effectively ameliorate the difficulties. Specifically, this research (1) empirically investigates the challenges encountered by novices engaged in learning about concurrency; (2) empirically evaluates the usability of existing notations, tools, and methods intended to address those challenges; (3) proposes, develops and empirically evaluates new notations and tools; (4) generates a body of reproducible, empirical knowledge that informs improvements in teaching proper use of concurrency and synchronization.