Functional Software Architecture - Overview

Overview

When an integrated software system needs to be developed and implemented normally a number of tasks and corresponding responsibilities can be divided:

  1. Strategic management and business consultants set objectives in relation to a more efficient/effective business process.
  2. Enterprise engineers come up with a design of a more efficient business process and a request for a certain information system in the form of an Enterprise Architecture.
  3. Software engineers come up with the design of this information system, which describes the components and structural features of the system by use of a certain architecture description language (ADL).
  4. Computer programmers code the different modules and actually implement the system.

The described work division is in reality much more complex and also involves more actors but it outlines the involvement of people with different backgrounds in creating a software system that enables the organization to reach business objectives. A wide variety of material produced by different actors within this system development process needs to be exchanged between, and understood by, multiple actors.

Especially in the field of software engineering many tools (A4 Tool, CAME, ARIS), languages (ACME, Rapide, UML) and methods (DSDM, RUP, ISPL) are developed and extensively used. Also, the transition between the software engineers (step 3) and computer programmers (step 4) is already highly formalized by, for instance, object-oriented development.

Setting strategic objectives (step 1) and the corresponding search for business opportunities and weaknesses is a subject extensively discussed and investigated for more than a hundred years. Concepts like business process reengineering, product software market analysis, and requirements analysis are commonly known and extensively used in this context. These strategic inputs must be used for the development of a good enterprise design (step 2), which can then be used for software design and implementation respectively.

Recent studies have shown that these enterprise architectures can be developed by a number of different methods and techniques. Before these methods and techniques are discussed in detail a definition of an enterprise architecture is given:

An Enterprise Architecture is a strategic information asset base, which defines the mission, the information necessary to perform the mission and the technologies necessary to perform the mission, and the transitional processes for implementing new technologies in response to the changing mission needs.

This definition emphasizes the use of the architecture as a rich strategic information source for the improvement of business processes and development of needed information systems. If defined, maintained, and implemented effectively, these institutional blueprint assist in optimizing the interdependencies and interrelationships among an organizations business operations and the underlying IT that support operations.

Having read the definition of a functional software architecture at the beginning of this entry we can see a functional software architecture as a type of enterprise architecture that can be used as a rich reference for the development of an integrated information system. Naming it a functional software architecture encourages practitioners to use it as a strategic input for a technical architecture. A formal mapping between a functional software architecture and a type of ADL is therefore needed. In this way the formal use and reuse of enterprise architectures as strategic input for software architectures can be realized.

Read more about this topic:  Functional Software Architecture