Line between interface and implementation

Assaf Arkin wrote:
>...
> 
> [AA] Rule #1 of the interface: what the customer does not care should not be
> in the interface. WSCI does not force you to include that information in the
> interface.

Let's call this rule Assaf's Principle. It is similar to Occam's 
principle in that it lets us strip away that which is inessential.

Now let's turn it into something measurable and concrete:

Given a SERVICE and a CUSTOMER.

Given a contract expressed in a choreography language called CONTRACT.

Given CONTRACT expresses a constraint/condition/thing called CONSTRAINT.

CONSTRAINT is part of the public interface between CUSTOMER and SERVICE 
if and only if it is possible to observe whether constraint has been 
upheld or violated in the packets on the wire between CUSTOMER and SERVICE.

I claim that that's the long form of Assaf's principle. So the fact that 
the travel agent confirms seats on the airline one leg at a time is 
demonstrably not part of the customer interface because the customer 
_cannot observe_ whether they do this or not in any data on the wire.

Now this is just the start, but it is an easy, clear starting point. The 
harder question is to determine what _should be_ in the interface and 
what needs to be declared at design time versus discovered at runtime. 
But it would be positive forward progress if we could agree that if 
there is _no way_ for a client to know whether a constraint has been 
followed or not, then that constraint is NOT relevant to that client and 
should therefore not be exposed to them (Rule #1).

>...
> Think value chain processes. Choreographies involving multiple participants,
> where the relation between the activities performed by all the participants
> are explicitly modeled. Check out your favorite book about supply chain
> management for some examples.

A supply chain is an _implementation_ of a process.

> No, internal operations are not shown. When a particular participant talks
> to their SAP or Oracle, that is not exposed in the choreography. But the
> model of the value chain often depicts how participant A sends a message to
> B, and B sends a message to C before coming back with a reply to A. Some
> business user think that information is important. I prefer to fulfill the
> requirement of my customers.
>...

Your company is a business process management company. Of course your 
customers come to you for implementations of business proceses. The same 
goes for BEA et. al. That doesn't mean that there is no difference 
between interface and implementation. It means that it is your job to 
help your customers distinguish between them.

  Paul Prescod

Received on Tuesday, 22 October 2002 12:21:46 UTC