Ports, Adapters and Simplicators
A question came up in the GOOS discussion group about how Simplicators relate to the Ports and Adapters (aka Hexagonal) architecture. My take on the two is:
Ports and Adapters is a coarse-grain OO design pattern. It decouples the object model of a system's application domain from the object models of its technical domains. Among other benefits, this lets you write acceptance tests against the application domain model directly. Ports and Adapters says nothing about distribution between processes, machines and/or organisations. It's concerned with how we structure our objects within each process.
Simplicators help with system testing when the system relies upon a service that is hard to fake out (for technical reasons) and cannot be changed to be easier to fake out (for organisational reasons). They are a way of moving the awkward protocol used by the service out of the port domains of our processes, to gateway(s) the very edge of our system.