The Limits of Software
Grady Booch ( IBM Fellow )
- 16:30 27th April 2004 ( week 2, Trinity Term 2004 )Lecture Theatre
Software development has been, is, and will likely remain fundamentally hard. Building quality systems involves an essential and irreducible complexity, which is why the entire history of software engineering can be characterized as one of rising levels of abstraction. As such, the task of the software development team is to engineer the illusion of simplicity. Nonetheless, software-intensive systems can amplify human intelligence, but they cannot replace human judgement; software-intensive systems can fuse, co-ordinate, classify, and analyze information, but they cannot create knowledge. In other words, not everything we want to build can be built: there exist pragmatic theoretical and technical limits that make software development hard if not impossible. Furthermore, not everything we want to build should be built: there exist moral, economic, social, and political limits that govern human industry. From fundamental to human, these are the factors that define the limits of software.