Spec-Driven Development with LLMs: Precise Engineering Through Specifications