The Specification Paradox: Rethinking Requirements Engineering in the Age of AI
Tassio Sirqueira, Jessica Faciroli
arXiv (cs.SE) · preprint
Argues that the language models writing the code do not remove the difficulty of building software, they move it: into domain understanding, elicitation, specification, validation and evolution. From that the authors state the Specification Paradox, that the better machines get at generating software from a specification, the more everything depends on that specification being correct, complete, verifiable and explainable, and name the failure modes on the way, automation bias, ambiguity propagation, specification overfitting and specification debt.
Abstract
The growing adoption of Large Language Models (LLMs) in Software Engineering has reinforced the expectation that coding activities can be largely automated. However, this perception may represent yet another historical search for a solution capable of eliminating the inherent challenges of software development. This article discusses the transition from a code-centered paradigm to Specification-Driven Development. We argue that artificial intelligence reduces some of the effort associated with writing source code, but it does not eliminate the complexity of developing professional software systems. Instead, it shifts this complexity toward domain understanding, requirements elicitation, specification development, validation, maintenance, and software evolution. Building on this perspective, we discuss the renewed centrality of Requirements Engineering, considering its implications for productivity and software quality, as well as risks associated with automation bias, ambiguity propagation, Specification Overfitting, and the accumulation of Specification Debt. Finally, we propose the Specification Paradox: the more capable artificial intelligence systems become at automatically generating software, the greater the dependence on correct, complete, verifiable, and explainable human-produced specifications. We conclude that the future of Software Engineering will depend not only on machines' ability to generate code, but also on humans' ability to correctly specify, evaluate, and evolve what is intended to be built.
Source: arxiv.org/abs/2608.16618