Skip to content

FAQ: What is DAWGIE?

al-niessner edited this page Jul 16, 2019 · 10 revisions

Introduction

DAWGIE is an application that spans (or selects from) all of the classical Information Systems Software categories because DAWGIE requires user defined work to be meaningful. It is in part System Software because it manages what jobs to run and where to run them. It is in part Application Software because the extensions provided by users define the work to be done in the jobs it runs. The user defined work can be specific to a certain domain like finding exoplanets via a specific technique. The user defined work can also be more general like detecting a change in a travel request then updating subsequent required paperwork and sending notifications to those that need to know. The user defined work can be either vertical or horizontal or somewhere in between. Therefore, DAWGIE is a horizontal and/or vertical system software application.

When starting the development of DAWGIE, the goal was for DAWGIE to be an autonomous software agent (bot, automata) that has awareness of its environment and react to it in order to always have a current best estimate. It meets this goal.

DAWGIE's environment consists of three independent spaces: Software version, data version and target. The environment has a fourth space that is dependent on the independent spaces software and data versions: Time as measured by a run ID and not the wall clock.

When DAWGIE detects, through events and not polling, a change in any of its independent spaces, DAWGIE will determine what elements are affected by the change and begin to orchestrate jobs to propagate the changes throughout to maintain the current best estimate. Rather than execute all jobs possible, DAWGIE is able to determine the minimum amount of work that is required to transition from the current state to the current best estimate from detected changes. While this matters little if the work takes minuscule effort to accomplish, it matters when the work to be done is significant.

Nomenclature

  • current best estimate
    The lingo used during DAWGIEs development was that computational elements (models) input and output would be state vectors. Output state vectors represent the state (estimate) of the computational element (model) with all of it is inputs. Input state vectors are simply output state vectors from other computational elements. Therefore, the current best estimate is the complete set of output state vectors based on the most recent (or best) information.
  • data version
    Data versioning is an automatic process. All data known by DAWGIE must follow a specific structure and have a unique name. The required structure starts with dawgie.StateVector which contains a set of dawgie.Value. One of the few shackles that DAWGIE imposes is that dawgie.Value can be pickled as in pickle.dump(). The pickling process is what defines the data version. If pickle object with the same name is known, then it considered the same version otherwise not.
  • software version
    Unlike data versioning, software versioning is a manual process. Some discussion took place at the beginning of the development to automatically version or manual. The choice was manual with the option to become automatic later. Semantic Versioning is used throughout DAWGIE to signal significant changes in software.
  • target
    Simple strings that are user/application defined.

Awareness

Awareness is this context is DAWGIE's ability to automatically identify changes in its environment that directly influences it, generate events to signal these changes, react to the events and thus changes.

To be aware, DAWGIE requires the user to use composition, factories, inheritance, and other patterns as a mechanism to communicate the minimum information to DAWGIE for it (DAWGIE) to walk the user's software and extract essentially an Abstract Syntax Tree (AST) representing computational information and data flow. The AST is the environment for 2 of the three independent axis. The third independent axis, target, is user defined and can be changed at any time. The environment is complete after the single dependent axis of time, in the form of run IDs not wall clock, is added.

Data Version

Software Version

Target

Clone this wiki locally