While working with outsourcing clients, a common problem appears, is the functional specification. Clients generally don't want to spend much time creating specs, try to write ASAP, which results an unfinished spec. While developing developers suffers a lot. First, it often gets confusing, the developer can't understand exactly what the spec is saying. Second, during the development (and also after seeing some demo), client discovers new features, which results much re-engineering on the code, as...