Functional software architecture

This is an old revision of this page, as edited by Nvrij (talk | contribs) at 13:00, 31 March 2005 (Development of a FSA). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Functional Software Architecture

Introduction

A Functional Software Architecture (FSA) is an architectural model that identifies enterprise functions, interactions and corresponding IT needs, which can be used as reference by different ___domain experts to develop IT-systems as part of a co-operative information-driven enterprise. In this way both software engineers and enterprise engineers are able to create an information-driven, integrated organizational environment.

As the boundary of an enterprise is extended, it becomes increasingly important that a common “big picture” of needed business, people and IT system activities is developed and shared by all the parties involved [1]. A Functional Software Architecture does this by breaking down the organisation in business functions and corresponding IT needs. In this way the enterprise engineer provides a rich schematic reference that can be used by the software engineer in the development of these IT-systems.


Development of a FSA

The development of a Functional Software Architecture can be done by a number of (combined) methods and techniques. Figure 1 outlines the methods and techniques that will be discussed in this paper. Filling in the “gab” between the enterprise engineers and software engineers through the use of different combinations of methods and techniques will be the main objective of this paper. However, this objective can only be reached when combined methods result in clear and rich Functional Software Architectures that are developed and used by both parties.

File:FSA-network.PNG

Figure 1: Methods and techniques for the development of FSA

The different methodologies, methods and techniques discussed in this paper are presented as boxes. The boxes can be connected with each other by lines, which indicate a combination of methods. All boxes within the rectangle of Functional Software Architecture are connected with the Enterprise Engineering box, which outlines the fact that these methods/methodologies can be used in Enterprise Engineering. Only the UML and Petri Net boxes are directly connected with the box containing Software Engineering. That is, these two are commonly used by software engineers for the design and coding of a system. The red lines indicate for which methods/techniques examples are given and extensively discussed in this paper. However, for all methods/methodologies and techniques some background information is given

At the top-level it shows the Enterprise Engineering field. Optimizing the internal and external business processes through process reengineering is one of the main objectives an enterprise can have in times of high external pressure. A business process involves value creating activities with certain inputs and outputs, which are interconnected and thereby jointly contribute to the final outcome (product or service) of the process. Process reengineering covers a variety of perspectives of how to change the organization. It is concerned with the redesign of strategic, value adding processes, systems, policies and organizational structures to optimize the processes of an organization [2]. This paper considers process (re)engineering as part of the broader enterprise engineering field.


Modeling the business

Within the area of enterprise engineering formal methodologies, methods and techniques are designed, tested and extensively used in order to offer organizations reusable business process solutions:

  • The Computer Integrated Manufacturing Open Systems Architecture (CIMOSA) methodology[3]
  • The Integrated Definition (IDEF) methodology [4]
  • Petri Nets [5]
  • Unified Modeling Language (UML) or Unified Enterprise Modeling Language (UEML) [6,7]
  • Enterprise Function Diagrams (EFD)

These methodologies/techniques and methods are all more or less suited in modeling the enterprise and its underlying processes. So, which of them are suited for the further development of Information Technology systems that are needed for effective and efficient (re)designed processes? More important, why using a time consuming enterprise methodology when information and software engineers can’t or won’t use the unclear results in the development of efficiency enabling IT systems? Before we can give the answers to these questions some short descriptions of the listed methods above are given.