Christian,

I welcome your comments and questions.I've been given careful thought to all the
 comments/questions that I have received. In my view having an open and direct 
discussion about the messaging design pattern (MDP) is very beneficial. You 
also have very specific questions based on the paper. In general, I'm asking 
folks to be as specific as possible so I can provide detailed answers. Feel 
free to include specific sections of the paper.

Once we get the messaging abstraction, we can agree on
 the validity of the concept. You raise a valid point related to the comparison 
with traditional solutions. I'm afraid this comparison was not part of the 
scope of the original MDP paper. The first paper only includes an example 
comparing MDP and RPCs. There are several facts/benefits covered there. As I 
mentioned earlier, it is impossible to cover all the aspects of MDP with a 
single paper (wide applicability). Many aspects are only briefly mentioned.  
The second MDP paper covers a complete comparison of MDP with traditional RPCs:

Messaging Design Pattern and a Distributed Component/Services
https://jt.dev.java.net/files/documents/5553/149793/MDPdistributedModel.pdf

You should find facts and solid arguments/foundation there in terms of the 
benefits of MDP when compared with traditional RPCs.  Otherwise I'd
like to know the specific aspects that you may disagree with so I can send you 
a detailed answer. Also, you may  want to review some of the comments 
contributed to the discussion in order to visualize the benefits of MDP. The 
first paper also discusses in detail the implementation of design patterns 
using MDP. This is another area where detailed arguments/facts have been 
provided so far.

BTW, the Jt design pattern framework (reference MDP implementation) may also be 
useful when comparing MDP with other technologies.

In my view, in order to fully understand the messaging design pattern (concept, 
abstractions, implementations, applicability, feasibility, efficiency, etc)  we 
need to understand the following premises and conclusion. Folks bear with me 
for a minute and think about it carefully. BTW, as I mentioned earlier, if 
there is a better way of communicating "messaging" I'd love to hear it so 
everyone gets it right
 away.

Realistic Model: 

1) Software applications are designed to model the real world.
2) Software models should be as close to reality as possible
(realistic model) in order to achieve an accurate portrait. The more
realistic the model is, the better off your application will be. 
3) Messaging is part of the real world. Actually it is everywhere (Ubiquitous)
.

- Conclusion:
Therefore messaging must be part of the software model in order to achieve an
accurate/complete model. BTW, there are other concepts that are also
part of reality ( gravity, forces, etc). Obviously you might need to include
these concepts depending on your application.

We agree that messaging is everywhere (premise 3). This is a fact. We also 
agree that many other concepts (gravity, etc) are part of the real world 
(fact). There is no inconsistency between this fact and the premises/conclusion 
above. As stated earlier "Obviously you might need to include
these concepts depending on your application."


Let's use the concept of Gravity to illustrate this point. It is also part of 
the real world. On the other hand, you don't need it as part of your model for 
a Distributed Component/Service model (second MDP paper) or a standard business 
application. In general these applications don't need to deal with the concept 
of Gravity. Gravity doesn't need to be part of your model in this particular 
scenario. Usually what you find for these applications is  many components 
"communicating" with each other. This "communication" implies "messaging". 
Messaging needs to be part of the model for these types of applications in 
order to achieve a complete/realistic model.

Now let's say that you are trying to model a highly interactive game where 
characters need to communicate ("Messaging") with each other. They also can 
jump (Gravity) and move around. They can also collide and bounce (Force), etc. 
Based on premises 1 and 2 above, you need to arrive to the
 following conclusion. There is not inconsistency with any of the premises or 
the conclusion above. For premise 3 you need to realize that Gravity and Force 
are also part of the real world (no inconsistency):

Premise 3: Messaging, Gravity and Force are part of the real world. 

Conclusion:We need to include the concepts of messaging, gravity and force to 
achieve a realistic model for this specific application. They are part of the 
reality being modeled. Therefore they should be part  of the software model. 
 
In you think in terms of a realistic model, the difference between messaging 
and other concepts (force, gravity) is that messaging is ubiquitous. It is 
needed for most of the common applications (business, Distributed 
Component/Service Model). Gravity, force and other concepts are not. This is 
the main difference.


I'm afraid I was unable to attend the conference. I hope this makes sense. Feel 
free to send any additional comments/questions based on this reply.
 I plan to address your other questions/comments shortly. I hope the second MDP 
paper will provide additional/detailed information in terms of comparison 
between MDP and other technologies (RPCs/Web services). 


Best regards,





--- On Wed, 12/15/10, Christian Köppe <[email protected]> wrote:

From: Christian Köppe <[email protected]>
Subject: RE: [patterns-discussion] MDP feasibility questions (was: Messaging 
Design Patterns (MDP) reusability and QA)
To: "Messaging Design Pattern" <[email protected]>, "Ralph Johnson" 
<[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Wednesday, December 15, 2010, 9:27 AM



 
#yiv593424849 #yiv593424849yiv783673917 #yiv593424849yiv783673917yiv154695024 
#yiv593424849yiv783673917yiv154695024yiv2103600624 P 
{margin-top:0;margin-bottom:0;}

Hi,



I was in the PLoP 2010 writers workshop which also included the Messaging 
Design Pattern. Unfortunately the author didn't made it to the workshop. But I 
talked with other participants about the MDP.



My first impression was that someone had found a silver bullet. Huge claims 
were made, and I therefore expected that these were grounded on a solid 
foundation. Unfortunately, I couldn't find any proofs, but only more claims and 
examples which didn't tell me
 why it is better to you use MDP here instead of conventional solutions. 
Actually, I miss the forces and I miss the real and general problem(s) (which 
can't be solved in other ways effectively).



It is true that messaging is everywhere around us and therefore part of the 
real world. But, as the author states himself in the last mail, so are many 
other things. So the argument that because messaging is part of the real world 
and should therefore also
 be part of the software is imho not applicable.The other question (which is 
not discussed by the author) is: represents MDP the messaging concept in an 
appropriate way? Why are conventional interfaces (or other known techniques) 
not enough?



I also would like to see a discussion of the impact of the obvious overhead of 
defining message formats AND how this can be shared between components. In my 
opinion, components using MDP are syntactically decoupled, but at the same time 
introduce a much higher
 semantic coupling. Which one is worse?

Also, if the amount of different possible messages handled by one MDP-interface 
increases, the complexity to handle these also increases (if-then chains or 
similar solutions). This is not discussed in the paper.




The example given is really simple, but triggers more questions: if MDP is used 
for the Proxy, why aren't all messages send to the proxy sent via the messenger 
(as expected)? setURL and setClassname still have to be called directly, so 
coupling is not decreased
 here (as claimed). The program has to know that the proxy only can handle one 
message and it therefore doesn't has to provide a messagetype, but only the 
message-string. This is semantic coupling. The same goes for that the program 
has to know that this message
 returns a String. What happens if the proxy (or the component where it stands 
for) returns something else than a String? This shows to me also one big 
disadvantage of MDP: through purely semantic coupling can changes in components 
(and their interfaces) only
 be detected at runtime, not compiletime. How can you be sure that you fixed 
all calling parts of your software? This, imho, asks for version management AND 
really good knowledge sharing between developers, which is still a realistic 
problem in many organizations.
 But the author states in his work: "In general, there is no need to change 
someone else’s code. The need for creating, maintaining and merging several 
versions of the code is also minimized or eliminated.". I don't agree with that.





I hope that the author welcomes my questions and comments as feedback to 
improve his work.





Regards,

Christian Köppe



| Docent Informatica | Hogeschool Utrecht | Institute for ICT | Nijenoord 1| 
kamer D01.20 | T. 030-2388056 | NL-3552 AS Utrecht | [email protected]|





r





































 



      


      
_______________________________________________
patterns-discussion mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/patterns-discussion

Reply via email to