People like Alexander Stepanov and Sean Parent vote for a formal and abstract approach to software development. The idea is to break down complex systems into a directed acyclic graph and hide the cyclic behavior at the nodes representing this behavior.
The parent gave presentations in boost-con and google ( sheets from boost-con, p. 24 introduce the approach, there is also a video in the google conversation).
Although I like the approach and consider it a necessary development, I had a problem with the idea of how to handle subsystems with amorphous behavior.
Imagine, for example, a general pattern for state machines: using an interface that all states support and have different behavior in specific implementations for states.
How to solve this?
Please note that I'm just looking for an abstract approach.
I can think of hiding this behavior behind the node and defining different sub-DAGs for states, but this makes the design very complicated if you want to influence the behavior of the main DAG from the sub-DAG.
source
share