Can We Build Perfect Software?

How would you define perfect software? Would be it bug free? Would it be lightning fast? Would it print money? Would it solve all your daily challenges? What would your perfect software do?

Defining perfection will always be subjective because no two people will have exactly the same criteria and/or measures. But maybe we can agree on broad criteria and go from there.

Maybe we can start by rating the importance of stuff like….

a) Richness and variation of Features (functionality)
b) Accuracy and consistency (of features)
c) Speed and Responsiveness (to inputs)
d) Security of features/data/information (is any of the data sensitive or private)
e) Look and Feel (of visible interfaces) – this could be defined as part of Usability
f) Ease of Access and Availability (to features) – this could be defined as part of Usability
g) Safety (could a feature harm someone)
h) Simplicity/Complexity/Flexibility of features (this could be defined as Risk or Usability)
i) Cost (overall or by feature)
j) Satisfaction (should a customer or user gain satisfaction or joy from a feature

(NOTE: This is not meant to be an definitive list, but it provides a taste of how we need to approach the task of defining the “perfect solution”.

If we take the approach of discussing criteria like these BEFORE we start our projects (not before we start Testing) and set expectations accordingly, I believe we will increase the probability of building perfect software.

Perfectly simple, huh?

Dateline: Friday February 28, 2014; NSW Central Coast


2 thoughts on “Can We Build Perfect Software?

  1. Pingback: Testing Bits – 2/23/14 – 3/1/14 | Testing Curator Blog

  2. Your list of quality criteria is quite reasonable and sensible. (For fun, you could compare it to the list of quality criteria in the Heuristic Test Strategy Model that’s fairly central to Rapid Software Testing. Note that this list has evolved and shifted over the years as we and others have realized the significance of various criteria.)

    But I’d prefer to drop the idea of perfection. For one thing, if software were perfect, how would we know? For another, what is perfect to you would not necessarily be perfect to me. And finally, perfect (and the effort to prove perfection) would be outrageously expensive—that is, imperfect on a level that’s probably pretty important to our clients.

    Jerry Weinberg wrote a book called Perfect Software and Other Illusions About Testing”. He also wrote “The quest for unjustified perfection is not mature, but infantile.” I agree with that.

    So, as the wider software development community, let’s drop the idea of perfection, and let’s resolve to produce software that’s valuable and that satisfies our clients. As testers, let’s focus on finding things that threaten the value of the product to people who matter. Your list is one appropriate point of departure for that journey.

We're here to help

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s