How do you differentiate between design decisions vs implementation decisions ?
To give a specific example: We are developing some web services which will integrate our application with another One of the question I asked was- do we want the integration between the two applications to by asynch or sync ?
Someone suggested that its an implemntation question and not a design.
My plea is- if I change something and you do not need to know what or why I changed- it's implementation decision.
However ,if I change something- which changes how you use my services- its a design decision.
If I change my implementation to asynch from synch- I guess it is going to affect how the services are consumed- hence- its a design decision and not implementation
e.g Whether I choose XML for storage or Database- as long as it doesn't affect the other application- it remains an implementation choice rather than design
Do you agree? disagree? thoughts ?