Three Paradigms in Software Architecture
The three paradigms of software architecture are structured programming, objected-orient programming, and functional programming.
Each can be summarized as follows:
- Structured programming imposes discipline on direct transfer of control.
- Object-oriented programming imposes discipline on indirect transfer of control.
- Functional programming imposes discipline upon assignment.
Each of the paradigms removes capabilities from the programmer. None of them adds new capabilities. Each imposes some kind of extra discipline that is negative in its intent. The paradigms tell us what not to do, more than tell us what to do.
In another way, it is to recognize that each paradigm takes something away from us. The tree paradigm together remove goto
statements, function pointers, and assignment.
What does this history lesson on paradigm have to do with architecture? Everything.
- We use polymorphism as the mechanism to cross architectural boundaries.
- We use functional programming to impose discipline on the location of and access to data.
- We use structured programming as the algorithmic foundation of our modules.
Notice how well those three align with the tree big concerns of architecture: function, separation of concerns, and data management.