Viscosity - negative quality of a program code - reduced flexibility of a software system to changes

Lecture



Brightness is the negative quality of a program code (or development environment), one of the signs of poor design, expressed in a reduced flexibility of the software system changeability . Software viscosity is spoken of when making changes related to a certain aspect of a software system, without violating the principles laid down in the draft, is time-consuming [1] [2]. Reduced change opportunities may be caused by: the difficulty of isolating components affected by changes; the disproportionate amount of necessary modifications in comparison with the amount of changes in software requirements; deep influence of changes on the system as a whole [3]. In the case when it is difficult to make changes to the system in many directions at once, they speak about the rigidity (“closeness” [4]) of software (eng. Software rigidity ). Another manifestation of poor compliance changes, along with viscosity and stiffness, is instability [5] (eng. Fragility - fragility). A change in one part of fragile software can cause several problems in other parts, even those not directly related to the modified component [1].

In the process of developing and maintaining software, viscosity makes programmers have a choice: whether to preserve the fundamentals of the original design when implementing a new requirement or to violate them using “hacker techniques” and following the “least resistance” path [2]. Due to lack of time and misunderstanding of the project, the initial intention is more and more disturbed [1].

Viscosity can be associated not only with the software itself, but also with the development environment. An inefficient, slow development environment can interfere with following good practice patterns and forces them to resort to questionable practices. Factors affecting the viscosity of the medium may include the development process, code reuse procedures, organizational and legal constraints [2].

In programming languages ​​and other systems for notation, researchers Thomas Green and Marian Petre distinguish viscosity as one of the cognitive dimensions. In this case, the viscosity is divided into cumulative (knock-on), as far as one change causes others to restore the consistency of the code, and repetitive, expressed as "resistance to change." So, Sidiqqi and others conducted a comparison of the viscosity of declarative and procedural programming languages. It turned out that BASIC has a low repetitive viscosity compared to the Prologue. With cumulative viscosity, the situation was reversed. It was shown that viscosity is caused by a whole set of multidirectional factors, and the viscosity itself refers to both the used notation (code) and the tool used.

see also

  • Code with a smell
  • Technical duty
  • Connectivity
  • Engagement

Comments


To leave a comment
If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Software and information systems development

Terms: Software and information systems development