2026/07/06 by Mary Shaw · 1 citation
Computer Science · #cs.SE
Software engineering has a complicated relationship with "correctness". We recognize the challenges of full formal rigor as well as many required properties beyond functional correctness. Although we satisfice in practice, we are still stuck in the mindset that we could reason our way to correctness, if only we had enough information. Unfortunately for our hopes of formal rigor, our expectations are shaped by unspoken knowledge that is personal, subjective, qualitative, and largely unavailable. Generative AI has introduced a new dimension to assurance: its foundation is statistical rather than formal. Traditional software engineering establishes confidence through rigorous reasoning, domain knowledge and expert judgment. In contrast, generative AI results are sophisticated predictions, "probably approximately correct". This inherently limits assurances about the results to probabilistic assertions. Further, the nuances that guide human judgment are often tacit or implicit. This knowledge casts only scant shadows into the digital record, so that critical source of knowledge is only faintly represented in AI models. We have many approaches for developing assurances that a software system does what it's expected to do, though most of them focus on code specifications rather than system requirements, let alone the system's fitness for its purpose. We have failed to develop a systematic understanding of the relative merits of the various approaches to assurance. I hope that generative AI will finally force us to tackle this. To that end, I will challenge us to think systematically about our assurance techniques, especially the role of hidden context and the challenges of AI. We need ways to make informed, reasoned choices about cost-effective combinations of approaches to developing confidence in our systems. We call ourselves software engineers. Let's act like engineers.