Table of Contents Previous Section Next Section

2.3 The Need for Software Architecture

Distributed processing changes virtually all the traditional system assumptions that are the basis for most software engineering methodologies, programming languages, and notations. To accommodate this new level of system complexity, architects have three new needs.

First, architects need the ability to separate complex concerns, in particular to separate concerns about business-application functionality, from concerns about distributed-system complexity. Distributed computing is a challenging and complex architectural environment unto itself. If systems are built with traditional assumptions, architects and developers are likely to spend most of their time combating the distributed nature of real-world applications. Problems and challenges of distributed computing have nothing to do fundamentally with business-application functionality.

The purpose of information technology is to make business processes more efficient. In a typical application, 70% of application code is infrastructure [Standish 1999]. Some of this code is unique to the application even though it might not directly address business requirements. By separating concerns, developers can focus on the business functionality that is the true purpose of the information system. Ideally, architects would like to separate distributed-system issues into categories of design, where the majority of components are purchasable as commodity communication infrastructure.

Software architects also need the ability to future-proof the information systems that they are planning. It is important to accommodate commercial technology evolution, which is known to be accelerating and provides substantial challenges for architects and developers. Future-proofing also requires the ability to adapt to new user requirements, since requirements do change frequently and account for a majority of system software costs over the life cycle. It is important to plan information systems to support the likely and inevitable changes that users will require in order to conduct business.

A third need for software architects is the ability to increase the likelihood of system success. Corporate developers to date have had a very poor track record of creating successful systems. The software architect is responsible for planning systems with the maximum probability of delivering success and key benefits for the business. Through proper information technology planning, it is possible to increase the likelihood of system delivery on time and on budget.

In confronting these three needs, authorities in software engineering and computer science tend to agree that architecture is the key to system success. Authorities in areas ranging from academia to commercial industry are declaring that software architecture is essential to the success and management of information systems. The list of software authorities who have come to this conclusion is long and growing. Unfortunately, not everyone always clearly understands what software architecture truly is. In order to provide clarification, it is necessary to examine some of the reference models that provide definitions of software and systems architecture (Figure 2.3).

Figure 2.3. Software-Intensive Systems Architecture Reference Models

graphics/02fig03.gif

    Table of Contents Previous Section Next Section