Skip to content

Generating all the things (but focusing on scientific software)

License

Notifications You must be signed in to change notification settings

bmaclach/Drasil

 
 

Repository files navigation

The Drasil Framework

Generate all the Things!

What is Drasil?

Drasil is a framework for generating all of the software artifacts from a stable knowledge base, focusing currently on scientific software. The main goals are to reduce knowledge duplication and improve traceability. We also are extreme in our drive to reuse everything. We hope that maintainability, verifiability, traceability, and other software qualities will also be improved as a side-effect of our methods.

Drasil is used to generate all requisite software artifacts from a common knowledge-base using recipes written in a Domain-Specific Language (DSL). These recipes allow us to specify which pieces of knowledge should be used in which artifacts, how to transform them, and more.

Drasil is being designed and implemented using a grounded theory approach. To determine what is needed and make the design general, we are concurrently implementing six examples (case studies) in Drasil. (The specific examples are listed below under "Building specific examples.") These examples were first written using a typical "manual" approach. The full files for the case studies are available in a separate case studies repo.

For more information on Drasil, please read our position paper or take a look at our poster.

Quick Start

  1. Ensure you have Stack installed (if you have the Haskell Platform, you should already have Stack).
  2. Run stack setup while in ./code/
  3. Use the make command to build the current version of Drasil. This will build and run all of the examples as well.
  4. You can find the generated output in the build folder that appears. Each example will have its own subdirectory.

Building specific examples

Simply run: make argument to build the corresponding example, where argument is detailed below:

Argument Example
gamephys_diff Chipmunk2D
swhs_diff Solar Water Heating System with PCM
glassbr_diff Glass-BR
tiny_diff HGHC toy example
ssp_diff Slope Stability Analysis
nopcm_diff minimal SWHS example, with PCM removed

Running the example(s)

Please note that if make has been used, docs are already generated automatically and can be found in build. Automated testing can be done on these examples.

After building, you can run the examples by using stack exec NAME where NAME is detailed below:

NAME Example
chipmunkdocs Chipmunk2D
swhs Solar Water Heating System with PCM (SWHS)
glassbr Glass-BR
tiny HGHC toy example
ssp Slope Stability Analysis (SSP)
nopcm SWHS without PCM (NoPCM)

This runs the examples manually from the .stack-work folder after building, and the generated docs will appear in this folder (i.e. in the SRS and Website folders). Due to this placement, these generated versions will not be subject to automated tests.

Finding / Building the Haddock documentation

You can run make docs from the ./code folder to build the documentation.

See the README in ./code/ for more information.


Summary of Folder Structure and File Contents


Dan

  • Subdirectory for Dan Szymczak's work. Mostly papers and presentations

GOOLCodeGen

  • An isolated compilation space for creating GOOL code for the examples.

Presentations

  • Presentations on LSS/Drasil

RelatedCode

  • Contains the Generic Object Oriented Language (GOOL) code.

Steve

  • Steven Palmer's work

WindowsFix

  • Contains registry files for adding and removing the autorun of the command chcp 65001. This is to fix an issue with unicode characters. ONLY affects Windows machines.

code

  • The main folder for Drasil source code and example implementations

notes

  • Assorted general/administrative notes

.gitattributes

  • Used by git

.gitignore

  • Used by git (specifies which file(type)s to ignore when committing)

.travis.yml

  • Used for continuous integration with Travis CI

LICENSE

  • License information

README.md

  • This file

About

Generating all the things (but focusing on scientific software)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 97.2%
  • TeX 1.7%
  • Other 1.1%