التحليل مقابل التصميم مقابل التطبيق
التحليل مقابل التصميم مقابل التطبيق
ثلاث كلمات — التحليل والتصميم والتطبيق — تظهر في كل خطة مشروع، غير أنها كثيرًا ما تُلتبس أو تُدمج معًا أو تُتجاوز كليًا. إن فهم أين تنتهي إحداها وتبدأ الأخرى يُعدّ من أكثر المهارات العملية التي يمكن أن يمتلكها المحلل. إذا أخطأت هنا بنيت الشيء الخطأ بإتقان؛ وإذا أجدت بنيت كل مُخرَج وصلة منطقية بما قبله.
أبسط طريقة للتمييز هي من خلال سؤالين:
- التحليل يجيب على: ماذا يحتاج النظام أن يفعل؟
- التصميم يجيب على: كيف سيفعله النظام؟
- التطبيق يجيب على: كيف نبني هذا النظام ونسلّمه؟
هذه ليست مراحل على مخطط غانت فحسب — بل هي أنماط تفكير. حتى في سبرينت رشيق، تحدث الأنواع الثلاثة؛ والفرق يكمن في النطاق والجمهور المستهدف من كل منها.
التحليل: تحديد الماذا
التحليل يدور كليًا حول فهم المشكلة قبل التفكير في أي تقنية للحل. يجري المحلل مقابلات مع أصحاب المصلحة، ويوثّق سير العمل، ويستكشف القيود، ويُنتج صياغة دقيقة لما يجب أن يُحقّقه النظام. المُخرَج الرئيسي هو وثيقة المتطلبات — غالبًا مرفقة بحالات الاستخدام أو قصص المستخدم.
لنأخذ نظام حجز مواعيد في عيادة طبية. في مرحلة التحليل يسأل المحلل: من يحجز المواعيد؟ هل يستطيع المريض الإلغاء عبر الإنترنت؟ كم يسبق الحجزُ موعدَه زمنيًا؟ ماذا يحدث حين يتغيب طبيب؟ لا يتعلق أيٌّ من هذه الأسئلة بقواعد البيانات أو لغات البرمجة أو المنصات السحابية. إنها تتعلق فقط بالسلوك. متطلب جيد من هذه المرحلة يبدو هكذا:
لاحظ أن REQ-14 لا يذكر شيئًا عن كيفية تخزين الإلغاءات، أو خدمة البريد الإلكتروني المستخدمة، أو شكل نقطة نهاية API. هذا مقصود — فمهمة المحلل الحفاظ على حياد المتطلبات تجاه التقنية كي يتمتع المصمّمون بحرية اتخاذ أفضل قرارات الكيف.
التصميم: تحديد الكيف
يبدأ التصميم بوثيقة المتطلبات ويسأل: بناءً على هذه القيود والأهداف، كيف نبني نظامًا يحقق هذه المتطلبات؟ هذه المرحلة تُنتج مخططات المعمارية، ومخططات قواعد البيانات، وعقود API، والنماذج الأولية للواجهة، ومواصفات المكونات. التصميم هو المرحلة التي تُتخذ فيها الخيارات التقنية — وتُبرَّر.
لنظام الحجز ذاته، قد يقرر فريق التصميم استخدام تطبيق ويب ثلاثي الطبقات، واختيار قاعدة بيانات علائقية، وتعريف نقطة نهاية REST للإلغاء POST /appointments/{id}/cancel، وتصميم قالب بريد إلكتروني للإلغاء. كل قرار يجب أن يكون مرتبطًا بمتطلب واحد على الأقل.
اختبار ذهني مفيد: إذا لم يمكن ربط قرار بمتطلب ما، فإما أنه معيار معقول افتراضي (وثّقه)، أو إفراط في التطوير غير مطلوب (اشكك فيه)، أو متطلب مخفي فُوِّت في التحليل (اكشفه وأضفه رسميًا).
التطبيق: البناء والتسليم
التطبيق هو المرحلة التي يكتب فيها المطورون الكود، ويُنشئ مسؤولو قواعد البيانات المخططات، ويكتب المختبرون سكربتات الاختبار، ويُهيّئ مهندسو DevOps خطوط الإنتاج. المُدخَل هو مواصفة التصميم؛ والمُخرَج هو نظام يعمل وقد اجتاز الاختبارات. التطبيق يكشف عن ثغرات في التصميم، والتصميم يكشف عن ثغرات في التحليل — ولهذا تُعدّ حلقات التغذية الراجعة ضرورية.
في شركة لوجستية تُطلق وحدة تتبع طرود جديدة، قد يكتشف فريق التطبيق في منتصف السبرينت أن التصميم افترض منطقة زمنية واحدة، بينما تنص المتطلبات صراحةً على أن النظام سيعمل في ثلاث دول. هذا خلل في التصميم ناجم عن نقص في التحليل. الاستجابة الصحيحة هي التوقف، ومراجعة وثيقة التحليل، وتصحيح المتطلب، وتحديث التصميم، ثم استئناف التطبيق — لا إصلاح الكود صامتًا.
أين ينتهي التحليل ويبدأ التصميم؟
يُوصف الحدّ في الغالب بأنه الخط الفاصل بين النماذج المنطقية والنماذج المادية:
- المنطقي (التحليل): مخطط تدفق البيانات الذي يُظهر أن "بيانات طلب العميل تتدفق إلى عملية التنفيذ" — لا جداول، لا مفاتيح، لا لغة برمجة.
- المادي (التصميم): مخطط علاقة الكيانات الذي يُحدد جدول
ordersوأعمدته ومفاتيحه الأجنبية وفهارسه.
حين يرسم المحلل مربعًا بعنوان "معالجة الطلب" وسهمًا بعنوان "بيانات الطلب"، فذلك تحليل. وحين يرسم المصمم مربعًا بعنوان OrderService مع توقيع دالة processOrder(orderId: UUID): OrderResult، فذلك تصميم.
لماذا يهم هذا الحدّ في الممارسة العملية؟
حين تُضبَّب الحدود بين المراحل، تظهر مشكلات متكررة يمكن التنبؤ بها:
- الارتهان المبكر للتقنية: المحلل الذي يُحدد "يجب أن يستخدم النظام React ومعمارية الخدمات المصغّرة" يُلغي خيارات التصميم قبل أن يكون الفريق قد فهم المشكلة تمامًا. وإذا تغيرت المتطلبات، قد يصبح القيد التقني عقبة.
- تضخم المتطلبات: المطورون الذين يقفزون إلى التطبيق قبل اكتمال التحليل يقضون أسابيع في بناء ميزات، ثم يكتشفون أن صاحب المصلحة أراد شيئًا مختلفًا. إعادة العمل في مرحلة التطبيق تكلّف من خمسة إلى عشرة أضعاف ما تكلّفه في مرحلة التحليل.
- غياب إمكانية التتبع: حين لا يمكن ربط قرارات التصميم بمتطلبات محددة، يعجز المدققون والمختبرون والأعضاء الجدد في الفريق عن التحقق من أن النظام يفعل ما كان مقررًا له.
التداخل طبيعي — الالتباس لا
في الواقع العملي، لا سيما في المشاريع الرشيقة، تتداخل المراحل. قد يكون الفريق في مرحلة تحليل للميزة القادمة بينما يُطبّق الميزة الحالية. هذا صحي. الضار هو الخلط بين نوع السؤال الذي يُجاب عليه. اجتماع مراجعة التصميم لا ينبغي أن يناقش ما إذا كانت ميزة الإلغاء مطلوبة (تحليل)؛ بل يناقش ما إذا كان يُستخدم علم حذف ناعم أو جدول إلغاءات منفصل (تصميم).
بالنسبة لمتجر إلكتروني يضيف خيار "اشتر الآن وادفع لاحقًا"، يجب على المحلل أولًا تحديد: أي المستخدمين مؤهلون؟ ما الحد الأقصى لقيمة الطلب؟ أي الدول مدعومة؟ كيف تُعالَج المدفوعات الفاشلة؟ فقط حين تحظى هذه الأسئلة بإجابات موقَّعة ومعتمدة، يمنطق أن يشرع فريق التصميم في تقييم واجهات برمجة بوابات الدفع، وتعديلات مخطط جدول orders، وتدفقات واجهة المستخدم.
النقاط الرئيسية
- التحليل = ماذا؟ التصميم = كيف سيعمل؟ التطبيق = كيف يُبنى؟
- المتطلبات يجب أن تكون محايدة تقنيًا؛ مخرجات التصميم محددة تقنيًا.
- الانتقال من النموذج المنطقي إلى المادي يمثّل الحدّ بين التحليل والتصميم.
- كل قرار تصميمي يجب أن يُتتبّع إلى متطلب واحد على الأقل.
- إعادة العمل في التحليل رخيصة؛ إعادة العمل في التطبيق مكلفة.
- تتداخل المراحل في السياقات الرشيقة، لكن نوع السؤال المُجاب عليه يجب أن يكون واضحًا دائمًا.