Please use this identifier to cite or link to this item:
http://hdl.handle.net/11375/25542
Title: | A Design Language for Scientific Computing Software in Drasil |
Other Titles: | Design Language for SCS |
Authors: | MacLachlan, Brooks |
Advisor: | Smith, Spencer Carette, Jacques |
Department: | Computing and Software |
Keywords: | Code Generation;Scientific Computing;Software Design |
Publication Date: | 2020 |
Abstract: | Drasil is a framework for generating high-quality documentation and code for Scientific Computing Software (SCS). Despite the tendency of SCS code to follow an Input-Calculate-Output design pattern, there are many design variabilities in SCS. Drasil should therefore allow its users to specify a design for their generated program. To this end, a language that encodes the design variabilities present in SCS was implemented in Drasil. Drasil's code generator was updated to generate code based on a user's design choices. A Generic Object-Oriented Language, GOOL, from which Python, Java, C#, or C++ code can be generated, was implemented. Drasil's code generator targets GOOL, enabling the choice of programming language to be included in the design language. Other choices included in the language are related to the modularity, the generation of record classes to bundle variables, the inlining of constants, the code types used to represent different mathematical spaces, which external library to use to solve ODEs, the behaviour when a constraint is violated, and the presence of documentation, logging, or a controller. The design language is implemented as a record type in Haskell, and is designed to be understandable, extensible, and usable. A design specification can be easily changed, to generate a different version of the same program, which would often require time-consuming refactoring if the program was written manually. During the regular build process of Drasil, working code is generated in all four target languages for three examples of SCS, each using a different design specification. |
URI: | http://hdl.handle.net/11375/25542 |
Appears in Collections: | Open Access Dissertations and Theses |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
maclachlan_brooks_2020july_masc.pdf | 1.62 MB | Adobe PDF | View/Open |
Items in MacSphere are protected by copyright, with all rights reserved, unless otherwise indicated.