Design for Maintainability – Maintainability by Design

ChiliPLoP 2005 Hot Topic


"Hardware: those parts of the system you can kick.

 Software: those parts of the system you can merely curse" (anon).


Ofra Homsky [email protected]

Amir Raveh [email protected]



We have all been in this scenario - a computer, a device, a system or software ceases performing as expected and we call upon the services of the support engineers.


Support engineers could deliver better support if a product was designed with thought for maintainability.


No matter how professional, knowledgeable, empathic, intuitive and experienced support engineers are - without the proper tools built into the product their ability to help might be extremely impaired.


Regrettably, most product development teams get to think of product maintainability after the first problems are reported from the field. By that time, there is little they can change without having to redesign or introduce major changes into the product.


The best description we have heard so far for the role maintainability plays in products and systems was “Make The Pain Go Away!


Design for Maintainability – Maintainability by Design is an evolving pattern language that aims at providing the people who work on developing products with solutions towards embedding maintainability in the product and problem resolution.

The patterns facilitate the work of users, support engineers and developers when they are called upon to resolve problems detected during the product’s useful life.


Why Do We Think This Is Topic Is Hot?

We believe maintainability to be the next evolutionary step of software design:


In the beginning, the goal of software design was to create a product that does what the customer wants (in software development terms: “meet product requirements”). Since most of software developers are technology oriented, the resulting products were made for users with similar technical background as their developers.


The next stage was to make products comfortable for use by the end users. This was termed making products usable, and this quality was coined Usability in the product development realm.


From the customers’ point of view, now they are getting products that do what they are supposed to do and are more usable.


With the technological advances and the expansion of computer literacy today’s customers and end users set their expectations higher then the previous generations.

Customers want the product to meet their needs, wants and passions throughout its useful life. 


This next evolutionary phase, focused on making the useful product maintainable throughout its life cycle is the center of our Hot Topic workshop.



The purpose of the proposed hot topic is to collect ideas and suggestions for improving the maintenance of products, focusing on building the maintainability into the products and systems from the design phase and throughout the entire development life cycle.


Our hot topic will explore questions such as:

- How can we improve maintainability?

- What would you change in the design of a product so it could get better support, once deployed?

- How can we help the people who work on product development to become more familiar with the deployment environment – the users, the ecosystem they live in, their needs, wants and pains?

- How should we work with various disciplines (e.g. marketing, documentation, training, quality assurance and product design) throughout product development so we can provide better solutions to maintainability issues?

- How can we improve feedback throughout the various phases in the product development process?



As background material, please read in the proceedings of EuroPLoP 2003 the paper Design for Maintainability - Maintainability by Design.

You are welcome to discuss the patterns and thumbnails and possibly propose more patterns on the Hillside Wiki.

We will be happy if you can bring your own stories about resolving problems in systems – it does not matter if you were the person resolving them, or the person experiencing the problem. The story can be about success in problem resolution or about failing to resolve the problem.


We would appreciate any issues and responses you encounter while reading the pattern language.


And of course: any patterns that interact or complement those in the paper.


What we will do

1. Pattern Mining

To start the hot topic, we'll use the collected position papers, stories and thumbnails submitted. We will walk through them, ask questions and clarify expectations.

2. Pattern ordering & classification

In the second phase, we will organize patterns into groupings, map relationships between the patterns, talk about usage of pattern in sequences and brainstorm for missing patterns or stages. 

3. Directions for the pattern language

The third section will be an open discussion - how can we continue working on evolving the pattern language?


We hope to end the hot topic workshop with:

- Thumbnails of additional patterns, illustrative stories, sequences and known uses.

- A mapping of relationships and categories of the patterns and the thumbnails.

- A better understanding of the work left to improve on the pattern language.



To allow more time for efficient discussion of your suggestions, thoughts and experience on Maintainability, we ask that you submit them as a position paper.


Please send your request to join the focus group, and the position paper to Amir Raveh [email protected].


Note: PLoP is a trademark of The Hillside Group, Inc.