On Stability

On Stability

unstable ground

 

Today’s article lays the intellectual groundwork for a fundamental aspect of robust application architecture. Some software tolerates changes more than others. What’s the difference? One word: Stability. Some systems were designed with little consideration for varying levels of Stability within and between its components.

What is Stability in software? Why should we care?

Stability is the likelihood of code to change within a given timeframe. 

Code that rarely changes is stable. For example, framework code is very durable—string or int seldom change.

Frequently modified code is unstable (or volatile). UI is often a volatile, rapidly evolving part of a system.

Why is Stability important in software design?

When something stable is dependent on something unstable, the stable thing also becomes unstable. Think of a solidly constructed house on shifting ground. The building, affected as it is by the soft ground, is unstable too.

Let’s elevate this to a rule: 

Stable things depending on unstable things, become likewise unstable.

For us developers, this means we should avoid stable code depend on volatile code. 

What about the reverse? Unstable code depending on stable code? Well, that is perfectly fine. We do this when we use highly stable framework code, like string or int, in our less stable bespoke systems. 

Avoid stable code depending on volatile code. Keep stable and volatile code separated.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply