As the size and complexity of software systems increase, problems stemming from the design and integration of overall system structure become more significant than problems stemming from the choice of algorithms and data structures. This is due not only to the increased amount of code, but also to the need to distribute the parts of the application and have them interact in complex and potentially novel ways. Future software systems can be expected to continue to grow in size and complexity, which will greatly strain our already questionable ability to develop software that is both functional and reliable. At least for the foreseeable future, software architecture and object-oriented design will continue to be used to facilitate this growth. Software architecture allows developers to abstract away the details of the individual components of an application, allowing them to be viewed as sets of components with associated connectors that describe the interactions between these components. One product of software architecture research has been a set of formal and semi-formal languages that provide behavioral descriptions of the components and connectors. These architecture description languages (ADLs) represent a significant opportunity for dealing with the issue of scale with respect to testing and analysis of software systems.
Back to my home page.