Code Monkey home page Code Monkey logo

drasil's Introduction

The Drasil Framework

Generate all the Things!

Current Generated Artifacts

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

If you are on Windows, we recommend you use cygwin (MinGW probably works too, but we have not tested it). make is required as well; on MacOS, you may need to install XCode to get that. Most linux installs have it by default.

  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
gamephysics_diff 2D Rigid Body Physics Library
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
projectile_diff Projectile motion analysis

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
gamephysics 2D Rigid Body Physics Library
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)
projectile Projectile motion analysis

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

drasil's People

Contributors

szymczdm avatar jacquescarette avatar niazim3 avatar samm82 avatar bmaclach avatar danscime avatar gothicultra avatar akm11 avatar palmerst avatar smiths avatar elwazana avatar mornix avatar oluowoj avatar deviprasad135 avatar sodaaaa avatar lmawarid avatar jeger1917 avatar vajihehm avatar jainrohan28 avatar

Stargazers

Nikolaos Dionelis avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.