IntroductionThe idea behind this site is to give myself and other programmers a high-level easy-to-understand overview of common architectural patterns in software. It is meant as a source of inspiration for those who are asked to create some program and have really no idea what it should look like or where to start. I hope you enjoy it. Data FlowAn architecture has a data flow aspect and a control flow aspect. The first describes functional modules and data transfers. The second describes the way control is passed from one part of the system to the other. Here we describe a number of frequently used architectures. They are described from a data flow perspective.
Control FlowControl flow describes the way activity flows through the application. For starters, an application may consist of a single process, that performs sequential executions, subroutine calls and loops. But the application may also consist of several asynchronous processes. But even if the application has only a single thread of control, it may emulate multiple simultanuous threads. Even though a single thread can at the lowest level only do loops and subroutine calls, at a higher level of abstraction it can create all sorts of control flows. Take Implicit invocation for example. At the lowest level it's just subroutine calls. At a higher level it's modules that become active when they receive an event that was sent earlier on by a different module. Often the application contains a specific module to create the control flow. I found that two characteristics stand out to describe control flow: command structure (Control Tree or Control Loop) and order of execution (Parallel or Sequential).
Books
|