General Systems Theory
- An attempt to understand the inherent properties of all systems.
- It came about as traditional methods of understanding systems were failing.
What are systems
- A set of nodes that interact and are interdependent.
- They perform a specific role.
- They can be represented as a Graph.
Approaches to understanding systems
- Reductionist ( Analysis )
- Holistic ( Synthesis )
Attributes of systems
- Entropy
- Emergence
- Integration, Autonomy, and Boundaries
- Self organisation
Simple
- Low number of connections between nodes
- Linear cause and effect
- Analysis for understanding
- Are predictable
Complex
- Large number of connections between nodes
- Multiple causes for an effect
- Effects can feedback and cause amplification
- Synthesis for understanding
- Are unpredictable
Chaotic
- Can be Simple or Complex
- Are very sensitive to intial state
- No relationship between cause and effect
What are they
- Capture, Transform and Present knowledge
- Possibly answer questions
Issues with how we build them
- Take an long time
- Poor quality
- Low in features
- Difficult to operate/evolve/extend
Why do we have these issues
Understanding what to build
- We do not understand customer needs
- We do not understand constraints on what we can build
- We do not know our customers
Understanding of the context that what we build lives in
- Empirical aspects are considered too late if at all
- We do not consider the complexity class of systems
Understanding how to build
- We ignore the laws of software evolution
- The processes we use are deeply flawed
Development Processes
- Waterfall
- Itterative Modeling (CASE)
- Agile
- Lean
The net effect of this is Complex/Chaos
Approach
- Start by removing the chaos
- Then move towards simplicity
- While introducing aids that help with complexity
Techniques and Practices
- Appreciate the laws of software evolution
- Deming - Plan Do Study Act
- Deming - System of Profound knowledge
- Cynefin
- Domain Driven Design / CQRS / Event Based
- User focused
- Seven dimentions of data quality
- Comprehensive diagnostics
- DevOps
- Understand distributed systems
- Use a declarative approach for expression domain rule