Abstract:
Many computational science and engineering (CSE) software developers have applied software engineering practices to their work in recent years. CSE software development has unique characteristics that differ from those of traditional software development. Some existing software engineering practices may not be suitable for CSE software development. Agile methods are gaining more interest in both industry and research fields, including the CSE application domain. Agile methods focus on an incremental and iterative development process in which the requirements, specifications, design, implementation, and testing evolve throughout the project lifecycle. Test-driven development (TDD) and refactoring practices are critical for the success of Agile methods. Although many CSE projects employ Agile practices, the effect of TDD on CSE software development remains unknown and should thus be investigated. The empirical study is the primary research method by which the choice of a given software development technique should be justified. The empirical evidence obtained from software engineering research can be used by practitioners who are working to improve software development. The overall goal of this work is to provide the empirical evidence of the effects of TDD on CSE software development. Thus, I will perform a series of case studies and other empirical studies. I also propose a reverse engineering tool to assist developers in performing refactoring activities during project development. The details and results of these studies will be described in this dissertation.