هل تقوم بـ MDA (الهندسة المعمارية المعتمدة على النماذج) الآن؟إذا كان الأمر كذلك، ما هي الأدوات التي تستخدمها، وكيف يتم ذلك؟

StackOverflow https://stackoverflow.com/questions/696021

  •  22-08-2019
  •  | 
  •  

سؤال

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

يزعم البعض أن هذا النهج أكثر إنتاجية بعشر مرات، وهو كذلك بالفعل الطريقة سنقوم جميعًا ببناء البرمجيات خلال 10 سنوات.

ومع ذلك، كل هذا مجرد نظرية.أنا أتساءل ما هي النتائج عندما يلتقي المطاط بالطريق.كما أن الإصدار "الرسمي" من MDA هو من يا إلهي, ، ويبدو ثقيلا جدا.إنه يعتمد بشكل كبير على UML، والذي قد يعتبر جيدًا أو سيئًا اعتمادًا على من تسأل (أنا أميل إلى كلمة "سيئ").

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

لذا، أود أن أسمع من الأشخاص الذين يقومون بالفعل بـ MDA في الوقت الحالي ("رسمي" أم لا).ما هي الأدوات التي تستخدمها؟كيف يتم العمل بها؟ما مقدار الوعد النظري الذي تمكنت من تحقيقه؟هل ترى زيادة حقيقية في الفعالية بمقدار 10 أضعاف؟

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

إن عدم الرد على هذا السؤال أمر ينذر بالسوء إلى حد ما ...ربما سأدع ديكسترا حقل ذلك.

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

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

...

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

يمكن التمييز بين تيارين رئيسيين ، والسعي للحجر والسعي لإكسير.

يعتمد البحث عن الحجر على افتراض أن "أدوات البرمجة" لدينا ضعيفة للغاية.ومن الأمثلة على ذلك الاعتقاد بأن لغات البرمجة الحالية تفتقر إلى "الميزات" التي نحتاجها.PL/كنت واحدة من أكثر الأحجار المحتملة التي تم إنتاجها.ما زلت أتذكر الإعلان في Datamation ، 1968 ، والتي تعلن فيها Susie Mayer المبتسم باللون الكامل أنها حلت جميع مشاكل البرمجة الخاصة بها عن طريق التحول إلى PL/I.كان من المتوقع أيضًا أن يبتسم فقير سوزي ماير بعد بضع سنوات.وغني عن القول ، استمر البحث وفي الوقت المناسب تم إنتاج حجر محتمل في شكل ADA (خلف الستار الحديدي يشار إليه بشكل مدرك باسم PL/II).حتى أكثر علم التنجيم الأولية للمبتدئين يكفي للتنبؤ بأن ADA لن يكون آخر حجر من هذا النوع.

...

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

أقوم بإجراء بحثي المستقل في مجال تطوير البرمجيات المستندة إلى النماذج منذ عام 1999.لقد قمت أخيرًا بتطوير منهجية نمذجة عامة في عام 2006 وأطلقت عليها اسم ABSE (هندسة البرمجيات المستندة إلى الذرة).

لذا، فإن ABSE يعتمد على جانبين أساسيين:

  • البرمجة تدور حول تحليل المشكلة
  • كل شيء يمكن تمثيله على شجرة

بعض ميزات ABSE:

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

  • إنه عام بما يكفي ليتم تطبيقه على برامج المؤسسات، والألعاب، وإلكترونيات الطيران، والإنترنت، وأي مجال في الواقع.

  • لا تحتاج إلى أن تكون عالم صواريخ لتستخدمه بفعالية.ABSE متاح لـ "مجرد بشري مطور".لا يوجد تعقيد مثل ذلك الموجود في سلاسل الأدوات oAW/MDA/XMI/GMF/إلخ.

  • تم تصميم النموذج التعريفي الخاص به لدعم إنشاء التعليمات البرمجية بنسبة 100% من النموذج.لا حاجة لرحلة ذهابًا وإيابًا.يتم دعم مزيج التعليمات البرمجية المخصصة/التي تم إنشاؤها مباشرة بواسطة metamodel.

  • يمكن التلاعب بالنموذج بشكل متزامن.يمكن تطبيق سير العمل والتحكم في الإصدار (يلزم دعم الأداة).

قد يبدو الأمر وكأنه على الجانب المثالي، ولكن في الواقع تركت مرحلة البحث وأنا الآن في مرحلة تنفيذ IDE الذي يضع كل ما سبق موضع التنفيذ.أعتقد أنه سيكون لدي نموذج أولي أساسي جاهز في غضون أسابيع قليلة (حوالي نهاية أبريل).تم بناء IDE (المسمى AtomWeaver) من خلال ABSE، لذلك سيكون AtomWeaver أول إثبات لمفهوم منهجية ABSE.

لذلك، هذا ليس أسلوب MDA (لحسن الحظ!)، ولكنه على الأقل نهج يمكن التحكم فيه للغاية.باعتباري مخترع ABSE، فأنا متحمس لذلك بشكل مفهوم، ولكنني متأكد من أن تطوير البرمجيات المستندة إلى النماذج سيحصل على دفعة في عام 2009!

ابقوا متابعين...

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

يعد MDA الخاص بـ OMG مجرد نهج واحد، ويظهر أشخاص آخرون نجاحًا باستخدام اللغات الخاصة بالمجال (التي لا تستخدم UML للنمذجة).

المفتاح هو إنشاء تعليمات برمجية من النماذج وتحديث المولد الخاص بك إذا لم يكن يقوم بإنشاء ما تريده - وليس تعديل التعليمات البرمجية الخاصة بك.لقد كانت الأدوات المتخصصة التي تساعدك على القيام بذلك موجودة منذ سنوات، ولكن الاهتمام بهذا النهج زاد على مدى السنوات الخمس الماضية أو نحو ذلك بسبب انتقال Microsoft إلى هذا المجال ومن خلال مشاريع مفتوحة المصدر مثل openArchitectureWare في عالم Eclipse.

أقوم بتشغيل موقعين: www.modeldrivensoftware.net و www.codegeneration.net حيث يمكنك الحصول على مزيد من المناقشات والمقابلات والمقالات وخيارات الأدوات حول هذه المواضيع.

لقد بدأت العمل مع التقنيات المعتمدة على النماذج وخطوط المشتركين الرقمية (DSL) في عام 1997، وأنا متحمس أكثر فأكثر بشأن MDE.

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

لكنني لا أتبع معيار MDA لعدة أسباب.يتمثل وعد MDA في التعبير عن برنامجك في نموذج PIM، والحصول على القدرة على تحويله تلقائيًا إلى حزمة تقنية واحدة أو أكثر (PSMs).

لكن :

  • من الذي يحتاج إلى استهداف العديد من الأكوام التقنية في الحياة الواقعية؟من الذي يحتاج إلى استهداف بنية واحدة ومحددة جيدًا؟
  • يكمن سحر MDA في تحويل PIM->PSM، ولكن تحويل model2model بطريقة تكرارية وتدريجية أمر صعب:
    • يعد model2model أكثر تعقيدًا من model2text في التنفيذ والتصحيح والصيانة.
    • نظرًا لأنه نادرًا ما يكون من الممكن إنشاء برنامج بنسبة 100%، فيجب إضافة التفاصيل إلى نموذج PSM الناتج، والحفاظ على التحويل بعد التحويل.وهذا يعني عملية دمج (ثلاثية الاتجاه، لتذكر التفاصيل المضافة).وعند التعامل مع النماذج، يكون دمج الرسوم البيانية للكائنات أكثر تعقيدًا بكثير من دمج النص (الذي يعمل بشكل جيد).
    • عليك أن تتعامل مع نموذج PSM (أي نموذج يبدو قريبًا جدًا من كود المصدر النهائي الذي تم إنشاؤه).إنه أمر مثير للاهتمام بالنسبة لبائع الأدوات، حيث يمكن بيع ملفات تعريف PSM الجاهزة للاستخدام ومولدات الأكواد المرتبطة بها وشحنها باستخدام أداة MDA.

أنا أؤيد استراتيجيات MDE حيث يكون PIM عبارة عن DSL يتحدث عن البنية المنطقية الخاصة بك (بشكل مستقل عن أي حزمة تقنية)، ويقوم بإنشاء الكود من PIM هذا باستخدام مولد كود مخصص ومحدد.

الايجابيات :

  • ليس عليك التعامل مع نموذج PSM معقد وتقني.لديك الرمز الخاص بك بدلا من ذلك.
  • باستخدام تقنيات DSL، أصبح نظام PIM أكثر كفاءة واستدامة وتعبيرًا وسهل التفسير بواسطة مولدات التعليمات البرمجية والمستندات.تبقى النماذج بسيطة ودقيقة.
  • إنه يفرض عليك الالتزام بتحديد متطلباتك ومفاهيمك المعمارية في وقت مبكر جدًا (نظرًا لأنه نموذج PIM الخاص بك)، بشكل مستقل عن أي مجموعة تقنية.عادةً ما يتعلق الأمر بتحديد أنواع مختلفة من البيانات والخدمات ومكونات واجهة المستخدم، مع تعريفها وإمكانياتها وميزاتها (السمات والروابط لمفاهيم أخرى؛...).
  • الكود الذي تم إنشاؤه يناسب احتياجاتك، لأنه مخصص.ويمكنك جعل الأمر أكثر بساطة إذا قام الكود الذي تم إنشاؤه بتوسيع بعض فئات إطار العمل الإضافية التي يتم صيانتها يدويًا.
  • يمكنك الاستفادة من المعرفة بعدة طرق متعامدة:
    • تستفيد النماذج من الوظائف / الأعمال
    • تعمل مولدات الأكواد على الاستفادة من قرارات رسم الخرائط الفنية بدءًا من المكونات المعمارية المنطقية الخاصة بك إلى مجموعة تقنية معينة.
    • يستفيد PIM DSL من تعريف البنية المنطقية الخاصة بك
  • باستخدام PIM الموجه نحو البنية المنطقية، من الممكن إنشاء جميع التعليمات البرمجية التقنية والملفات الأخرى غير البرمجية (التكوينات، الخصائص، ...).يمكن للمطورين التركيز على تنفيذ وظائف الأعمال التي لا يمكن التعبير عنها بشكل كامل باستخدام النموذج، وعادةً لا يتعين عليهم التعامل مع المجموعة الفنية بعد الآن.
  • تدور عمليات الدمج حول ملفات التعليمات البرمجية المصدرية المسطحة، وهذا يعمل بشكل جيد.
  • لا يزال بإمكانك تحديد العديد من مولدات الأكواد إذا كنت تستهدف عدة مجموعات تقنية.

سلبيات :

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

يمكن تنفيذ هذا النهج المحدد أعلى مصمم نماذج UML القابل للتوسيع باستخدام ملفات تعريف UML، أو باستخدام محررات نماذج محددة (نصية أو رسومية).

يمكن تلخيص الفرق الكبير بين MDA و MDE على النحو التالي:

  • MDA عبارة عن مجموعة من الأدوات واللغات للأغراض العامة، مما يوفر ملفات تعريف وأدوات جاهزة للاستخدام لتلبية احتياجات الجميع.يعد هذا مثاليًا لبائعي الأدوات، لكنني أظن أن احتياجات الجميع وسياقاتهم مختلفة.
  • باستخدام DSL والأدوات الخاصة بـ MDE +، تحتاج إلى بعض المطورين الإضافيين المهرة الذين يعتمدون على النماذج والذين سيحافظون على مصنع البرامج المخصص الخاص بك (مصمم النماذج، وامتدادات المصمم، والمولدات...)، ولكنك تستفيد من كل مكان وتدير نماذج بسيطة ودقيقة ومستدامة للغاية.

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

نحن نستخدم MDA وEMF كأدوات.إنه يوفر علينا الكثير من ساعات العمل من خلال إنشاء التعليمات البرمجية بدلاً من الترميز اليدوي.إنه يتطلب مؤهلات عالية في التحليلات، ولكن هذا هو ما تدور حوله تكنولوجيا المعلومات.لذلك ركزنا بشكل أساسي على المشكلات نفسها وأيضًا على الأدوات/الأطر التي تقوم بإنشاء التعليمات البرمجية ودعم وقت التشغيل للتعليمات البرمجية التي تم إنشاؤها.أخيرًا، يمكنني أن أؤكد أننا حققنا زيادة في الإنتاجية بمقدار 10 أضعاف مع MDA.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top