[This post is a placeholder for future work.]
As I’m reading more, and thinking more, I’m coming the conclusion that there may be a few immediate, practical applications for the “object-oriented-ontology” way of thinking, particularly when it comes to building software supporting scientific applications.
This is driven by my experience in designing software to support research. When building such systems, one often encounters a situation in which the underlying concepts are in a state of flux. This uncertainty creates a difficulty: effective software requires some stable core, but when concepts split and merge in arbitrary ways, developing unforeseen interactions, e.g, genetic modifications suddenly having an epigenetic component, it’s very hard for a system to respond or be modified in a timely manner. This is exacerbated when the system has been running for a while: the more data a system contains, the harder it is for the system to adapt since exacting the meaning of the existing data and recasting it into the new paradigm must often be determined on a case-by-case basis.
We are forced to perform these changes since, when modeling, we overlooked important aspects of the domain, building in assumptions contradictory to our newly improved understanding. The worst case situation is one in which an effect thought to result from one mechanism, e..g, DNA mutation, is suddenly shown to be driven by multiple mechanisms, most of which weren’t recorded when gathering the data — because the science didn’t support that understanding. However, I wonder if it is partly caused by our not thinking through what can actually be “sensed” by the objects in the domain.
Consider what would happen if, when performing our analysis, we were to drop down a level to analyze what the entities we are observing (via the captured data) can “experience” and incorporate that analysis into our partitioning of the system (or, at a minimum, how we annotate the data). It seems that extending our analysis in this way would allow us to build in a flexibility that would survive such discontinuities in out understanding over the long(er) term. This isn’t easy, finding the right analytic level is tricky, but O-O-O is a tool with the potential to help us find the way: if we don’t have a plausible mechanism by which the other actors in the system can directly influence the item we are analyzing, we are probably missing something.