Skip to content

Commit c14cb8f

Browse files
committed
Finish up README
1 parent 98e42fa commit c14cb8f

File tree

3 files changed

+75
-2
lines changed

3 files changed

+75
-2
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ Thanks to some of the more advanced features, MSML can be used as an aid for deb
7373
The ability to fork the repository of an MSML spec as well as the ability to use it for A/B testing with the policy options makes it well suited for iterating on model evolution.
7474

7575

76-
7776
## Other Related Repositories
7877

7978
[GDS-MSML-cadCAD Repository](https://github.com/BlockScience/GDS-MSML-cadCAD)

docs/SystemsEngineering.png

98.4 KB
Loading

docs/index.md

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,78 @@ layout: home
44
nav_order: 1
55
---
66

7-
MSML is a library for standardizing the creation of mathematical specifications as JSON objects as well as aiding in the automation of report and visualization creation from these standardized JSON.
7+
## What is the Mathematical Specification Mapping Library (MSML)?
8+
9+
MSML is a library for standardizing the creation of mathematical specifications as JSON objects as well as aiding in the automation of report and visualization creation from these standardized JSON.
10+
11+
It uses block diagram wirings and spaces to represent the actions in complex systems in line with current BlockScience research on Generalized Dynamical Systems. It also adds some enhancements to the primitive blocks to represent richer sets of behaviors.
12+
13+
One good example is the [wiring report](https://github.com/BlockScience/Predator-Prey-MSML/blob/main/reports/obsidian/Wiring/Hunt%20Prey%20Wiring.md) for hunt prey wiring in the predator prey example (although it is best viewed in Obsidian where all the linking will work).
14+
15+
## Installing the library
16+
17+
To install the library, simply pip install by running "pip install math_spec_mapping"
18+
19+
## Why MSML?
20+
21+
Writing mathematical specifications can be a difficult process, especially when variable names are changed or new mechanisms are introduced. MSML seeks to streamline the process with automations as well as enhance the abilities of static math specs to deliver deeper insights. Because it is automated, one can write specifications at different levels of details or for different purposes.
22+
23+
### Stakeholder Communications
24+
25+
- In organizations, senior people / non-developers don't always have as intimate a view of the underlying code as the primary developers in a system because of time constraints and not working as directly with the code as the primary developers
26+
- Often this means that there is a reliance on asking the primary developers for clarifications and relying on "front-end" kinds of stuff such as visualizations or outputs of the model as opposed to combing through the underlying code
27+
- MSML seeks to help bridge this gap by allowing for the Obsidian markdown vault that can showcase every component and its dependencies for easier consumption.... this reduces the barriers to entry on understanding the back-end/underlying model
28+
- Also through things such as code linking, MSML allows for those with code fluency to jump into underlying code if they need to without even opening up the actual project repository
29+
30+
## What are some of the solutions offered?
31+
32+
- **Automation**: Automate writing of a specification
33+
- **Standardization**: Ensure standardization across teams working to spec out a system
34+
- **Flexibility**: Allow for creating views on the fly and in multiple ways depending on what stakeholders find important
35+
- **Trackability**: Keep a repository of a JSON file to track changes to the spec with the same enhancements git provides for projects already
36+
37+
## How does MSML work?
38+
39+
40+
```mermaid
41+
graph TD
42+
A[JSON Object \n\n Each spec has a repo for tracking changes \n Must conform to the json specification \n Defines all aspects of the spec including blocks, spaces and actions] -->B[MSML Object \n\n JSON file is parsed, with validations and mappings along the way \n Can show different views on the fly]
43+
B --> C[Report Outputs & Obsidian Directory \n\n Automatically build reports for the full spec or subviews \n Example: all blocks with an effect on variable XYZ\n Also builds an entire Obsidian directory of all components as linked notes]
44+
D[Python Function Implementations \n\n Optional enhancement to actually execute code\n Done for each referenced policy option, mechanism, etc. \n Just needs a function definition for each] --> B
45+
B --> E[Python Wirings & Simulations \n\n MSML can be used to run blocks \n Wirings automatically work to pass between domain/codomains \n Entire simulations can be built up as composed wirings]
46+
```
47+
48+
## MSML in the Engineering Lifecycle
49+
50+
The engineering lifecycle as defined and visualized in ["Block by Block: Managing Complexity with Model-Based Systems Engineering"
51+
](https://blog.block.science/block-by-block-managing-complexity-with-model-based-systems-engineering/) is depicted below.
52+
53+
![Systems Engineering Diagram](SystemsEngineering.png)
54+
55+
MSML can aid in all five of these phases in different ways.
56+
57+
### Ideation and Conceptualization
58+
59+
During ideation phases, users of MSML can leverage the markdown writing tool to begin organizing different thoughts into components. For example, if one were trying to model a system that has multiple currencies, i.e. USD and the Euro, those could be added in as MSML types as they are discovered. The markdown report writing supports wiki-links for use in Obsidian or a similar tool allowing users to iteratively catalog different components they find in their research and ideation.
60+
61+
### Requirements and Design
62+
63+
When moving into requirements and design, MSML provides a suite of reports so that presentations to stakeholders can be insightful but tailored to the different audiences. Feedback can be iteratively incorporated into the spec with reports being re-run.
64+
65+
### Implementation, Integration, and Testing
66+
67+
In its basic form, a spec from MSML can be used to guide implementations because blocks can be transformed into actual code/functions and spaces act as the parameterizations of those functions. There is also experimental work being done on meta-programming so that MSML could either template simulation models or even be used to hold and write code where applicable for things such as A/B testing.
68+
69+
### Operations and Maintenance
70+
71+
Thanks to some of the more advanced features, MSML can be used as an aid for debugging and system validation. The functionality around seeing what parameters effect which blocks directly or downstream indirectly helps developers quickly identify root causes of issues. The linkages between mechanisms and what pieces of state they update allows for developers to quickly see all possible paths to variable changes there are in case something looks amiss.
72+
73+
### Governance and Evolution
74+
75+
The ability to fork the repository of an MSML spec as well as the ability to use it for A/B testing with the policy options makes it well suited for iterating on model evolution.
76+
77+
78+
79+
## Other Related Repositories
80+
81+
[GDS-MSML-cadCAD Repository](https://github.com/BlockScience/GDS-MSML-cadCAD)

0 commit comments

Comments
 (0)