~/forbannet/blog~publications
now compiling: io_uring branch, --releaselatest push: e8af13c → main · 12 min agoreading: "What Every Programmer Should Know About Memory" — Drepper, 2007currently playing with: ftrace + perf for syscall latencyopen PRs: 3 · issues triaged today: 14now compiling: io_uring branch, --releaselatest push: e8af13c → main · 12 min agoreading: "What Every Programmer Should Know About Memory" — Drepper, 2007currently playing with: ftrace + perf for syscall latencyopen PRs: 3 · issues triaged today: 14
Techie#5782
Techie#5782guest
/publications

papers, talks, preprints

selected published works and currently-cooking drafts. cite freely, send corrections to root@kernelriot.com.

01 entries
2021

SOLID Considered Harmful: A Structural Critique of the Class-Oriented Catechism

D. M. Leatti / The Meridian Journal of Technology

The principles abbreviated as SOLID, the class-oriented object-oriented prescription on which they depend, and the enterprise-framework stack built around both are taught and enforced across the industrial software workforce as the contemporary definition of professional engineering practice. This paper assembles the structural and empirical record on that status. The case for it is not present in the record. We trace each SOLID principle to its rigorous antecedent (Parnas, Meyer, Liskov and Wing) and document the conditions compression discarded. We survey the empirical record on object-oriented design metrics and code quality and observe that the community's own design metrics correlate positively with defect density, that the largest-scale language-versus-quality study fails to support a paradigm effect after methodological correction, and that performance measurements on the catechism's own canonical examples report an order-of-magnitude cost. We document the empirical language and paradigm preferences of the safety-critical software industries (avionics, space, weapons, medical devices), where the codified standards restrict the constructs the catechism endorses. We examine the Linux kernel at approximately thirty million lines of procedural C as a counter-example to the team-scaling claim, and observe that its polymorphism mechanism is what C++ virtual dispatch compiles to with the vtable made visible. We argue, on Dijkstra's 1968 criterion of static-text-to-dynamic-execution legibility, that the contemporary enterprise framework stack reconstructs the structural failure mode Dijkstra named as the cost of the goto statement. The mechanism is different; the structural failure is the same. We document the function the catechism does perform, in the form of a legitimation apparatus for credentialed authority in software teams, and we describe constructive alternatives drawn from the bodies of work the catechism compressed. The paper does not establish a counterfactual. It documents the available record. The record does not support what the catechism claims about itself.

architectureclass-orienteddijkstralinux-kernelobject-orientedooppatternsprogrammingsoftware-engineeringsolid
0 citations