عنوان:

‫تعیین شفاف «تعریف انجام‌شدن کار» (Definition of Done) برای هدایت GitHub Copilot


نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۵/۲۹ ۱۳:۰۹
آدرس: www.dntips.ir
یکی از بزرگ‌ترین دلایل ناتمام ماندن یا بی‌کیفیت بودن خروجی‌های هوش مصنوعی، ارسال دستوراتی با اهداف باز مانند «ویژگی X را پیاده‌سازی کن» است. هنگامی که یک تسک بدون تعریف معیارهای شفاف پذیرش (Acceptance Criteria) ارسال می‌شود، Copilot نمی‌داند نقطه توقف کجاست؛ در نتیجه ممکن است به تولید یک کد ناقص، بدون تست، فاقد مدیریت خطا یا ناقض استانداردهای پروژه بسنده کند. تعیین یک تعریف مشخص برای انجام کار (Definition of Done - DoD) به هوش مصنوعی یک هدف عینی، قابل‌سنجش و محدود می‌دهد. کیفیت خروجی ابزارهای هوش مصنوعی دقیقاً به وضوح معیارهای پذیرش شما وابسته است.

ساختار پرامپت مهندسی با معیارهای پذیرش شفاف

هنگام واگذاری پیاده‌سازی یک قابلیت یا بازنویسی یک ماژول، پرامپت را بر اساس یک چک‌لیست DoD چندمرحله‌ای تنظیم کنید:
قابلیت جدید را با رعایت دقیق «تعریف انجام‌شدن کار» (Definition of Done) زیر پیاده‌سازی کن:
معیارها و الزامات تحویل کار (DoD):
۱. صحت کامپایل و بیلد: کدهای جدید و تغییریافته بدون هیچ‌گونه خطا یا هشدار کامپایلر (به‌ویژه خطاهای NRT و CS8602) کامپایل شوند (dotnet build).
۲. پایداری رفتار قبلی: رفتارهای موجود سیستم و قراردادهای API قبلی بدون تغییر حفظ شوند (عدم ایجاد Breaking Change).
۳. پوشش آزمون (Unit & Integration Tests): تست‌های واحد برای مسیر موفقیت (Happy Path) و حالت‌های مرزی (Edge Cases) نوشته شوند و در صورت نیاز تست‌های یکپارچگی به‌روزرسانی گردند.
۴. انتشار کامل توکن لغو: پارامتر CancellationToken در تمامی مرزهای I/O، متدهای سرویس و کوئری‌های دیتابیس منتقل شود.
۵. مستندسازی APIها: متدها و اینترفیس‌های عمومی دارای XML Documentation ساختاریافته و مبتنی بر قرارداد باشند.
۶. عدم دستکاری فایل‌های نامرتبط: تغییرات تنها محدود به ماژول هدف باشد و فایل‌های دیگر پروژه ویرایش نشوند.
۷. انطباق با معماری پروژه: الگوهای تزریق وابستگی، ساختار DTOها و شیوه مدیریت خطای موجود در مخزن رعایت شوند.
۸. اجرای آزمون‌ها: پروژه تست مربوطه با موفقیت اجرا شود (dotnet test).
۹. گزارش پایانی: خلاصه فایل‌های تغییریافته و نتیجه اجرای تست‌ها در انتها گزارش شود.

اجزای کلیدی یک Definition of Done مهندسی در پروژه‌های .NET

یک DoD جامع برای کارهای توسعه با هوش مصنوعی باید چهار ستون اصلی را پوشش دهد:
صحت فنی (Technical Correctness):
    • کامپایل بی‌نقص بدون سرکوب هشدارهای Nullable با !
    • استفاده از الگوهای Async استاندارد بدون .Result یا .Wait()
    • اجرای بهینه در لایه داده با استفاده از .AsNoTracking() و Projection

تاب‌آوری و کنترل جریان (Resilience & Control):
    • انتقال پیوسته CancellationToken
    • اعتبارسنجی ورودی‌ها با FluentValidation یا Guard Clauses
    • مدیریت خطا با ساختار استاندارد ProblemDetails

تضمین کیفیت و آزمون‌پذیری (Quality Assurance):
    • حضور تست‌های xUnit با پوشش حالات صفر، مقادیر منفی، مقادیر نال و همزمانی
    • استفاده از WebApplicationFactory برای تست‌های یکپارچگی اندپوینت‌ها

نگه‌داری و مرزبندی (Maintainability & Scope):
    • افزودن XML Comments به امضای کلاس‌ها و متدهای عمومی
    • دست‌نخورده ماندن فایل‌های خارج از اسکوپ تسک

نمونه توالی اجرا توسط Copilot بر مبنای DoD

هنگامی که Copilot چنین چارچوبی دریافت می‌کند، فرآیند را از یک «تکمیل خودکار متن» به یک «پایپ‌لاین توسعه گام‌به‌گام» ارتقا می‌دهد:
[پیاده‌سازی لاجیک قابلیت و DTOها]
              │
              ▼
[اعمال CancellationToken و مستندات XML]
              │
              ▼
[نگارش تست‌های واحد با xUnit و FluentAssertions]
              │
              ▼
[اجرای dotnet test و ارزیابی نتیجه]
              │
              ▼
[ارائه گزارش فایل‌های ویرایش‌شده و تأیید DoD]

قاعده کلیدی در توسعه با دستیارهای هوش مصنوعی

استفاده اثربخش از GitHub Copilot با درخواست‌های مبهم شکل نمی‌گیرد. با تعیین دقیق معیارهای پذیرش (Acceptance Criteria) و تعریف انجام کار (DoD)، هوش مصنوعی را از یک تولیدکننده پیش‌نویس اولیه به یک مهندس مجری دقیق تبدیل کنید که تمام مراحل تا تحویل نهایی و آزموده را بر عهده می‌گیرد.