sequential circuits need to synchronous... sine async ckt's have quite a number of problems like rece conditions sync ckts are preffered over them... for this synchronous operation edge-triggering is used...
If we are not using the edges, whenever the input value changes output also change accrdingly. Because of this we will get erroneous values before settling in actual value. It will make unnecessary switching and power loss. So we are narrowing the sampling window and allowing the input stable. That's why we are using edges.
First we need some cell to keep data. That means we need more than combinabtion logic.
I think use edge maybe the only way to capture data, even for latch.
If we don't use DFF to latch data, we can't know the data process time.
In out application, we always do some math calculation or timing control.
If we don't use timing aspect in our design, it is always problem to real result.