Mar 01, 2011
That is an interesting question. There are different aspects to application design: the code, the UI, the architecture, etc. I will limit my answer to the non-UI aspects, since that is typically what design patterns address.
First of all, a complete design is highly individual and subjective. Whenever you feel a design is complete, the application just feels good, is correct, is elegant, and works according to the requirements.
Of course, this is within the scope of your experience level, meaning that your sense of completeness is limited by your skills and experience. Some super-duper expert may come after you and possibly wipe your design of the table (many prima-donnas like doing this), but again that is from his/her perspective.
If you are good at what you do, are confident about your skills, and the application feels good and functions effectively and efficiently, then this would be complete, in my view.
Mar 01, 2011
I agree with Dan... A design is always within the context of some problem and the problem the design addresses has many stakeholders with different expectations but with common goals.
So, a design can be said to be complete for the said iteration if it meets all the requirements of the concerned stakeholders in the most positive manner.
But things change, requirements change, new stakeholders may come up and so the design evolves along with the environment, the core being more or less the same.