Today, many software systems offer a multitude of different, user-observable functions, which in their entirety form the very complex overall system’s functionality. However, practical experience shows that many question are directly related to the user-observable sub-functions. Regarding the development process, this requires to relate the entire system’s functionality to its sub-functions in a formal way. In this context, decomposing and modeling the functionality in a structured way is essential. In this paper, we identify and define fundamental concepts for the structuring of a system’s functionality into modular parts. We formalize these concepts using Focus, a stream-based theory for the specification of reactive systems. In particular, we define the notion of self-contained, autonomous sub-functions and introduce a canonical decomposition of functionality, inherent to the structure and nature of the functionality. Subsequently, we discuss topics of methodology that guide a modular functional decomposition. All in all, this gives a modular structuring concept for the behavior of multi-functional systems.
[1]
D. L. Parnas,et al.
On the criteria to be used in decomposing systems into modules
,
1972,
Software Pioneers.
[2]
Edsger W. Dijkstra,et al.
Notes on structured programming
,
1970
.
[3]
Manfred Broy,et al.
Specification and development of interactive systems: focus on streams, interfaces, and refinement
,
2001
.
[4]
Manfred Broy,et al.
A formal model of services
,
2007,
TSEM.
[5]
Manfred Broy.
Two Sides of Structuring Multi-Functional Software Systems: Function Hierarchy and Component Architecture
,
2007,
SERA.