ABSTRACT

Ray Idaszak, David G. Tarboton (Principal Investigator), Hong Yi, Laura Christopherson, Michael J. Stealey, Brian Miles, Pabitra Dash, Alva Couch, Calvin Spealman, Jeffery S. Horsburgh, and Daniel P. Ames

10.1 Introduction to HydroShare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 10.2 Informing the Need for Software Engineering Best Practices for

Science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.3 Challenges Faced and Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . 221

10.3.1 Cultural and Technical Challenges . . . . . . . . . . . . . . . . . . . . . . 221 10.3.2 Waiting Too Long between Code Merges . . . . . . . . . . . . . . . 223 10.3.3 Establishing a Development Environment . . . . . . . . . . . . . . 224

10.4 Adopted Approach to Software Development Based on the Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.4.1 Adopting Best Practices in Modern Software

Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 10.4.2 Iterative Software Development . . . . . . . . . . . . . . . . . . . . . . . . . 226 10.4.3 Virtual Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 10.4.4 Code Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 10.4.5 Code Reviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 10.4.6 Testing and Test-Driven Development . . . . . . . . . . . . . . . . . . 229 10.4.7 Team Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 10.4.8 DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

10.5 Making Software Engineering More Feasible and Easier to Integrate into One’s Research Activities . . . . . . . . . . . . . . . . . . . . . . . . 231

10.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Abstract HydroShare is an online collaborative system under development to support the open sharing of hydrologic data, analytical tools, and computer models. With HydroShare, scientists can easily discover, access, and analyze hydrologic data and thereby enhance the production and reproducibility of hydrologic scientific results. HydroShare also takes advantage of emerging social media functionality to enable users to enhance information about and collaboration around hydrologic data and models. HydroShare is being developed by an interdisciplinary collaborative team of domain scientists, university software developers, and professional software engineers from ten institutions located across the United States. While the combination of non-co-located, diverse stakeholders presents communication and management challenges, the interdisciplinary nature of the team is integral to the project’s goal of improving scientific software development and capabilities in academia. This chapter describes the challenges faced and lessons learned with the development of HydroShare, as well as the approach to software development that the HydroShare team adopted on the basis of the lessons learned. The chapter closes with recommendations for the application of modern software engineering techniques to large, collaborative, scientific software development projects, similar to the National Science Foundation (NSF)–funded HydroShare, in order to promote the successful application of the approach described herein by other teams for other projects.