The answer to this question depends on how you define the term “usability.” So let’s take three different definitions and see where they led us to:
Usability is “effectiveness, efficiency, and user satisfaction”
In this definition, the target of usability is effectiveness (the user is able to reach his goal), efficiency (the user can reach his goal quickly) and user satisfaction (the user is satisfied while he interacts with the system). This definition derives from the ISO Usability Standard 9241/11. If you want to know whether software is usable according to this definition, you should run usability tests with real users, where you observe the task completion rate, measure the task completion time with a stopwatch, and collect answers to user satisfaction questionnaires.
Usability is “suitability for the task, suitability for learning, suitability for individualization, conformity with user expectations, self-descriptiveness, controllability, and error tolerance”
To enable the first definition (effectiveness, efficiency, and user satisfaction), generic principles are useful, which are described in the ISO Usability Standard 9241/110. Some of these principles may overlap in some cases (e.g. the user interaction after making an error is related to “controllability” as well as “error tolerance”). Some of these principles might lead to contradictions (e.g. “consistency of dialog steps between applications” supports “conformity with user expectations,” but might lead to worse “suitability for the task”).
If you want to know whether software is usable according to this definition, you could run internal usability expert sessions to find out to which extent the generic principles are reflected in the product. In addition you should run usability tests to evaluate the effectiveness, efficiency and user satisfaction.
Usability is a “harmonic interaction between a user and a product in a specific context”
To create a highly usable product, you need a good understanding and description of the user, task, software, hardware, and environment. With “standard software” there might be a variety of users, tasks, etc. – the solution to deal with these varieties are “customizing features” and “personalization features” built into the software, which can be used to shape standard software to fit well with the needs of the users, tasks, environments etc. of a specific company.