توسعه مبتنی بر مشخصات (Spec-Driven Development) چیست؟

بیشتر برنامه‌نویسی‌های مبتنی بر هوش مصنوعی به یک شکل شروع می‌شوند. شما یک دستور (prompt) کوتاه به یک عامل (agent) می‌دهید. تماشا می‌کنید که کد می‌نویسد. سریع به نظر می‌رسد. سپس متوجه می‌شوید که عامل چیز اشتباهی ساخته است. یک ساعت وقت صرف اصلاح آن می‌کنید.

مشکل عامل در نوشتن کد نبود؛ مشکل در درک قصد و نیت شما بود.

توسعه مبتنی بر مشخصات (Spec-driven development) این مشکل را حل می‌کند. به جای درخواست مستقیم برای کد، ابتدا یک مشخصات (spec) ایجاد می‌کنید. این مشخصات یک برنامه مکتوب است. شما برنامه را اصلاح می‌کنید تا زمانی که درست شود. تنها پس از آن است که اجازه می‌دهید عامل شروع به ساخت کند.

ابزارهای جدیدی مانند AWS Kiro و GitHub spec-kit این کار را آسان می‌کنند. اما این ایده قدیمی است؛ این فقط یک مهندسی خوب است.

یک مشخصات خوب سه بخش دارد:

• نیازمندی‌ها (Requirements): ویژگی چه کاری انجام می‌دهد و چگونه موفقیت را اندازه‌گیری کنیم. این بخش رفتار را توصیف می‌کند، نه کد را. • طراحی (Design): برنامه فنی. این شامل معماری، مدل‌های داده و محدودیت‌ها می‌شود. • وظایف (Tasks): واحدهای کوچک و قابل تست. این‌ها به قدری ساده هستند که یک عامل بتواند آن‌ها را در یک مرحله تمام کند.

هر بخش، بخش بعدی را تغذیه می‌کند. نیازمندی‌ها، طراحی را هدایت می‌کنند. طراحی، وظایف را ایجاد می‌کند. وظایف، عامل را هدایت می‌کنند.

در گذشته، نوشتن کد کند بود. نوشتن مشخصات مثل اتلاف وقت به نظر می‌رسید. اکنون، هوش مصنوعی کد را در چند دقیقه می‌نویسد. گلوگاه دیگر تایپ کردن نیست؛ گلوگاه، تصمیم‌گیری دقیق درباره اینکه دقیقاً چه چیزی ساخته شود، است.

یک مشخصات، اشتباهات شما را به جای ارزان‌تری منتقل می‌کند. اصلاح یک جمله اشتباه در یک سند آسان است، اما اصلاح یک پیاده‌سازی اشتباه در یک پایگاه کد (codebase) هزینه‌بر است.

بازبینی کد سخت است. شما باید آنچه را که نویسنده قصد داشته، مهندسی معکوس کنید. بازبینی یک مشخصات آسان است. شما قبل از اینکه کدی وجود داشته باشد، بر سر هدف و نیت توافق می‌کنید.

این روش همچنین به مقیاس‌پذیری شما کمک می‌کند. می‌توانید وظایف مختلفی را به عامل‌های مختلف بدهید. مشخصات مانند یک قرارداد عمل می‌کند تا آن‌ها را هم‌سو نگه دارد.

این رویکرد همیشه پاسخ نهایی نیست.

  • برای اصلاحات کوچک، بیش از حد پیچیده است. برای یک تغییر تک‌خطی، مشخصات ننویسید.
  • مشخصات ممکن است قدیمی و بی‌ربط شوند. اگر کد تغییر کند اما مشخصات تغییر نکند، مشخصات به یک دروغ تبدیل می‌شود.
  • عامل‌ها همیشه اطاعت نمی‌کنند. مشخصات سردرگمی را کاهش می‌دهد، اما شما همچنان باید خروجی را بازبینی کنید.

از یک مشخصات استفاده کنید تا نیت خود را شفاف کنید. از آن استفاده کنید تا اشتباهات را زمانی که هنوز فقط کلمات هستند، شکار کنید.

Source: https://dev.to/jcamarate/what-is-spec-driven-development-with-ai-coding-agents-56mc

Optional learning community: https://t.me/GyaanSetuAi