Making Products Maintainable
A while ago I scribbled thoughts about making maintainability a central theme of designing solutions (https://www.dhirubhai.net/feed/update/urn:li:activity:7070557342504820736/). In this article, I am trying to articulate a few attributes of a maintainable product.
Self-diagnosis: This attribute should perform self-health check and keep the users informed about aspects that need servicing. An air conditioner giving warning about the depleted level of the cooling gas and clogged vents, a database management system giving report about the need to regenerate indexes for restoring performance level can be the possible candidates of this attribute.
Self-help: This attribute has limited application as mechanical and other forms of deterioration can be rectified only through replacement or cleaning. However, software-based things can take corrective action wherever possible. Deleting logs past their retention period, reclaiming blocks of disk storage for smoother data access are some of the examples of this attribute.
Applying Sealed Design to Low-cost Components: A sealed component makes repair easy by replacing it with a new component. However, applying this principal to encapsulate critical functions make the cost of ownership an expensive proposition. Also, such components are rarely stocked due to their cost, which negatively affects the product down-time.
Doing Away with Fault Isolation: Of the attributes I have mentioned, this attribute has the most profound impact on the product maintainability. What I mean by fault isolation is that a fault symptom should have not more than one root cause. In other words, given a symptom, one should reach to the root cause in no time. Often, in the event of product failure, identifying the extent of damage in itself becomes an expedition.
?By enumerating the attributes of a maintainable product, I am trying to be more specific as to what it takes to make a product maintainable.