No matter how terrifying a monster is, humans always try to find the silver bullet, to bring the inexplicabilities of the monster to a level of comprehension. Software is referred to as such a monster because its ever expanding level of complexity brings with it, multifarious issues which themselves are monstrous in their own accord.
The inherent properties of a modern software system are conformity, changeability, complexity and invisibility. Conformity is a necessary evil and normally has no logic to it but, for organisational restrictions. Changeability again is a constant sword hanging over software systems. Complexity of software systems is rather interesting as it is desired and not accidental and yet constitutes most of the monstrosity of software systems. By invisibility I refer to the fact that that there isnt any tool that can physically and convincingly represent a software system and this limits us in ways nothing else does.
Lets backtrack to when abacus had just been invented, we thought this was definitely an answer to the egregious calculations. As calculations became more and more complicated, seeking an answer led us to the beautiful concept of object oriented programming. It was a moment of celebration for developers all over the world as they thought- finally we have our solution. OOP with its modularity, reusability, reliability, maintainability etc. definitely addressed a lot of issues. However, software is abstract and a conceptual entity and hence visualisation of its impact and its challenges is indefinitely and inherently complex. We have now come a long way and invented supercomputers like IBM,�Sequoia, Cray,�Titan, NUDT,�Tianhe-2, and yet we are not close to our silver bullet. OOP, however, many would argue, is the closest thing to a silver bullet in the software world.