# خريطة البرمجيات

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

## دافع ومفاهيم

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

## تطبيقات

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

## محتويات

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

## مثال على نظام رسم الخرائط

تجمع خرائط البرمجيات «المعلومات المواضيعية حول عمليات تطوير البرمجيات (التطور)، وجودة البرمجيات، وهيكلها، وديناميكياتها، وتعرض تلك المعلومات بطريقة رسم الخرائط». فمثلًا:
* يمكن أن يكون ارتفاع المبنى الافتراضي متناسبًا مع تعقيد وحدة التعليمات البرمجية (على سبيل المثال، مقاييس البرمجيات الفردية أو المدمجة).
* يمكن أن تتناسب المساحة الأرضية لمبنى افتراضي ثلاثي الأبعاد مع عدد أسطر التعليمات البرمجية في الوحدة النمطية أو (على سبيل المثال، سطر التعليمات البرمجية بدون تعليق NCLOC).
* يمكن أن يعبر اللون عن حالة التطوير الحالية، أي عدد المطورين الذين يقومون بتغيير أو تعديل وحدة الشيفرة.
باستخدام هذا التكوين المثالي، تُظهر خريطة البرنامج نقاطًا مهمة في شيفرة المصدر مع العلاقات بجوانب عملية تطوير البرمجيات. على سبيل المثال، يصبح من الواضح في لمحة سريعة ما يجب تغييره من أجل:
* تنفيذ التغييرات بسرعة
* تقييم تأثير التغييرات بسرعة في مكان واحد على الوظائف في مكان آخر
* تقليل التشابكات التي تؤدي إلى عمليات غير خاضعة للرقابة في التطبيق
* العثور على الأخطاء بشكل أسرع
* اكتشاف والقضاء على أسلوب البرمجة السيئة.
تمثل خرائط البرامج أدوات رئيسية في نطاق التشخيص الآلي لبرمجيات التشخيص.

## كأدوات ذكاء الأعمال وأنظمة التوصيات

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

## تقنيات التصور

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

### خوارزميات التخطيط

لإنشاء خرائط البرمجيات، يتم استخدام أساليب تخطيط مختلفة لإنشاء الخرائط المكانية الأساسية للمكونات مثل:
* خوارزميات خريطة الشجرة التي تعين في البداية التسلسل الهرمي للبرامج في منطقة مستطيلة متداخلة متكررة.
* خوارزميات مخطط فورونوي التي تعين في البداية التسلسل الهرمي للبرامج من خلال إنشاء مخطط فورونوي.

### استقرار التخطيط

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

## تاريخ

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

## مراجع

* ↑ Bohnet، J.؛ Döllner، J. (2011). "Monitoring Code Quality and Development Activity by Software Maps". Proceedings of the IEEE ACM ICSE Workshop on Managing Technical Debt. Association for Computing Machinery. ص. 9–16. DOI:10.1145/1985362.1985365. ISBN:9781450305860.
* ↑ Bohnet، J. (2010). Visualization of Execution Traces and its Application to Software Maintenance (PhD). Hasso-Plattner-Institut, University of Potsdam. مؤرشف من الأصل في 2020-07-26.
* ↑ Wettel، R.؛ Lanza، M. (2007). "Visualizing Software Systems as Cities". Proceedings of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis). IEEE Computer Society Press. ص. 92–99. CiteSeerX:10.1.1.135.1979. DOI:10.1109/VISSOF.2007.4290706. ISBN:978-1-4244-0599-2.
* ↑ Kuhn، A.؛ Loretan، P.؛ Nierstrasz، O. (2008). "Consistent Layout for Thematic Software Maps". 2008 15th Working Conference on Reverse Engineering. ص. 209–218. arXiv:1209.5490. DOI:10.1109/WCRE.2008.45. ISBN:978-0-7695-3429-9.
* ↑ Limberger، D.؛ Wasty، B.؛ Trümper، J.؛ Döllner، J. (2013). "Interactive software maps for web-based source code analysis". Proceedings of the 18th International Conference on 3D Web Technology. ص. 91–98. DOI:10.1145/2466533.2466550. ISBN:9781450321334.
* ↑ Carpendale، M.S.T. "Considering Visual Variables as a Basis for Information Visualization" (PDF). مؤرشف من الأصل (PDF) في 2020-07-26.
* 1 2 Trümper، Jonas؛ Döllner، Jürgen (2012). "Extending Recommendation Systems with Software Maps". Proceedings of the 3rd International ICSE Workshop on Recommendation Systems for Software Engineering (RSSE). IEEE Computer Society. ص. 92–96. DOI:10.1109/RSSE.2012.6233420. ISBN:978-1-4673-1758-0.
* ↑ Johnson، B.؛ Shneiderman، B. (1991). "Tree-maps: a space-filling approach to the visualization of hierarchical information structures" (PDF). Proceeding Visualization '91. ص. 284–291. DOI:10.1109/VISUAL.1991.175815. ISBN:0-8186-2245-8.
* ↑ Hahn، S.؛ Trümper، J.؛ Moritz، D.؛ Döllner، J. (2014). "Visualization of varying hierarchies by stable layout of voronoi treemaps". 2014 International Conference on Information Visualization Theory and Applications (IVAPP). ص. 50–58. ISBN:978-9-8975-8132-8.