Decade after decade, software systems have seen orders-of-magnitude
increases in their size and complexity. This is remarkable — and more
than a little scary for those of us who build software. In contrast,
imagine how hard basketball would be if it scaled up the same way,
with 5 people on the floor one decade, then 50, then 500. Because of
this growth, today’s software systems are arguably the largest and
most complex things ever built.
Software developers are always battling the ever-stronger foes of
complexity and scale, but even though their opponent grows in
strength, developers have staved off defeat and even reveled in
victory. How have they done this?
One answer is that the increases in software size and complexity have
been matched by advances in software engineering. Assembly language
programming gave way to higher-level languages and structured
programming. Procedures have, in many domains, given way to
objects. And software reuse, which used to mean just subroutines, is
now also done with extensive libraries and frameworks.
subscribe via RSS