A Curious Mind
#tastic

-ilities

Sunday, April 27, 2008 11:38 AM

Lately Evan Hoff and I have been discussing the concept of '-ilities' which we use to communicate the qualities of the software we develop. As a developer I have always valued certain qualities in the code that I write and in the software I develop but I hadn't really thought about this concretly before. Some sample '-ilities' are scalability, availability, testibility, and so on (basically anything with an 'ilitity' on the end of it). Some of the qualities I have been focusing on lately are reversability (how can I write my code in such a way that I can reverse out a decision easily), decomposability (how can a structure my program so that it can be worked on by multiple teams) and testibility.

By choosing these qualaties I am making an important statement about what I am willing to trade off in favor of these. I can then take this to the customer and ask them how important do they think this is and we can start to have a disscussion about their software in a non-techincal context.

I encourage you to do the same. If you would like to read more about this I would recommend reading the book Software Architecture in Practice, which contains a better and longer discussion on the topic.


Feedback

# re: -ilities

Can we call them 'lities' (lit-eez) instead of 'ilities' (ill-it-eez)? Because then 'quality' can be included in the bunch!

Most of the lities depend upon or are directly contributory to reversibility. I'm starting to think that reversibility and quality are the two most primary concerns of good software. All the others work, in some way, towards one or both of these primary goals.

Practices such as TDD (don't fail at all, or fail fast if you have to), Continuous Integration (short feedback cycle so I know when I have failed), and source control (let me undo my failure and/or share my success with others) all work towards both of these goals.

Great post, we need to keep thinking down this path. Please post more about your experiences with reversibility and how it has affected the way you do software design and implementation.
4/27/2008 12:41 PM | Chad Myers

# re: -ilities

As Chad says good post and I'd also like to hear more about how reversibility affects your designs. 5/8/2008 4:55 AM | Colin Jack

Post a comment





 

Please add 3 and 7 and type the answer here: