This is an old revision of the document!


Week 2023-W27 in reading

Longitudinal Evaluation of Open-Source Software Maintainability

Source: arXiv:2003.00447.

Definitions

Maintainability is the “degree of effectiveness and efficiency with which a product or system can be modified to improve it, correct it or adapt it to changes in environment, and in requirements”.
Maintenance hotspots, (…) parts of the source code that are most difficult to maintain.

Quotes

You cannot control what you cannot measure.
— DeMarco, T. (1982). Controlling Software Projects; Management, Measurement and Estimation.

Notes

Models:

  1. Maintainability Index — a value calculated based on Halstead volume, cyclomatic complexity, and number of source code statements (or lines of code).
  2. Technical Debt Ratio — amount of time required to fix all issues divided by the estimated time to create the software system. Calculated by SonarQube.
  3. ARiSA Model for Maintainability — developed according to ISO 9126 standard. It takes into account complexity, structure and design metrics to calculate a value assessing maintainability.

The study compared models mentioned above by applying them to 3 FOSS applications (FreeMind, jEdit and TuxGuitar).

Further reading about the Maintainability Index:

My take-away is that while these methods can be useful, they probably won't be for Scala code-bases since branching is often hidden behind higher-order functions. Also, Scala is such an advanced language, that sometimes its own rich feature set adds to the complexity and decreases maintainability.

Pluralistic: Tiktok's enshittification (21 Jan 2023)