هندسة المجال

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

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

في هندسة خطوط الإنتاج، كما هو محدد في معيار ISO26550:2015، تُستكمل هندسة المجال بهندسة التطبيقات التي تهتم بدورة حياة المنتجات الفردية المشتقة من خط الإنتاج. [ 1 ]

غاية

تهدف هندسة المجال إلى تحسين جودة منتجات البرمجيات المطورة من خلال إعادة استخدام مكونات البرمجيات. [ 2 ] تُظهر هندسة المجال أن معظم أنظمة البرمجيات المطورة ليست أنظمة جديدة، بل هي بالأحرى نسخ معدلة من أنظمة أخرى ضمن نفس المجال. [ 3 ] ونتيجة لذلك، يمكن للشركات، من خلال هندسة المجال، تعظيم أرباحها وتقليل وقت طرح منتجاتها في السوق باستخدام المفاهيم والتطبيقات من أنظمة البرمجيات السابقة وتطبيقها على النظام المستهدف. [ 2 ] [ 4 ] ويتضح انخفاض التكلفة حتى خلال مرحلة التنفيذ. فقد أظهرت إحدى الدراسات أن استخدام لغات خاصة بالمجال سمح بتقليل حجم الكود، من حيث عدد الدوال وعدد الرموز ، بأكثر من 50%، وتقليل إجمالي عدد أسطر الكود بنحو 75%. [ 5 ]

يركز هندسة المجال على توثيق المعرفة المكتسبة خلال عملية هندسة البرمجيات . ومن خلال تطوير عناصر قابلة لإعادة الاستخدام، يمكن إعادة استخدام المكونات في أنظمة برمجية جديدة بتكلفة منخفضة وجودة عالية. [ 6 ] ولأن هذا ينطبق على جميع مراحل دورة تطوير البرمجيات ، فإن هندسة المجال تركز أيضًا على المراحل الرئيسية الثلاث: التحليل والتصميم والتنفيذ، بالتوازي مع هندسة التطبيقات. [ 7 ] وهذا لا ينتج عنه مجموعة من مكونات تنفيذ البرمجيات ذات الصلة بالمجال فحسب، بل ينتج عنه أيضًا متطلبات وتصاميم قابلة لإعادة الاستخدام والتكوين. [ 8 ]

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

المراحل

هندسة المجال مقارنةً بهندسة التطبيقات. تُغذي مخرجات كل مرحلة من مراحل هندسة المجال المراحل اللاحقة من هندسة المجال، بالإضافة إلى المراحل المقابلة في هندسة التطبيقات.

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

تحليل المجال

يُستخدم تحليل المجال لتحديد المجال، وجمع المعلومات عنه، وإنتاج نموذج له . [ 11 ] ويهدف تحليل المجال ، من خلال استخدام نماذج الميزات (التي صُممت في الأصل كجزء من منهجية تحليل المجال الموجهة نحو الميزات )، إلى تحديد النقاط المشتركة والنقاط المتغيرة في المجال. [ 12 ] وبفضل تحليل المجال، يُصبح من الممكن تطوير متطلبات وهياكل قابلة للتكوين ، بدلاً من التكوينات الثابتة التي تُنتجها منهجية هندسة التطبيقات التقليدية. [ 13 ]

يختلف تحليل المجال اختلافًا جوهريًا عن هندسة المتطلبات ، ولذا فإن الأساليب التقليدية لاستخلاص المتطلبات غير فعّالة في تطوير متطلبات قابلة للتكوين كما هو الحال في نموذج المجال. ولتطبيق هندسة المجال بفعالية، يجب مراعاة إعادة الاستخدام في المراحل المبكرة من دورة حياة تطوير البرمجيات . ومن خلال اختيار الميزات من نماذج الميزات المطوّرة، تتم مراعاة إعادة استخدام التقنية في وقت مبكر جدًا، ويمكن تطبيقها بشكل مناسب طوال عملية التطوير. [ 14 ]

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

ينتج عن تحليل المجال في المقام الأول نموذج مجال ، يُمثل الخصائص المشتركة والمتغيرة للأنظمة ضمن هذا المجال. [ 11 ] يُساعد نموذج المجال في إنشاء البنى والمكونات بطريقة قابلة للتكوين، حيث يُشكل أساسًا لتصميم هذه المكونات. [ 16 ] لا يقتصر نموذج المجال الفعال على تضمين السمات المتغيرة والمتسقة في المجال فحسب، بل يُحدد أيضًا المصطلحات المستخدمة فيه، ويُعرّف المفاهيم والأفكار والظواهر داخل النظام. [ 11 ] [ 17 ] تُفكك نماذج السمات المفاهيم إلى سماتها الإلزامية والاختيارية لإنتاج مجموعة كاملة من المتطلبات القابلة للتكوين. [ 18 ]

تصميم المجال

تعتمد هندسة المجال على نموذج المجال المُنتَج خلال مرحلة تحليل المجال، وتهدف إلى إنتاج بنية عامة تتوافق معها جميع الأنظمة ضمن المجال. [ 19 ] وكما تستخدم هندسة التطبيقات المتطلبات الوظيفية وغير الوظيفية لإنتاج تصميم، فإن مرحلة تصميم المجال في هندسة المجال تعتمد على المتطلبات القابلة للتكوين التي طُوِّرت خلال مرحلة تحليل المجال، وتُنتج حلاً معياريًا قابلاً للتكوين لمجموعة الأنظمة. يهدف تصميم المجال إلى إنتاج أنماط معمارية تُعالج مشكلة مشتركة بين الأنظمة ضمن المجال، على الرغم من اختلاف تكوينات المتطلبات. [ 20 ] بالإضافة إلى تطوير الأنماط خلال تصميم المجال، يجب على المهندسين أيضًا الحرص على تحديد نطاق النمط ومدى أهمية السياق بالنسبة له. يُعدّ تحديد السياق أمرًا بالغ الأهمية: فكثرة السياق تؤدي إلى عدم قابلية تطبيق النمط على العديد من الأنظمة، وقلة السياق تؤدي إلى عدم كفاية قوة النمط ليكون مفيدًا. [ 21 ] يجب أن يكون النمط المفيد متكررًا وعالي الجودة. [ 22 ]

يهدف تصميم المجال إلى تلبية أكبر قدر ممكن من متطلباته مع الحفاظ على المرونة التي يوفرها نموذج الميزات المُطوَّر. ينبغي أن تكون البنية مرنة بما يكفي لتلبية احتياجات جميع الأنظمة داخل المجال، وفي الوقت نفسه صلبة بما يكفي لتوفير إطار عمل متين يُبنى عليه الحل. [ 23 ]

تنفيذ المجال

يُعدّ تنفيذ المجال بمثابة إنشاء عملية وأدوات لتوليد برنامج مخصص في المجال بكفاءة.

نقد

تعرضت هندسة المجال لانتقادات بسبب تركيزها المفرط على "الهندسة لإعادة الاستخدام" أو "الهندسة مع إعادة الاستخدام" لميزات البرمجيات العامة بدلاً من التركيز على "الهندسة للاستخدام" بحيث يتم دمج رؤية الفرد للعالم أو لغته أو سياقه في تصميم البرمجيات. [ 24 ]

انظر أيضاً

مراجع

مصادر