ما هو التطوير القائم على المواصفات (Spec-Driven Development)؟

تبدأ معظم عمليات البرمجة باستخدام الذكاء الاصطناعي بنفس الطريقة. تعطي الوكيل (agent) أمراً قصيراً، وتراقبه وهو يكتب الكود. يبدو الأمر سريعاً، ثم تدرك أن الوكيل قد بنى الشيء الخطأ، فتقضي ساعة كاملة في إصلاحه.

لم يواجه الوكيل صعوبة في كتابة الكود، بل واجه صعوبة في فهم قصدك.

يعالج التطوير القائم على المواصفات (Spec-driven development) هذه المشكلة. فبدلاً من كتابة أوامر لإنشاء الكود، تقوم أولاً بإنشاء مواصفات (spec). هذه المواصفات هي عبارة عن خطة مكتوبة، تقوم بتصحيحها حتى تصبح صحيحة، وعندها فقط تسمح للوكيل بالبدء في البناء.

تجعل الأدوات الجديدة مثل AWS Kiro و GitHub spec-kit هذا الأمر سهلاً. لكن الفكرة قديمة؛ إنها مجرد هندسة برمجية جيدة.

تتكون المواصفات الجيدة من ثلاثة أجزاء:

• المتطلبات (Requirements): ما تفعله الميزة وكيفية قياس النجاح. هذا يصف السلوك، وليس الكود. • التصميم (Design): الخطة التقنية. وتشمل البنية التحتية (architecture)، ونماذج البيانات (data models)، والقيود (constraints). • المهام (Tasks): وحدات صغيرة قابلة للاختبار. وهي بسيطة بما يكفي ليتمكن الوكيل من إنجازها دفعة واحدة.

كل جزء يغذي الجزء الذي يليه. المتطلبات توجه التصميم. التصميم ينشئ المهام. والمهام توجه الوكيل.

في الماضي، كانت كتابة الكود بطيئة. وكان كتابة المواصفات يبدو وكأنه إضاعة للوقت. أما الآن، فالذكاء الاصطناعي يكتب الكود في دقائق. لم يعد "عنق الزجاجة" هو الكتابة، بل أصبح في تحديد ما يجب بناؤه بالضبط.

تنقل المواصفات أخطاءك إلى مكان "رخيص". فجملة خاطئة في مستند يسهل تصحيحها، بينما التنفيذ الخاطئ في قاعدة الكود (codebase) مكلف للغاية لإلغائه.

مراجعة الكود أمر صعب، إذ يتعين عليك إجراء هندسة عكسية لما قصده المؤلف. أما مراجعة المواصفات فهي سهلة، حيث تتفقون على القصد قبل وجود أي كود.

تساعدك هذه الطريقة أيضاً على التوسع. يمكنك إعطاء مهام مختلفة لوكلاء مختلفين. وتعمل المواصفات كعقد للحفاظ على توافقهم.

هذا النهج ليس هو الحل دائماً.

  • إنه مبالغ فيه للإصلاحات الصغيرة. لا تكتب مواصفات لتغيير سطر واحد.
  • قد تصبح المواصفات قديمة. إذا تغير الكود ولم تتغير المواصفات، تصبح المواصفات غير دقيقة.
  • الوكلاء لا يطيعون دائماً. المواصفات تقلل من الارتباك، ولكن لا يزال يتعين عليك مراجعة المخرجات.

استخدم المواصفات لجعل قصدك واضحاً. استخدمها لاكتشاف الأخطاء بينما لا تزال مجرد كلمات.

المصدر: https://dev.to/jcamarate/what-is-spec-driven-development-with-ai-coding-agents-56mc

مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi