Factors Affecting Software Quality

External Factors of Software Quality




  • Design simplicity — a simple architecture will always be easier to adapt to changes than a complex on
  • Decentralisation — the more independent the modules, the higher likelihood that a simple change will affect just one module or a small number of modules rather than the whole system





Ease of Use


  • Loss of consistency and increase in complexity from the addition of new features, affecting its ease of use. The solution here is to work again and again on the consistency of the overall product, trying to make everything fit into a general mold. A good software product is based on a small number of powerful ideas; even if it has many specialized features, they should all be explainable as consequences of these basic concepts. The “grand plan” must be visible, and everything should have its place in it.
  • Being too focused on features as to forget other qualities or delay the project too much.


Other Qualities

  • Verifiability is the ease of preparing acceptance procedures and test data and procedures for detecting failures and tracing them to errors during the validation and operation phases
  • Integrity is the ability of software systems to protect their various components (programs, data) against unauthorised access and modification
  • Repairability is the ability to facilitate the repair of defects
  • Economy, the companion of timeliness, is the ability of a system to be completed on or below its assigned budget


  • The need for external documentation, which enables users to understand the power of a system and use it conveniently, is a consequence of the definition of ease of use.
  • The need for internal documentation, which enables software developers to understand the structure and implementation of a system, is a consequence of the extendibility requirement.
  • The need for module interface documentation, enabling software developers to understand the functions provided by a module without having to understand its implementation, is a consequence of the reusability requirement. It also follows from extendibility, as module interface documentation makes it possible to determine whether a certain change need affect a certain module.
  • By including on-line “help” facilities and adhering to clear and consistent user interface conventions, you alleviate the task of the authors of user manuals and other forms of external documentation.
  • A good implementation language will remove much of the need for internal documentation if it favors clarity and structure. This will be one of the major requirements on the object-oriented notation used in a project
  • The notation will support information hiding and other techniques (such as assertions) for separating the interface of modules from their implementation. It is then possible to use tools to produce module interface documentation automatically from module texts.


An Example of the Benefit of Modularity

  • The issue is not that some part of the program knows the physical structure of data: this is inevitable since the data must eventually be accessed for internal handling.
  • But with traditional design techniques this knowledge is spread out over too many parts of the system, causing unjustifiably large program changes if some of the physical structure changes — as it inevitably will.
  • In other words, if postal codes go from five to nine digits, or dates require one more digit, it is reasonable to expect that a program manipulating the codes or the dates will need to be adapted; what is not acceptable is to have the knowledge of the exact length of the data plastered all across the program, so that changing that length will cause program changes of a magnitude out of proportion with the conceptual size of the specification change.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Ashok Khanna

Ashok Khanna

Masters in Quantitative Finance. Writing Computer Science articles and notes on topics that interest me, with a tendency towards writing about Lisp & Swift