المعلوماتية > برمجيات

الفرق بين إطار العمل (Framework) والمكتبة (Library)

يَكثر استخدام مُصطلح إطار العمل (Framework) في مجال هندسة البرمجيات (Software Engineering: هنا)، وخاصة عند الحديث عن تصميم نظم مُعقّدة غرضية التوجه (complex object-oriented software) وتطويرها، ويمكن تعريف إطار العمل على أنه هيكل (Skeleton) أو بِنية (structure) يُمكن الاعتماد عليها في بناء التطبيقات البرمجية (1). 

لدى أُطر العمل الكثير من التعريفات، ولعلّ أكثرها شيوعًا وصفُه بأنه مجموعة من الصفوف (Classes) التي تُجسّد تصميمًا لنظام مُجرّد (abstract design) يصلُح لحل مجموعة من التحدّيات المرتبطة بعضها مع بعض والتي تواجه المطورين باستمرار، ثُم إن أحد الأهداف الأساسية التي تُحققها أُطر العمل هي تسهيل إعادة استخدام أجزاء النظام (code reuse (1.

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

أما المكتبة البرمجية (Library) فيمكن تعريفها بأنها مجموعة من الأكواد التي يُمكن استخدامها في مُختلف التطبيقات بصرف النظر عن مجال التطبيق والمعمارية البرمجية (Software architecture) التي بُني عليها هذا التطبيق (3). كذلك يمكن التعبير عنها في شكل مجموعة من الخدمات التي تلبي غرضًا معيّنًا، في حين يُعَدُّ إطار العمل مشروعًا برمجيًّا شبه منتهٍ يُعادُ استخدامه وإضافة العمليات المرتبطة بالتطبيق الذي يُطلَب بناؤه (4).

تختلف المكتبة البرمجية عن إطار العمل في أنّ إطار العمل هو المسؤول عن الجزء الأكبر من عمل التطبيق غالبًا؛ فلا يجب على مبرمج التطبيق إلا أن يزوّد الإطار بالعمليات والخدمات المرتبطة بمتطلبات التطبيق الخاصة به، ومن ثم ينجز الإطار العمل كله، وهذا ما يُدعى تغيير وضع التحكم (Inversion of control (2. ويُعدّ تغيير وضع التحكم من الأنماط (pattern) أو التصميمات (design) المستخدمة بكثرة في تصميم أُطر العمل، وهدفه هو تغيير وضع التحكم في التطبيق لمكون آخر (3)، وكمثال من الواقع؛ لو كان لديك سيارة تريد التنقل بها فإنك تستطيع توظيف سائق ليقودها عنك، وهنا نقلت التحكم في السيارة إلى شخص آخر تخبره وجهتك.

وفي المقابل؛ لا تتحكم المكتبة في التطبيق قيد البناء، بل التطبيق هو المتحكم في استخدام المكتبة، على عكس أُطر العمل التي تؤدّي دورَ المتحكم في بناء التطبيق (4).

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

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

المصادر:

1. Vojislav S, Vlajić S, Milic M, Ognjanovic M. Guidelines for framework development process - IEEE Conference Publication [Internet]. Ieeexplore.ieee.org. 2011 [cited 1 October 2020]. Available from:  هنا

2. Ho W, Jézéquel J. Object-Oriented Frameworks for Distributed Systems : A Survey [Internet]. Semanticscholar.org. 1998 [cited 1 October 2020]. Available from:  هنا

3. Howell R. Class Libraries [Internet]. People.cs.ksu.edu. 2018 [cited 30 June 2020]. Available from: هنا

4. C. Schmidt D. Introduction to Patterns and Frameworks. Presentation presented at; Vanderbilt University. Sobernig S, Zdun U. Inversion-of-Control Layer. [Internet]. [cited 5 August 2020];. Available from: هنا