Developing Scientific Computing Software: Current Processes And
Total Page:16
File Type:pdf, Size:1020Kb
DEVELOPING: SGIENffl&Pifli|ii^Mp| CURRENT PROCESSES" WMWiiiiia DEVELOPING SCIENTIFIC COMPUTING SOFTWARE MASTER OF APPLIED SCIENCE(2008) McMaster University COMPUTING AND SOFTWARE Hamilton, Ontario TITLE: Developing Scientific Computing Software: Current Processes and Future Directions AUTHOR: Jin Tang, M.M. (Nanjing University) SUPERVISOR: Dr. Spencer Smith NUMBER OF PAGERS: xxii, 216 n Abstract Considerable emphasis in scientific computing (SC) software development has been placed on the software qualities of performance and correctness. How ever, other software qualities have received less attention, such as the qualities of usability, maintainability, testability and reusability. Presented in this work is a survey titled "Survey on Developing Scien tific Computing Software, which is apparently the first conducted to explore the current approaches to SC software development and to determine which qualities of SC software are in most need of improvement. From the survey. we found that systematic development process is frequently not adopted in the SC software community, since 58% of respondents mentioned that their entire development process potentially consists only of coding and debugging. Moreover, semi-formal and formal specification is rarely used when developing SC software, which is suggested by the fact that 70% of respondents indicate that they only use informal specification. In terms of the problems in SC software development, which are dis covered by analyzing the survey results, a solution is proposed to improve the quality of SC software by using SE methodologies, concretely, using a modified Parnas' Rational Design Process (PRDP) and the Unified Software Development Process (USDP). A comparison of the two candidate processes is provided to help SC software practitioners determine which of the two pro cesses fits their particular situation. To clarify the discussion of PRDP and USDP for SC software and to help SC software practitioners better under- iii stand how to use PRDP and USDP in SC software, a completely documented one-dimensional numerical integration solver (ONIS) example is presented for both PRDP and USDP. IV Acknowledgements It is a pleasure to thank the many people who made this thesis possible. First of all, I would like to express my sincere thanks and deep appre ciation to Dr. Spencer Smith, my supervisor, for his constant support and encouragement. With his enthusiasm, his inspiration, and his efforts to ex plain things clea-rly a,nd simply, he helped to make scientific computing fun for me. Throughout my thesis-writing period, he provided encouragement, good teaching and lots of great ideas. This thesis would not be what it is without his great help. I also would like to thank Dr. Wassyng and Dr. Down for reviewing of this thesis and giving me valuable feedbacks and suggestions. I wish to thank my student colleagues and friends (alphabetically) ZhaoChuan Gao, Herman Guo, Dai Tri Man Le, Shu Wang, Wen Yu and Viola Zhou and many others for their help and friendship. Lastly, and most importantly, I wish to thank my parents and grand parents for their support, encouragement and endless love. Also, I am grateful to my sister, Min Tang. Her coming to Canada makes my life more colorful in Canada. I hope that she has a successful career in Canada as she did in China. Hamilton, Ontario, Canada Jin Tang May, 2008 v vi Contents Abstract iii Acknowledgements v List of Figures xv List of Tables xxi 1 Introduction 1 1.1 Improving the Quality of SC Software . 3 1.2 Overview of SC Software 6 1.2.1 Definition of SC . 7 1.2.2 SC Software Categories ... 7 1.2.3 Development Process for SC Software . 9 1.2.4 Characteristics of SC Software . 11 1.3 Research Purpose and Scope ... 13 1.4 Research Methods . 13 2 Software Engineering Methodologies 17 vn 2.1 Software Development Process Model 19 2.1.1 The Waterfall Model 20 2.1.2 Evolutionary Development 22 2.2 Modified Parnas' Rational Design Process (PRDP) . 24 2.2.1 Commonality Analysis (CA) 25 2.2.2 Software Requirement Specification . 26 2.2.3 Module Guide (MG) . 27 2.2.4 Module Interface Specification (MIS) 28 2.3 Unified Software Development Process (USDP) 28 2.3.1 Characteristics of USDP . 29 2.3.2 The Unified Modeling Language (UML) . 31 2.3.3 The Object Constraint Language (OCL) ... 33 2.4 Software Reuse ... .33 2.4.1 Component-based Software Engineering (CBSE) .... 34 2.4.2 Mathematical Software Libraries 36 2.4.3 Design Patterns 37 2.5 Software Tools . 38 3 Survey on Developing Scientific Computing Software 43 ... 3.1 Goal of the Survey .... ... 46 3.2 .... Questionnaire Design . 51 3.2.1 .... Question Design . 51 3.2.2 Question Types ... .... 52 ... 3.3 ... Survey Process ... .55 3.3.1 Pilot Test 56 viii 3.3.2 Online Survey . ... 57 4 Survey Data Analysis 59 4.1 . Sampling Design . 60 4.1.1 Sampling Strategies . ... 61 4.1.2 Error Analysis . 63 4.2 Data Preparation . 66 4.3 Target Population and Characteristics of Respondents 68 4.4 Survey Results ... 70 4.4.1 Software Development Process . 75 4.4.2 Requirements 81 4.4.3 Design . ... 84 4.4.4 Coding 89 4.4.5 Testing . 92 4.4.6 Maintenance . .... 95 4.4.7 Documentation . 96 5 Proposed Methodologies for Developing ONIS 101 5.1 ONIS Introduction . 104 5.2 USDP vs. PRDP .... .105 5.2.1 Common Characteristics of USDP and PRDP . 105 5.2.2 Differences Between USDP and PRDP 106 5.3 Software Requirements Specification (SRS) . Ill 5.3.1 Approach Used in ONIS . 112 5.3.2 PRDP vs. USDP for SRS ... 112 ix 5.4 Software Design 113 5.4.1 Problems in Software Design 114 5.4.2 Approaches Used in ONIS 115 5.4.3 USDP vs. PRDP 121 125 5.5 Recommendation . 6 Conclusions 127 6.1 Concluding Remarks 128 6.2 Future Work .135 References . 136 A Survey on Developing Scientific Computing Software 145 A.l Survey Questionnaire .... 145 A. 1.1 Survey Invitation Email . 145 A. 1.2 Survey Questions . 146 A. 2 Pilot Test Guidelines 157 A. 2.1 Introduction ... 157 A. 2. 2 Process . 157 . A. 2. 3 Email Invitation . 158 A. 2. 4 Feedback Questions . 159 A.3 Pilot Test Report 160 A. 3.1 . Introduction . 160 A. 3. 2 Methodology .160 A. 3. 3 Analysis and Recommendation .160 A. 3.4 Fill-in Questions . 163 x A. 4 . Conclusion .... Modified Parnas' Rational Design Process B.l SRS for ONIS . B.l.l Introduction . ... 2 . B.l. General System Description ... B.l. 3 Specific System Description B.l.4 Data Constraints . B.l. 5 Non-functional Requirements B.l. 6 Solution Validation Strategies . B.l. 7 Other System Issues B.1.8 Traceability Matrix B.l. 9 Values of Auxiliary Constants B.2 Module Guide for ONIS B.2.1 Introduction B.2. 2 Connection Between Requirements and Desi B.2. 3 Anticipated Changes . B.2.4 Unlikely Changes B.2. 5 Module Decomposition B.2. 6 Traceability Matrix . ... B.2. 7 Use Hierarchy between Modules B.3 MIS for ONIS .... B.3.1 Introduction .... B.3.2 Template Used in MIS .... B.3. 3 Module Hierarchy . xi 195 B.3.4 MIS of Master Control Module 197 B.3. 5 MIS of Input Data Module B.3.6 MIS of Output Show Module 201 B.3.7 MIS of Parser Module 203 B.3.8 MIS of Algorithm Module 207 B.4 Testing Report for ONIS 211 .... 211 B.4.1 Introduction . B.4.2 Unit Testing 212 B.4.3 System Testing 214 B.4.4 Traceability Matrix 220 B.4. 5 Results and Analysis 221 C Unified Software Development Process 223 C.l SRS for ONIS 224 C.l.l Introduction . 224 C.1.2 General System Description 225 C.1.3 Specific System Description 226 C.1.4 Non-functional Requirements 227 C.1.5 Functional Requirements . 227 C.1.6 Solution Validation Strategies 232 C.1.7 Other System Issues . 233 C.l. 8 Traceability Matrix 234 C.1.9 Values of Auxiliary Constants 234 C.2 SDS for ONIS 235 C.2.1 Introduction 235 xii C.2. 2 Anticipated Changes C.2.3 Unlikely Changes C.2. 4 Terminology Definition C.2. 5 Connection Between Requirement and Desi C.2. 6 Analysis Model C.2.7 Design Model C.2. 8 Class Description C.2. 9 Dynamic Modeling of Behaviour . C.2. 10 Sequence Diagram of ONIS . C.2. 11 Exception Handling xm xiv List of Figures 1.1 Work Flow for the Development of Physical Model Simulation Software 10 1.2 Work Flow for the Development of Scientific Multipurpose Tools 11 2.1 The Software Life Cycle 21 2.2 Component-based Software Engineering . 35 4.1 Sample Population . 70 4.2 Education Background (Based on 166 Respondents) 72 4.3 Working Experience in SC field (Based on 165 Respondents) . 73 4.4 Working Experience in Programming (Based on 165 Respondents) 73 4.5 The Relationship between People's Working Experience and Software Size (Based on 165 Respondents) 74 4.6 Group Size (Based on 165 Respondents) 75 4.7 Difference in Group Size between Industry and Academia (Based on 165 Respondents) 75 4.8 Software Sizes (Based on 141 Respondents) 76 4.9 Project Plan (Based on 130 Respondents) . 77 xv . 77 4.10 Project Plan with Group Size (Based on 130 Respondents) 78 4.11 Process Models (Based on 132 Respondents) 4.12 Time Distribution with Confidence Interval (Based on 132 Re spondents) .... 80 4.13 Time Distribution in Academia and Industry (Based on 132 .