مقدمة في تحليل النظم

التحليل مقابل التصميم مقابل التطبيق

18 دقيقة الدرس 7 من 10

التحليل مقابل التصميم مقابل التطبيق

ثلاث كلمات — التحليل والتصميم والتطبيق — تظهر في كل خطة مشروع، غير أنها كثيرًا ما تُلتبس أو تُدمج معًا أو تُتجاوز كليًا. إن فهم أين تنتهي إحداها وتبدأ الأخرى يُعدّ من أكثر المهارات العملية التي يمكن أن يمتلكها المحلل. إذا أخطأت هنا بنيت الشيء الخطأ بإتقان؛ وإذا أجدت بنيت كل مُخرَج وصلة منطقية بما قبله.

أبسط طريقة للتمييز هي من خلال سؤالين:

  • التحليل يجيب على: ماذا يحتاج النظام أن يفعل؟
  • التصميم يجيب على: كيف سيفعله النظام؟
  • التطبيق يجيب على: كيف نبني هذا النظام ونسلّمه؟

هذه ليست مراحل على مخطط غانت فحسب — بل هي أنماط تفكير. حتى في سبرينت رشيق، تحدث الأنواع الثلاثة؛ والفرق يكمن في النطاق والجمهور المستهدف من كل منها.

The Three Phases: Analysis, Design, Implementation Analysis WHAT the system needs to do Design HOW the system will do it Implementation HOW we build and deliver it Specs Blueprint Requirements Doc Use Cases / BRD Architecture Diagram DB Schema / UI Mockups Source Code Test Results / Deployment From Problem to Working System Each phase produces artifacts that feed the next
المراحل الثلاث: التحليل (ماذا؟)، التصميم (كيف سيعمل؟)، التطبيق (كيف يُبنى؟).

التحليل: تحديد الماذا

التحليل يدور كليًا حول فهم المشكلة قبل التفكير في أي تقنية للحل. يجري المحلل مقابلات مع أصحاب المصلحة، ويوثّق سير العمل، ويستكشف القيود، ويُنتج صياغة دقيقة لما يجب أن يُحقّقه النظام. المُخرَج الرئيسي هو وثيقة المتطلبات — غالبًا مرفقة بحالات الاستخدام أو قصص المستخدم.

لنأخذ نظام حجز مواعيد في عيادة طبية. في مرحلة التحليل يسأل المحلل: من يحجز المواعيد؟ هل يستطيع المريض الإلغاء عبر الإنترنت؟ كم يسبق الحجزُ موعدَه زمنيًا؟ ماذا يحدث حين يتغيب طبيب؟ لا يتعلق أيٌّ من هذه الأسئلة بقواعد البيانات أو لغات البرمجة أو المنصات السحابية. إنها تتعلق فقط بالسلوك. متطلب جيد من هذه المرحلة يبدو هكذا:

REQ-14: The system shall allow a patient to cancel a confirmed appointment up to 2 hours before the scheduled time. A cancellation notification shall be sent to both the patient and the assigned doctor within 60 seconds.

لاحظ أن REQ-14 لا يذكر شيئًا عن كيفية تخزين الإلغاءات، أو خدمة البريد الإلكتروني المستخدمة، أو شكل نقطة نهاية API. هذا مقصود — فمهمة المحلل الحفاظ على حياد المتطلبات تجاه التقنية كي يتمتع المصمّمون بحرية اتخاذ أفضل قرارات الكيف.

فكرة محورية: أي متطلب يذكر تقنية بعينها (مثل: "يجب أن يستخدم النظام PostgreSQL لتخزين المواعيد") هو في الحقيقة قرار تصميم مُهرَّب إلى التحليل. ضعه تحت الضوء، اطعن فيه، وأعد صياغته بمصطلحات سلوكية ما لم يكن ثمة قيد تجاري حقيقي يفرض تلك التقنية.

التصميم: تحديد الكيف

يبدأ التصميم بوثيقة المتطلبات ويسأل: بناءً على هذه القيود والأهداف، كيف نبني نظامًا يحقق هذه المتطلبات؟ هذه المرحلة تُنتج مخططات المعمارية، ومخططات قواعد البيانات، وعقود API، والنماذج الأولية للواجهة، ومواصفات المكونات. التصميم هو المرحلة التي تُتخذ فيها الخيارات التقنية — وتُبرَّر.

لنظام الحجز ذاته، قد يقرر فريق التصميم استخدام تطبيق ويب ثلاثي الطبقات، واختيار قاعدة بيانات علائقية، وتعريف نقطة نهاية REST للإلغاء POST /appointments/{id}/cancel، وتصميم قالب بريد إلكتروني للإلغاء. كل قرار يجب أن يكون مرتبطًا بمتطلب واحد على الأقل.

اختبار ذهني مفيد: إذا لم يمكن ربط قرار بمتطلب ما، فإما أنه معيار معقول افتراضي (وثّقه)، أو إفراط في التطوير غير مطلوب (اشكك فيه)، أو متطلب مخفي فُوِّت في التحليل (اكشفه وأضفه رسميًا).

التطبيق: البناء والتسليم

التطبيق هو المرحلة التي يكتب فيها المطورون الكود، ويُنشئ مسؤولو قواعد البيانات المخططات، ويكتب المختبرون سكربتات الاختبار، ويُهيّئ مهندسو DevOps خطوط الإنتاج. المُدخَل هو مواصفة التصميم؛ والمُخرَج هو نظام يعمل وقد اجتاز الاختبارات. التطبيق يكشف عن ثغرات في التصميم، والتصميم يكشف عن ثغرات في التحليل — ولهذا تُعدّ حلقات التغذية الراجعة ضرورية.

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

أين ينتهي التحليل ويبدأ التصميم؟

يُوصف الحدّ في الغالب بأنه الخط الفاصل بين النماذج المنطقية والنماذج المادية:

  • المنطقي (التحليل): مخطط تدفق البيانات الذي يُظهر أن "بيانات طلب العميل تتدفق إلى عملية التنفيذ" — لا جداول، لا مفاتيح، لا لغة برمجة.
  • المادي (التصميم): مخطط علاقة الكيانات الذي يُحدد جدول orders وأعمدته ومفاتيحه الأجنبية وفهارسه.

حين يرسم المحلل مربعًا بعنوان "معالجة الطلب" وسهمًا بعنوان "بيانات الطلب"، فذلك تحليل. وحين يرسم المصمم مربعًا بعنوان OrderService مع توقيع دالة processOrder(orderId: UUID): OrderResult، فذلك تصميم.

Logical vs Physical: Where Analysis Ends and Design Begins ANALYSIS (Logical) DESIGN (Physical) Order Processing Order Data Store Customer Portal Order Save Data Flow Diagram (no technology decisions) OrderService processOrder(id: UUID) cancelOrder(id: UUID) getOrderStatus(id) orders (table) id UUID PK customer_id FK status ENUM persists Component + Schema Design (technology decisions made)
يسار: مخرجات التحليل المنطقي (مخطط تدفق البيانات) — لا قرارات تقنية. يمين: مخرجات التصميم المادي (مكوّن ومخطط قاعدة بيانات) — تُتخذ القرارات التقنية هنا.

لماذا يهم هذا الحدّ في الممارسة العملية؟

حين تُضبَّب الحدود بين المراحل، تظهر مشكلات متكررة يمكن التنبؤ بها:

  • الارتهان المبكر للتقنية: المحلل الذي يُحدد "يجب أن يستخدم النظام React ومعمارية الخدمات المصغّرة" يُلغي خيارات التصميم قبل أن يكون الفريق قد فهم المشكلة تمامًا. وإذا تغيرت المتطلبات، قد يصبح القيد التقني عقبة.
  • تضخم المتطلبات: المطورون الذين يقفزون إلى التطبيق قبل اكتمال التحليل يقضون أسابيع في بناء ميزات، ثم يكتشفون أن صاحب المصلحة أراد شيئًا مختلفًا. إعادة العمل في مرحلة التطبيق تكلّف من خمسة إلى عشرة أضعاف ما تكلّفه في مرحلة التحليل.
  • غياب إمكانية التتبع: حين لا يمكن ربط قرارات التصميم بمتطلبات محددة، يعجز المدققون والمختبرون والأعضاء الجدد في الفريق عن التحقق من أن النظام يفعل ما كان مقررًا له.
أفضل الممارسات: في كل اجتماع لمتابعة المشروع، اسأل "هل نحن في وضع التحليل أم التصميم أم التطبيق الآن؟" حين يعطي أعضاء الفريق إجابات مختلفة عن بند واحد في جدول الأعمال، فقد وجدت فجوة في التنسيق تستحق المعالجة.

التداخل طبيعي — الالتباس لا

في الواقع العملي، لا سيما في المشاريع الرشيقة، تتداخل المراحل. قد يكون الفريق في مرحلة تحليل للميزة القادمة بينما يُطبّق الميزة الحالية. هذا صحي. الضار هو الخلط بين نوع السؤال الذي يُجاب عليه. اجتماع مراجعة التصميم لا ينبغي أن يناقش ما إذا كانت ميزة الإلغاء مطلوبة (تحليل)؛ بل يناقش ما إذا كان يُستخدم علم حذف ناعم أو جدول إلغاءات منفصل (تصميم).

بالنسبة لمتجر إلكتروني يضيف خيار "اشتر الآن وادفع لاحقًا"، يجب على المحلل أولًا تحديد: أي المستخدمين مؤهلون؟ ما الحد الأقصى لقيمة الطلب؟ أي الدول مدعومة؟ كيف تُعالَج المدفوعات الفاشلة؟ فقط حين تحظى هذه الأسئلة بإجابات موقَّعة ومعتمدة، يمنطق أن يشرع فريق التصميم في تقييم واجهات برمجة بوابات الدفع، وتعديلات مخطط جدول orders، وتدفقات واجهة المستخدم.

مشكلة شائعة: تسمية الاجتماع "جمع المتطلبات" وقضاء معظم الوقت في النقاش حول الخيارات التقنية يُهدر طاقة المحلل، وكثيرًا ما ينتج متطلبات رديئة الصياغة. احتفظ بالنقاشات التقنية للمرحلة التي تكون فيها صورة المطلوب مكتملة فعلًا — مرحلة التصميم.

النقاط الرئيسية

  • التحليل = ماذا؟ التصميم = كيف سيعمل؟ التطبيق = كيف يُبنى؟
  • المتطلبات يجب أن تكون محايدة تقنيًا؛ مخرجات التصميم محددة تقنيًا.
  • الانتقال من النموذج المنطقي إلى المادي يمثّل الحدّ بين التحليل والتصميم.
  • كل قرار تصميمي يجب أن يُتتبّع إلى متطلب واحد على الأقل.
  • إعادة العمل في التحليل رخيصة؛ إعادة العمل في التطبيق مكلفة.
  • تتداخل المراحل في السياقات الرشيقة، لكن نوع السؤال المُجاب عليه يجب أن يكون واضحًا دائمًا.