[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Is Systems Software Research Irrelevant?
Real component architectures, in the sense of an architecture that lets
two programs interoperate
even if the programs were written by disparate people in disparate
places under very different
adminstrative environments, require *more*, not *less*, declarative
semantics. CORBA and
RMI are just a start; at least they give names to operations and specify
input and output types.
The whole WSDL/UDDI/SOAP path is a somewhat improved version of the
same. But even
that's really not good enough for a lot of things, because the above
technologies only deal
in single request-response interactions, whereas a lot of real
interactions have a lot more steps
than that. You need to have what eXcelon's BPM product (what I used to
work on) calls
"collaboration definitions", also known as the BPSS stuff in the ebXML
standard. These
are basically declarations of choreography of messages: A sends a foo to
B, and then B
sends a bar to A, and then A might send either a baz or a frob to C, and
so on (picture
a little flow chart). And the protocols have to allow for asynchronous
communication, too.
Dan: I think of CLR as standing somewhat opposite to this view, and
must say that I find merits in what both you propose and what CLR and
other "infer the interface from the binary" approaches propose. The
basic problem (to me at least) is that the semantics of operations and
the co-ordination (what you call choreography -- which is really a
uni-dimensional expression, usually by a programmer, of what the
expected sequence of operations is) is left either "unspecified", or
worse, specified in artifacts that are not in-the-source -- such as
IDL/WSDL files etc. In this sort of situation, you run into problems
of "who will maintain the "choreography" file and ensure that the code
gets regenerated when it changes" etc. Precisely the same sort of
problems faced by the UML community -- where much time/energy have
been used to solve the "round-trip problem" (real designers and
researchers don't use UML still, do they? :)
I've never understood this fascination with "arbitrary
composability" of software units. The engineering envy that software
designers/implementors have has done us all a great dis-service don't
you think (why do people want to treat software as a bunch of bricks)?