A Social Information Foraging Approach to Improving End-User
Total Page:16
File Type:pdf, Size:1020Kb
A Social Information Foraging Approach to Improving End-User Developers’ Productivity A dissertation submitted to the Graduate School of the University of Cincinnati in partial fulfillment of the requirements for the degree of Doctor of Philosophy in the Department of Electrical Engineering and Computer Science of the College of Engineering and Applied Science by Xiaoyu Jin B.S. University of Cincinnati October 2017 Committee Chair: Nan Niu, Ph.D. i Abstract Software engineering is the application of engineering to the development of software in a systematic method. Traditionally, professional software engineers use technologies and practices from a variety of fields to improve their productivity in creating software and to improve the quality of the delivered product. The practices come from aspects of software requirements, software design, software testing, software development process, and software quality, etc. Nowadays, more and more non-professional developers start to write programs not as their job function, but as means to support their main goal, which is something else, such as accounting, designing a webpage, doing office work, scientific research, entertainment, etc. The number of non-professional developers is already several times the number of professional programmers, and even students of elementary school start to learn simple programming tool skills. However, due to the varied purposes of developing software, the software engineering practices for these non-professional developers can be quite different from the practices for professional developers. The programming behavior of non-professional developers has characteristic of opportunistic, which lacks systematic guidelines, and the software created by them tends to lack enough quality considerations. Therefore, support from software engineering area is needed to improve end-user programmers’ productivity and to increase the quality of the software developed. In this thesis, we define these non-professional developers as end-uesr developers and identify the distinctions between end-user developers and professional developers including the concept and programming practices of requirements, ii specifications, documentation, reuse, testing and verification, and debugging. We then identify that the pragmatic software reuse is the main approach adopted by end-user developers to fulfill their daily programming tasks. We conduct several rounds of observational experiments by inviting end-user developers to carry out software reuse tasks to further analyze their programming behaviors. From the experiments, our results can be summarized in 4 aspects: (1) we first analyzed end-user developers’ information needs and summarized the needs into five categories with architectural concerns, and we also validated the positive effect that social network information brought about to end-user developers’ overall productivity; (2) we found that the diverse types of webpages represent diverse kinds of hints, which could impact productivity in a positive way. We then used various metrics to differentiate the diversity to see which metrics best capture the relation between the diverse hints and the productivity; (3) we found that according to different foraging goals, different types of webpages serve the goal in different ways impacting the easiness and time cost to fulfill the goal. We characterize and categorize webpages into four types of foraging curve styles to serve for end-user developers’ seeking and navigation behavior; (4) we identify the constant revisit behavior of end-user developers during their information seeking and reuse, and we design tool support to ease such behavior thereby reducing the time cost. In summary, the overall contribution of this thesis is that it provides both principled guidelines and concrete tool support to the end-user developers to improve their productivity mainly through improving quality of solution and reducing the time cost. iii iv Acknowledgements First and foremost I want to thank my advisor Dr. Nan Niu. It has been an honor to be his Ph.D. student and to work with him. From my experience, he cares so much about his students that he always spends large amount of time and effort guiding us in research and taking care of us in other aspects. I cannot enumerate how many things I have learnt from him since there are too many. To me, the most important things I have learnt from him include doing work in a serious and responsible manner, hardworking, critical thinking, and paying attention to detail. I believe I will benefit from these skills in rest of my life. I really appreciate all his contributions of time, effort, ideas, trust, and funding to make my Ph.D. experience productive and stimulating. I want to thank all the professors in my committee for their support and guidance. Dr. Raj Bhatnagar gave me tremendous help especially in the first two years of my Ph.D. life. He cares about me so much and always explain things patiently to me. I want to thank Dr. Michael Wagner for his time, effort, and criticality that he spent on my thesis in improving the quality of my work. I learnt from him the attitude of being serious and responsible for research and work. I also want to thank Dr. Michael D. Sokoloff for his guidance and rigor to research as well as pointing out my weakness for me to improve. Finally, I want to thank Dr. Carla Purdy for her approval and encourage to my work, which makes me more confident to my work and myself. v I want to thank all the members of the Software Engineering Research Lab, who have contributed immensely both to my life and my work. Their support comes from the friendships, the good advice and collaboration, the constant encouragement, and the fun time with them. I am especially grateful for the help from Wentao Wang, Charu Khatwani, and Arushi Gupta. I also want to thank all my friends that I cannot enumerate during my life time in University of Cincinnati. Their help and support are everywhere in my everyday life. Lastly, I would like to thank my family for all their love, support, and encouragement. I am grateful to my parents because they have sacrificed a lot to raise me, educate me, and support me in pursuing my goal. I want to thank my sister Xiaofang also in United States for her help in my daily life and her advice to my work and career. Thank you. Xiaoyu Jin University of Cincinnati November 2017 vi Table of Contents 1 Introduction 1 1.1 Pragmatic software reuse …………………………………………………….. 2 1.2 Development social network ………………………………………………… 4 1.3 Thesis contributions and organization ……………………………………….. 6 2 Background and related work 9 2.1 Pragmatic software reuse…………………………………………………….... 9 2.2 Information foraging theory ………………………………………………….. 11 2.2.1 Foraging theory’s applications in software engineering………………. 11 2.2.2 Social information foraging ……………………………………………13 2.2.3 Patch model …………………………………………………………….16 3 Characteristics of end-user developers 19 3.1 Concept of end-user developers ……………………………………………….19 3.2 End-user software engineering ……………………………………………….. 22 3.2.1 Software requirements …………………………………………………27 3.2.2 Design specifications ……………………………………………….... 28 3.2.3 Reuse ………………………………………………………………… 29 3.2.4 Testing and verification ………………………………………………. 33 3.2.5 Debugging …………………………………………………………….. 34 3.3 Summary ………………………………………………………………………36 4 Quality and value improvement 37 4.1 Definition of productivity ……………………………………………………..37 4.2 How social network information support information needs ………………….39 4.2.1 Study design ……………………………………………………………39 4.2.1.1 Participants ……………………………………………………40 4.2.1.2 Tasks …………………………………………………………..41 vii 4.2.1.3 Procedures …………………………………………………… 46 4.2.2 Information needs in pragmatic software reuse ………………………. 47 4.2.3 Usage of social network information …………………………………..51 4.2.3.1 Usage flow model of social network information ……………..51 4.2.3.2 Before reuse …………………………………………………...53 4.2.3.3 During reuse ………………………………………………...... 53 4.2.3.4 After reuse …………………………………………………… 54 4.2.4 Supporting the needs with social network information ………………. 55 4.2.5 Improve productivity with social network information diversity ………62 4.3 How the diversity of social network information impacts productivity ………71 4.3.1 Categorizing social network information…………………………….... 71 4.3.2 Results and analysis ……………………………………………………75 4.3.2.1 Raw data extraction …………………………………………... 76 4.3.2.2 Data refinement ……………………………………………… 77 4.3.2.3 Log-normal regression ……………………………………….. 81 4.3.2.4 Interactions between categories ……………………………… 84 4.4 Threats to validity …………………………………………………………….. 85 4.4.1 Threats to internal validity ……………………………………………..85 4.4.2 Threats to external validity ……………………………………………. 86 4.4.3 Threats to construct validity ……………………………………………87 4.5 Summary ………………………………………………………………………87 5 Cost estimation and reduction 89 5.1 Estimating time cost through foraging curve styles ……………………………89 5.1.1 Motivations …………………………………………………………….89 5.1.2 Related work ………………………………………………………….. 92 5.1.2.1 Cost evaluation & cost reduction …………………………….. 92 5.1.3 Our approach ………………………………………………………….. 94 5.1.3.1 Cost estimation ………………………………………………. 94 viii 5.1.3.2 Tool design ………………………………………………….. 98 5.1.4 Evaluation design ……………………………………………………..101 5.1.5 Results and analysis …………………………………………………..102 5.1.5.1 Reduced time for task completion ……………………………102 5.1.5.2 Shifted pattern for foraging curves ………………………….. 105 5.1.5.3 Reduced number of unproductive cases of foraging ………… 107 5.1.6 Threats to validity