sa-draw Why Build Project sa And Why Build It With Material UI
See Bitbucket : sa-draw
See Demo : demo
This project replaces the original front end for the systems analysis tool with an svg/material-ui based version.
In this note I'm going to try and justify why I think its a good idea to build project sa at all and why I decided to use material ui.
Why Project SA?
I'm old enough to remember Tom De Marcos book Structured System Specification. I'm also old enough to remember Team Work running on Sun workstations (and Software Through Pictures and Virtual Software Factory). This predates UML, The Rational Unified Process and overlapped with Coad-Yourdon Shlaer-Mellow.
Creating problem domain models with Teamwork was painful, slow and of dubious value.
The models were brittle and hard to change. The tooling did allow the models to be checked for consistency. ie all the data added up and the process decomposition was consistent.
At this time work station performance was dreadful, there was no internet and TCP/IP was in its early stages. We had no git, and I can't actually remember what version control systems were in place.
Programming languages in my domain were Pascal, Assembler, Ada83, and Lisp.
From there we somehow ended up with the current Agile process and a dominant programming approach of OO and a couple of dominant Object Oriented programming languages. Enterprise systems use UML and some combination of Stories, Use Cases and tooling to define the systems features. Every company (and every project) has its own take on how best to apply the available tools and techniques.
I ask my self the question: What if we went back to that period but had modern machines, kubernetes, docker, networks, languages and pen input based tools.
What if we then tried to evolve a design and development approach without all the subsequent history. We are already seeing the rise of functional programming.
What do I want:
- I want to be able to create and change my models rapidly - using a pen.
- My first idea is never my best, I don't want the tools to create structures that are so ridged I can't change them because its too expensive/hard/time consuming/side effecting etc
- I want to easily collaborate, share and reuse material.
- I never want to lose information. My version control system should allow me to swap, change and regress the model as ideas evolve.
- Functional programming (Clojure in my case) has taught us that the information is everything. The tools should put information first and central, not infrastructure (language or other).
- I want to incorporate the ideas of Bret Victor (Explorable explorations, Dynamic Land).
- I want to be able to get to a new idea from an existing idea easily ie Edward De Bono - Po Beyond Yes And No.
- I want the computer to do the dull, repetitive, drudge work, it should help not hinder.
I don't want much!!
Add to the above that the models should be consistent so that Machine Learning algorithms can learn and extract patterns from them. Its much better to recognise a pattern in the problem description and then link that to the code that forms the solution than it is to learn from the code and try and figure out what the problem was.
Why Material UI
Because its a short cut. I can't do ui design and I want a modern cross platform look to the tool and the cljsjs library makes it readily available. Its that simple.
This Project
This project is an exploration vehicle for the demands I made above. It forms a basic framework onto which I can add tools to try and make problem modelling a fluid, intuitive process.