Software tends toward a continual global ecosystem
Since software is ever-changeable it has no final form, and so its design process never really ends: it is continual. And since software is freely communicable it has no real location, and so the design process is dispersed: it is global. Code is shared across versions and projects world-wide. What are apparently separate projects are really only sub-branches of the whole: software is very much a single interconnected system. Other engineerings may have a global view, but with software its very material is, and there is nothing else.
Both of these features are rather special: design is essentially about responding to requirements and building on components – to do these so quickly and widely approaches its ideal. Software can be designed more completely than almost anything. Hence, design for sofware – the tasks, knowledge, techniques – is potentially much larger and more complex than its forebears.
There is a further special characteristic that might be even more important, yet hardly used: full reflexivity. Software can modify everything about itself. This is a significant departure from other engineerings. And it leads beyond design – deliberate prediction and control – to autonomous development. Though we currently lack the knowledge to guide software evolving itself, it is where software can perhaps become not only a single whole, but an ecosystem – like its natural digital progenitor: DNA. What that will mean is interesting to ponder . . .
Background: