Law of entropy increase
Definition: In an isolated system, if no work is done by an external force, the total entropy increases.
There are three words that are very important: isolated system, no work done by external forces, and total chaos (entropy).
First, let’s explain what entropy is.
Entropy, first described in 1865 by the German physicist Clausius, measures the “intrinsic disorder” of a system.
You can think of it as invalid energy in the system.
For example, the entropy of matter is always increasing, the house will become chaotic, mobile phones will become more and more jammed, earphone cords will become messy, hot water will slowly cool, the sun will continue to burn and decay… To the end of the universe — heat death.
It also controls the development law of the country and enterprises, making organizations become bloated and lack of efficiency and innovation; It affects every aspect of the individual, making us more prone to laziness, persistence, self-discipline…
Second, anti-entropy increases, which will only delay extinction
So is there any solution to this?
By definition, there are two conditions for entropy to increase: a closed system plus no external work.
By breaking these two conditions, it is possible to achieve entropy reduction.
That sounds abstract. How do you understand it?
Negative entropy increases, entropy decreases. It is through the third party outside the system to “do work” to achieve the “entropy transfer” of the isolated system, so that the total entropy of the original system is reduced; Entropy reduction can restore order from chaos.
Perhaps we can take a cue from life, which is a history of negative entropy.
Schrodinger said: life feeds on negative entropy. In other words, life is maintained and developed at the cost of increasing the entropy (or negative entropy) of the environment.
Third, the increase of entropy of software system
During software development and maintenance. The vitality of software is always from the initial ideal state, gradually tends to the development of complex, chaotic and disorderly state, until the software is not maintainable and forced to offline or reconstruction. This gradual increase in the number of factors that damage the quality of software is called software entropy.
Performance of software entropy increase:
Code confusion, new people are not easy to get started code highly redundant, low reuse, low development efficiency, expansion and modification difficulties, lead a launch of systemic business data disorder program performance is low system is difficult to move BUG rate is high other… The basic cause of software entropy increase is: the increase of entropy in the objective world leads to the complication of software development. Then, how to carry out anti-entropy increase of software system? The answer is to control this complexity by doing work.
There are many ways to do work, such as: layered architecture, development mode, object-oriented, middleware and so on. But these control complexity in a purely technical way.
But the key to controlling complexity is to have a good domain model that does not just stay on the surface of the domain, but captures the real structure of the domain beyond the surface to provide software developers with the support they need.
The core of the software
The core of software is its ability to solve domain-related problems for users. All other features, no matter how important, serve this basic purpose. This is a difficult task when the field is complex and requires the joint efforts of highly skilled personnel. Developers must delve into the domain to gain business knowledge. They must hone their modeling skills and master domain design.
However, in most software projects, these issues do not receive enough attention. Most talented developers are not interested in learning about their domain or making the effort to expand their domain modeling skills. Technologists like quantifiable questions that improve their skills. The field is complex and requires a lot of complex new knowledge that doesn’t seem to help computer scientists.
Instead, technical people are more likely to do elaborate framework work, trying to solve domain problems with technology. They leave learning domain knowledge and domain modeling to others. The complexity at the core of software needs to be addressed directly, and failure to do so can lead to a shift in focus.