The science of
systems: systems as complex types
Copyright Graham Berrisford 2018. One of a
hundred papers on the System Theory page at http://avancier.website.
Last updated 04/03/2019 18:53
Find that page
for a link to the next System Theory for
Architects Tutorial in London.
You can’t understand systems without answering questions about the nature of description and reality.
These questions are often considered the domain of philosophers and linguists such Nietzsche and Wittgenstein.
There is some philosophy here, but the perspective is primarily scientific.
Some postmodernists have attacked science and reality, as reported in “A philosophical position statement”.
To the contrary, this story respects hard science.
It positions systems theory in a brief history of the universe and human evolution, and as a branch of science.
Our story of description and reality is rooted phenomena that emerged through the evolution of animals and human thought:
·
memories and messages
·
languages
and logic
·
the use of logic to describe systems (this
paper).
Contents
System description as typification
Describing a software activity system
Describing a human activity system
Describing
a human or computer activity system
There were no descriptions
before life
Before life there were things, but no description of them.
An understanding of the description-reality relationship has to start in biology.
Non-human animals communicate about things in the world effectively.
That is the empirical demonstration that they can model the world – well enough.
Animals evolved the ability to internalise descriptions of things – in memories.
They also evolved ways to externalise and share descriptions of things – in messages.
Messages and memories can represent reality to a degree – but perfect accuracy (or truth) is elusive.
Messages and memories contain what may be called “signs” in semiotics.
A sign is only meaningful or useful at those points in time when it is encoded or decoded by an actor.
Its meaning is in the understanding/intent of the encoder - or in the understanding/reaction triggered in the decoder.
There were no types
before symbolisation
Verbalisation enabled us (humans) to formalise our sense of family resemblances between similar things into types.
And then to connect one type to another in a logical statement.
We now use types and logic to understand and manipulate the world better than other animals.
That is the empirical demonstration that types and logic are effective modelling tools.
There is no way to know the world “as it is”; the idea doesn’t even make sense.
Since Einstein's day, scientists take the view that all we can understand is models we make of the world.
That is equally true of non-verbal models and verbal models.
The system of interest is an island of orderly behavior in the ever-unfolding process of the universe.
Its processes
depend on messages received and memories retained.
To describe
it is to typify the actors, activities, memories and messages.
System |
Abstract system <creates>
<represents> System describer <envisages> Concrete
system |
A type is a
description.
Moreover, a
description may be viewed as a type.
Every
coherent description, even a very long and complex system description, serves
as a type definition.
Every system
description can be instantiated (more or less) by many concrete systems.
But note that types can be fuzzy
A monothetic type, like “even number”, requires all instances of the type to have all its features.
A polythetic type, like “game” does not require that all instances of the type to have all its features.
For more on fuzzy logic and fuzzy sets, try this link http://www.mathworks.com/help/fuzzy/what-is-fuzzy-logic.html?requestedDomain=www.mathworks.com
And there can be degrees of truth in a statement
Newton’s laws are true to the degree of accuracy we need, good approximations, neither wholly true nor wholly false.
Software is
strange and wonderful in that it perfectly aligns description and reality.
The
description (the code) is perfectly performed.
The reality
(the run-time) can only behave as described in the code.
Software
system |
Software system code <creates>
<represents> Programmer <envisages> Run-time
data & processes |
There may be
a perfect correspondence between description and reality.
But don’t
confuse the software with the run-time operation of the system.
The software
code is a relatively simple abstract description
The run-time system operation a very complex, electrically powered
machine that reads the software and performs to the instructions in it.
In essence, a
human activity system is like a software system.
Human
activity system |
Roles and rules <creates>
<represents> Business architect <envisages> Actors and activites |
Humans rarely
realise system perfectly.
Roles are more
or less accurately performed by actors.
Actors may do more
or less than is described.
That fuzziness in
instantiating a system type is surely vital to success of human society.
Nevertheless, the
system itself can be described using the similar tools
How to specify a
system actor?
We define the role of the actor in terms of the activities they are expected to perform.
Humans have
long classified human actors according to roles they play – a role is a type.
The Greeks
divided dramatic roles into types: hero, ingénue, jester and wise man.
In the 11th
century, The
Domesday Book classified people into types
according to their rank and role in a feudal society.
How to specify a system activity?
We define the
inputs and outputs of the activity and the rules that apply to it
A rule definition states a precondition or post condition of an activity.
Each rule refers to the particular values of data types created and used by the activity.
Charles Antony Richard Hoare (1934 - ) is a British computer scientist.
Few have
taken up his work on formal specification languages such as CSP and Z.
But,
unknowingly, many use Hoare logic to describe how an activity changes the state
of a system.
The logic is
based on the Hoare triple, which may be expressed as: {Precondition} Activity
{Post condition}.
The meaning
is: If the precondition is true AND the activity proceeds to completion THEN
the post condition will be true.
Hoare logic underpins many ways to analyse requirements and
define business activities.
It can be seen in definitions of “value streams”, “business scenarios”,
“use cases” and “service contracts”.
How to
specify a process that connects activities in a logical flow?
We use the concept of an algorithm, which was known to Greek mathematicians and was formalized in the 1930s.
(See Wikipedia for references to Gödel–Herbrand–Kleene, Alonzo Church, Emil Post and Alan Turing.)
We often
specify an algorithm using a process flow chart.
How to specify
a message or memory?
We use a domain-specific
language to specify the data
types contained in messages and memories.
We define
each data type in terms of a generic data type (number, text, date etc.) plus a
domain-specific meaning.
We relate the
data types in larger structures.
We relate
data types in the structure of a message using the grammar of a regular
expression (as in a structure of sequences, selections and iterations.
We relate
data types in the structure of a memory using the grammar of predicate logic
(as in an entity-attribute-relationship model.
Types
and meta
types
Idealisation |
Generalisation |
System
description |
Design time description |
Meta meta model |
Behavior type |
Meta model |
Business Process type |
|
Model |
Insurance Claim Process type |
|
Run-time behavior |
Real world operation |
Insurance Claim 999999 |
The
engineering of human and computer activity systems exemplifies the scientific
method
Scientists
1. develop a theory that typifies how structures
in the universe behave.
2. run experiments to test that the
structures do behave that way.
System
describers
1. write code that describes process types (behaviors) that create and use data types (structures).
2. runs test to show that data is processed
as expected.
You can’t understand systems without answering questions about the nature of description and reality.
These questions are often considered the domain of philosophers and linguists such Nietzsche and Wittgenstein.
There is some philosophy here, but the perspective is primarily scientific.
In so far as philosophy is about language, knowledge and truth, it seems to have been overtaken by biological and software sciences.
Read “The philosophy of system theory” for a “tractacus” written from the perspective of a psycho-biologist rather than a linguist or mathematician.
The position here is that system theory should be regarded as science.
System architects observe baseline systems, envisage target systems, and describe both.
This paper
traces the pre-history of systems thinking and concludes with a few modern
ideas.
It discusses the relationship of real
world actors and activities to descriptions of them (as in data structures).
And the specification of rules as pre and post conditions of activities (as in business processes).
Below are some of the points made above.
Reality and descriptions of it
· The systems of interest here are islands of orderly behavior in the ever-unfolding process of the universe.
·
Especially
systems in which entities act (systematically) in response to information
encoded in messages and memories.
·
And
usually, systems in which that information describes or directs some entities
or events in reality.
·
Our
descriptions of reality are digital in the sense that we divide reality into
discrete entities (structures) and events (behaviors).
Animal memories and messages
·
Only
some descriptions of reality prove useful when tested.
·
Communication
requires that a receiver decodes the same meaning from a message that a sender
intentionally encodes in that message.
Human communications
·
Only
humans invent words to symbolise things and their qualities.
·
The
written record revolutionised our ability to think deeply, think straight,
remember things and communicate.
Human languages, natural and artificial
·
The fluidity and imprecision of natural
language enables human creativity and assists survival in a changing world.
·
For a system description to be holistic,
unambiguous and testable, an artificial domain-specific language is needed.
· A domain-specific language is an island of inter-related words with stable meanings, in the ever-unfolding evolution of natural language.
Thinking about systems
·
A
system description is a complex type that represents the structures and the behaviors of each entity that realises the system.
·
To make testable assertions about a system’s behavior, we specify processes by their pre and post
conditions.
· A concrete system is composed of actors performing activities.
· An abstract system typifies actors in role descriptions and activities in rule descriptions.
· A role is a list of activities performable by an actor.
·
A rule is a precondition or post condition of an
activity.
By the way,
some systems thinkers speak of systems maintaining order, or “negative
entropy”.
It turns out
that thermodynamics is tangential to most practical applications of general
system theory.
Having
said that, a few notes on thermodynamics are included in the footnotes below.