12 Non-functional requirements described in boxing terms

Subscribe to my newsletter and never miss my upcoming articles

Have you ever had the feeling that there are a lot of non-functional requirements with different names but same meaning, so you have to do some google work to recall the differences? Who doesn't. I tried to translate the 12 most common non-functional requirements in boxing terms, because simplicity is always better.

Robustness - how much different kind of punches can I take before I fall down

Fault-tolerance - can I still box in case of bad ring/bad gloves/my pants going down

Resilience - how long does it take for me to stand up once I fell down

Throughput - how much punches can I throw in fixed unit of time

Performance - how quickly do I respond to the punches of my opponent

Scalability - can I handle bigger and better boxer or more of them at the same time

Reliability - the average time of me boxing without any issues (lower power, energy or speed)

Availability - the amount of time I am on my feet and available to box in single fight

Effectiveness - am I punching hard enough

Efficiency - can I punch hard without getting out of fuel quickly

Quality - am I a good boxer compared to the standards

Maintainability - can I fix my boxing performance in the fight easily and quickly with slight modifications

As we can see, the differences between some of the widely used non-functional requirements are tiny, but important. Still, they are the dictionary which we all should understand as a software developers, when speaking non-functional. In some of my next articles I will try to do the same translations to some of the most common functional software design patterns. Have fun.