Fred Brooks 1986-ban megjelent No Silver Bullet – Essence and Accidents of Software Engineering című esszéje1 a szoftverfejlesztés történetének egyik meghatározó írása. Fókuszában a technológiai és az elvi határok állnak. (Lásd ezt is: The Mythical Man-Month.)
Fő tézise: nincs olyan egyetlen technológia vagy vezetésmódszertani áttörés (silver bullet), amely egy évtizeden belül nagyságrendi javulást hozna a szoftverfejlesztés termelékenységében, megbízhatóságában vagy egyszerűségében. Brooks a szoftverfejlesztési nehézségeket két alapvető kategóriába sorolja.
Lényegi nehézségek (Essence)
Ezek a szoftver belső, természetéből fakadó tulajdonságai, amelyeket semmilyen eszköz vagy nyelv nem tud megszüntetni:
- Komplexitás (Complexity): A szoftverelemek nem ismétlődnek egyformán (mint pl. a hardverben a memóriacellák). A rendszerek méretével a lehetséges állapotok és kölcsönhatások száma exponenciálisan nő.
- Módosíthatóság (Changeability): A szoftver folyamatosan változik, mert könnyen alakítható, és mert a külvilág (jogszabályok, üzleti igények, hardver) elvárja tőle az alkalmazkodást.
- Láthatatlanság (Invisibility): A szoftvernek nincs fizikai, térbeli alakja. Nem jeleníthető meg úgy egy geometriai vázlaton, mint egy épület vagy egy áramkör, ami nehezíti a megértést és a kommunikációt.
- Megfelelési kényszer (Conformity): A szoftvernek meg kell felelnie a meglévő emberi rendszereknek, szabványoknak és akár logikátlan interfészeknek is.
Járulékos nehézségek (Accidents)
Ezek azok a nehézségek, amelyek a szoftver megépítésének aktuális eszközeiből és folyamataiból fakadnak (pl. alacsony szintű szintaxis, lassú fordítási idő, nehézkes tesztelés).
Brooks rámutat, hogy a szoftverfejlesztés hatékonyságnövekedése a járulékos nehézségek megszüntetéséből adódott. A tanulság: mivel a járulékos nehézségeket már nagyrészt sikerült lecsökkenteni, az ezután elérhető javulás csak kicsi lehet — a fennmaradó időt és energiát a lényegi komplexitás köti le. Az általa vizsgált ígéretes megoldások:
- Magas szintű nyelvek és OOP: segítenek a struktúrában, de nem szüntetik meg a rendszer belső komplexitását.
- MI és szakértői rendszerek: hasznosak lehetnek bizonyos területeken, de a szoftverépítés kreatív, koncepcionális feladatait nem váltják ki.
- Automatikus programozás: csak ott működik, ahol a feladat teljeskörűen specifikált és lehatárolt.
Mondanivaló 40 évvel később
Brooks cikkére a mai napig hivatkoznak. Az MI (LLM-ek) elterjedésével ismét felmerült a kérdés: eljött-e a várt áttörés (silver bullet)? Brooks szerint az MI drasztikusan csökkentheti a járulékos terheket (pl. boilerplate kód generálása, teljes kódbázis refaktorálása). Ugyanakkor a lényegi nehézségek megmaradnak: az üzleti logika tisztázása, a követelmények, a pontos specifikáció és az összetett rendszerelemek közötti kölcsönhatások megértése továbbra is emberi feladatok lennének.
A cikk emlékeztetheti a fejlesztőket és a vezetőket, hogy egy új keretrendszer, egy paradigmaváltás vagy egy eszköz bevezetése önmagában nem oldja meg a rosszul meghatározott üzleti igényekből és a rossz tervezésből adódó problémákat.
-
Brooks Jr., Frederick Phillips: No Silver Bullet. Essence and Accidents of Software Engineering. In: Proceedings of the IFIP Tenth World Computing Conference (1986), 1069–1076. ↩︎