[LCP]help needed !!!!!!!!!!!!

Mike and/or Penny Novack stepbystepfarm at mtdata.com
Tue Jan 6 01:25:39 UTC 2004


 Aditya,
   
    Let me give a LITTLE more help. The first thing you need to do is 
complete the process specification. Don't begin design till you have a 
"corrected" specification.

    That's right, as it satnds, the specification for this porcess is 
incomplete. It's incomplete in the same way that analysts always begin 
with incomplete specifications because those giving us those 
specifications think only about how the process in terms of "when 
everything works". They do NOT stop to consider what this process should 
do if one or more things has gone wrong.

    For example, the overall process depends upon communications between 
independent processors and these communications can fail, one or more of 
the processors can be dead and not responding. A robust real world 
solution must take that into account. Thus......

Suppose the broker is unable to communicate with one of the producer 
processes. What should happen? Obviously the overall process could 
continue at reduced capacity and that's probably what would be desired. 
But maybe  something else also (like should the "broker" send a message 
to the support console informing a human "producer process ID=xyz 
appears to be dead").

Suppose a producer process is unable to communicate with the broker. 
Should it just sit there waiting to get through? Or more likely, since 
it has a queue of tasks waiting (remember, least loaded producer doesn't 
mean UNloaded producer) should it queue the "task completed" report for 
sending later and meanwhile get on with the next task (and wait only if 
its task queue is empty).

    Look at the (initial) specification carefully for all these "holes" 
that need to be plugged. In the real world, after coming up with 
reasonable alternatives, you would call a meeting of the "business 
clients" who gave you this task to get their decision/approval 
onexpansion  the specification of the behavior of the distributed 
process covering all these "unforseen events" << if you are an 
experienced analyst they will like YOUR proposals about "what to do 
if..." but ultimately that's their call -- and it's wrong to blame THEM 
for not having noticed these gaps in the specification -- your job is 
not just to "do what the customer asked for" but to be their ANALYST >>

    If this is a class project, the teacher may be waiting for you to 
have noticed "something missing in the specification" and may then tell 
you the "what to do ifs" (and maybe only students who notice the problem 
and ask get them). Or quite possibly might tell you "just do something 
reasonable" letting you pick. A lot depends on the teaching style.

    The reason I am pointing this out to you is that design omissions of 
this sort are quite difficult (expensive) to fix once coding has begun. 
You do NOT want to discover during testing of your process that it locks 
up and you have to redesign handling of what you thought were single 
objects into processing of a queue, decide on wait times, insert 
confirmations of "message recieved" (look up "The Two General Problem"), 
etc. A lot has been left out of the specification as you have it now. 
Fill in those details because that WILL affect your implementation choices.

Michael




More information about the linuxCprogramming mailing list