Friday, June 24th, 2016
Software Resilience is the ability of a software to recover from or adjust easily to misfortune or change.
When a software is resilient, it is capable of withstanding unexpected events so it can continue to do its job with little or no downtime. It is a software that can be used for long periods of time.
Resilient software doesn’t mean that it is free of bugs; Resiliency has more to do with if software can keep doing its job when external forces require it to change and adapt. Bugs have more to do with if the software is doing its job correctly (the focus is internal).
Adding resiliency to software will usually come with price of added complexity. Adding this complexity will increase the development time of our software and make its maintenance more difficult.
Almost all software is resilient to some degree, but It is probably impossible to make software resilient under all conditions. Sometimes things are going to happen that will cause our software to fail and there is just nothing we can do about it. In this case, we need to have some contingency plans to recover the system as soon as possible.
The time that it takes to recover quickly to an acceptable level of performance after failure due to successful exploits, unintended damaging actions or accidents, is crucial for the systems running in most organizations and it depends mostly on the degree of preparation made through business continuity and disaster recovery plans.
Summing-up: Software resilience is related to the ability to recover from unexpected events; There is necessary to balance the cost and effectiveness of added complexity, backup and recovery capabilities against the expectations of damaging and destructive events.
These notes have been taken from: