Issue No.04 - July/August (2006 vol.23)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MS.2006.102
Software development is ultimately an engineering activity, whose primary activity is to deliver executable artifacts in a manner that balances the forces on that system. The forces that swirl around a software-intensive system include not only its purely functional requirements but also a multitude of nonfunctional ones, such as reliability, portability, and scalability (often called a system's -ilities). Each of these forces is resolved systemically, meaning that no single part of a system can be responsible for responding to a force. Rather, the system as a whole, with its parts working in an architected union, must confront these forces. Indeed, the fact that these forces are dynamic and might change radically over a system's lifetime contributes to making software-intensive systems so complex.
Grady Booch, "From Small to Gargantuan", IEEE Software, vol.23, no. 4, pp. 14-15, July/August 2006, doi:10.1109/MS.2006.102