Fascs: a family approach for developing scientific computing software

Scientific Computing (SC) software has had considerable success in achieving improvements in the quality factors of accuracy, precision and efficiency. However other software quality factors, such as reusability, maintainability, reliability and usability are often neglected. This thesis proposes a new methodology, Family Approach for developing Scientific Computing Software (FASCS), to improve the overall quality of SC software. In particular, the aim is to benefit the development of professional end user developed SC programs. FASCS is the first methodology to apply a family approach to develop SC software, where all stages in both the domain engineering phase and the application engineering phase are included. In addition, the challenges for SC software and the characteristics of professional end user developers are also considered. A proof of concept program family, FFEMP, which can solve elasticity problems in solid mechanics using the Finite Element Method (FEM), is developed to illustrate how the proposed methodology can be used. Part of FASCS is a new methodology for systematically eliciting, analyzing and documenting common and variable requirements for a program family. The methodology is termed Goal Oriented Commonality Analysis (GOCA). GOCA proposes two layers of modeling, including the theoretical model and the computational model, to resolve the conflict between the continuous mathematical models that represent the underlying theories of SC problems and the discrete nature of a computer. In addition, the theoretical model and computational model are developed to be abstract and documented separately to improve reusability. Explicitly defined and documented terminology for models and requirements are included in GOCA, which helps avoid ambiguity, which is a potential source of reduced reliability. The traceability of current and future changes is used to potentially improve reusability and maintainability. FASCS includes a Family Member Development Environment (FMDE) for the automatic generation of family members. FMDE is apparently the first complete environment that facilitates automatically generating variable code and test cases for SC program families. The variable code for a specific member of the program family can be automatically generated from a list of variabilities written in a Domain Specific Language (DSL), which is considerably easier than manually writing code for the family member. Some benchmark test cases for the program family can also be automatically generated. Since both family members and test cases can be automatically generated, testing the program family can be performed on the same computational domain with different computational variabilities. This provides partially independent implementations for which test results can be compared to detect potential flaws. This capability partly addresses the unknown solution challenge for SC software. Documentation is also an important part of FASCS. Five new templates for documenting requirements and design are proposed. Traceability matrices, which provide relations between artifacts (and documents) in the different stages of the process, can facilitate understanding of the programs. The matrices can also improve reusability and maintainability by helping trace changes. Nonfunctional requirements, especially nonfunctional variable requirements, are rarely considered in the development of program families. To the knowledge of the author, nonfunctional variable requirements have never been considered in the development of SC program families. Since some nonfunctional requirements are important for SC software, FASCS proposes using some decision making techniques, such as the Analytic Hierarchy Process, to rank nonfunctional variable requirements and select appropriate components to fulfill the requirements.