Radical Object-Orientation #06: The Integration Operation Segregation Principle (IOSP)
In Need of Intelligent Design for Data Flows Between Objects
In Alan Kay's biological analogy, there's another premise worth uncovering. It's not just that "the big idea" implies objects communicate unidirectionally via messages like cells with neurotransmitters, thus being functionally independent.
It also suggests the necessity for an explicit "intelligent design" to even connect cells for message communication.
How do biological cells with their neurotransmitters enact change? When a nerve cell produces Acetylcholine, it's oblivious to muscle cells that might respond.
A reaction to released neurotransmitters is only feasible if receptive cells are nearby. The spatial arrangement of cells is crucial for effectiveness. And how does this arrangement come about? Evolution led to "blueprints," along which development under environmental influence occurs. The result is a viable whole, an organism with its countless, neatly "packed" cells.
Evolution has thus led to the development of different cell types, neurotransmitters, and arrangements.
In software development, such evolution is unfortunately only possible in very limited domains and is called genetic programming. For the requirements your business world software needs to meet, you can't just call upon evolution. You're left with intelligent design, essentially playing God.
For your object orientation, this means making deliberate choices:
You must decide which objects should exist.
You must decide which messages should exist.
You must decide how objects should be connected to allow certain messages to flow.
The result is an integration: It's a new whole where individual objects are purposefully interconnected. From the various functionalities of the constituting objects, a comprehensive functionality at a higher level emerges.
An integration combines complementary functionalities into something new.
In Alan Kay's biological analogy, cells are highlighted as the main actors. But ultimately, it's about something larger, achieved only through the cooperation of all cells.
Unfortunately, Alan Kay forgot to mention the tissue, that organism form from cells, missing out on the necessity of integration.
Objects operate on messages. Hence, I call them operations.
Objects are combined into a new whole. This I call integration.
Integration is a distinct achievement. It's categorically different from operation. Therefore, for Radical Object-Orientation, I propose a second principle:
Integration Operation Segregation Principle (IOSP)
If you want to write radically object-oriented code, then operation and integration must be strictly separated. If you're a fan of the SOLID principles, you'll recognize this as a consistent application of the Single Responsibility Principle (SRP).
Remember: Where there's data flow, there needs to be somebody „to dig the ditch for the data for flow in“. The processing steps in a data flow don't do this themselves.
But integration is essential not only for "piecing together" objects into data flows. It's also why Radical Object-Orientation scales. The fact that integration resembles a biological cell with organelles - the objects it integrates - is no coincidence.
To get a different perspective on the IOSP you can read two earlier articles on it. They document how the principle underwent some change over time.