SOLID AND USABLE SOFTWARE
What is it?
As defined by the International Standards Organization (ISO), usability is the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.
- Although being dated as a definition (1998) it is still useful because it ties usability, a property difficult to pin down, to user performance indicators that can be assessed reasonably well, for example through user testing.
- Effectiveness refers to the range of goals that people can achieve, and accuracy/errors of achieved results.
- Efficiency is related to the effort, time, length of the process needed to achieve those goals at a given level of effectiveness.
- Satisfaction, measured through questionnaires (such as SUS; but see also Perlman’s page on usability questionnaires, or the Net Promoter Score) deals with a very broad range of aspects, covering both gratification of the obtained results and pleasure in the process of getting them.
- Notice that usability of a product needs to be contextualized: rather than saying just “this is usable”, we need to say “this is usable by these people for doing that in this context of use”, where context encompasses many aspects such as: posture, physical environment, social environment, interaction device, interaction modality, mental state.
Solid software refers in general to software systems showing properties such as maintainability, adaptability, extensibility, reusability. All these properties are important because they increase the development speed, reducing both time-to-market and cost of development. More specifically, in the context of object-oriented design, SOLID is a mnemonic acronym attributed to Michael Feathers for the the following principles: Single responsibility, Open-closed, Liskov substitution, Interface segregation, and Dependency inversion. These principles represents the core aspects of every OO design and constitute the concrete tools to achieve the abovementioned good design properties.