The Reactive Manifesto

Some years ago I made an attempt to learn Erlang. It is often labeled as a functional programming language, but I think the important property of the language is it model of asynchronous processes, Joe Armstrong’s PhD Thesis provides a very good understanding of the basic principles. I think that some of the mechanisms in the language makes several pattens in Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects unnecessary.

An interesting parallel is The Reactive Manifesto, which to me seems to “reinvent” the ideas found in Joe’s thesis. I totally agree with the manifesto, and think it is applicable for embedded systems with multicore processors as well. It is just too bad that the web site with the manifesto has no references at all; it is impossible to see who wrote the original draft, what they have based the manifesto upon, or where I can find more information to dive deeper into.

Even if an architecture was based on reactive principles I think it would be quite useful to describe the architecture in views. I think the “standard” 4+1 views could be used quite easy for an Erlang or a reactive system system as well.
However it may not be the logical view that the other views are derived from, rather I would think that the process view would be the basic view. Kruchten has an underlying assumption that the logical view is object-oriented. This is obviously not first-calls building block so a different notion of the logical view is necessary.

Joe Armstrong strongly suggest a hierarchy of processes, and this is how I also interpret the Reactive manifesto:

“Large systems are composed of smaller ones and therefore depend on the Reactive properties of their constituents. This means that Reactive Systems apply design principles so these properties apply at all levels of scale, making them composable.”

A problem domain model could be a good way to identify the top-level processes, e.g. the PDM classes could be the initial processes and the asynchronous interaction will be implemented as messages, since reality is asynchronous.

Leave a Reply

Your email address will not be published. Required fields are marked *