About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
Abstract
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. © 2006 IEEE.