As software engineering keeps changing, it’s crucial to think about what makes software systems high-quality. One way to do that is by looking at “-ilities.” These are just characteristics that make sure our software is strong, dependable, and easy to take care of. By making sure our software has these qualities, we can be confident that it’s reliable and works well for the people who use it.
We software engineers didn’t coin the term “-ilities” but we’ve made them a cornerstone of the way we architect and build processes and systems over the years, so we have some thoughts about how we apply them.
At a high-level, an “-ility” is a form of requirement that either has (or which we awkwardly force to have) the -ility suffix. The suffix helps us think about typical requirements in a convenient and memorable way.
Over my years of experience, I’ve come across many “-ilities” that are essential to creating top-quality software systems. In this blog post, we’ll take a deep dive into the 8 “-ilities” that I consider to be the most useful in software architecture:
These 8 “-ilities” are just the tip of the iceberg when it comes to creating high-quality software systems. There are countless other “-ilities” out there, each with its own unique benefits and applications. As a software engineer, it’s important to stay up-to-date on the latest trends and best practices in order to create software that meets the needs of users and stakeholders.
So, if you have a favorite “ility” that we haven’t mentioned, or if there are others that you consider essential to software engineering success, please comment below and let us know!