See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/304015518 The unified modelling language (UML) Arabic edition Book · January 2016 CITATIONS READS 0 4,695 1 author: Abdulmajid Hissen Mohamed Sebha University 22 PUBLICATIONS 93 CITATIONS SEE PROFILE Some of the authors of this publication are also working on these related projects: Idea Extraction from Text View project Idea mining semantically View project All content following this page was uploaded by Abdulmajid Hissen Mohamed on 10 July 2018. The user has requested enhancement of the downloaded file. لغة توصيف البرمجيات الموحدة UML د .عبدالمجيد حسين كلية العلوم ،قسم الحاسوب جامعة سبها الطبعة االولى.4102 : الناشر :جوري المحدودة. جميع حقوق الطبع محفوظة. 1 اإلهداء إلى من أوقد في نفسي شعلة البحث عن المعرفة في مرحلة مبكرة من عمرى: والدى رمحه اهلل و إلى من ألهمتني عشق التعلم واكتساب المعرفة وعلمتني أن ال أبالغ في الفرح بما أحققه من منجزات الصغيرة: أمى 2 الفهرس اإلهداء2 ............................................................................................ كلمة شكر وتقدير8 .................................................................................. مقدمة9 ............................................................................................. الفصل األول :أساسيات النظرية الشيئية 31 ........................................................... 0.1تمهيد 01 ......................................................................................................... 1.1فلسفة وصف األشياء/الكائنات البرمجية 01 ............................................................... 2.1الوصف التجريدى 02 ........................................................................................... 3.1أدوات الوصف 01 .............................................................................................. 4.1خصائص المفهوم الشيئي/الكائناتي للبرمجيات 01 ........................................................ 1.4.1مفهوم الشيئ/الكائن البرمجي 01 ....................................................... Object 2.4.1التصنيف 42 .................................................................................. Class 3.4.1التجريد 42 .......................................................................... Abstraction 4.4.1التغليف Encapsulationواخفاء البيانات 41 ......................Information Hiding 5.4.1الوراثة 10 .............................................................................. Inheritance 6.4.1معدل التماسك 12 ....................................................................... Cohesion 7.4.1معدل االرتباط 13 ........................................................................ Coupling 8.4.1تعدد األشكال 21 ............................................................... Polymorphism 9.4.1التطوير وفقا للمكونات البرمجية الجاهزة 20 ........................ Component-Based 10.4.1األنماط 24 ............................................................................... Patterns أسئلة الفصل االول 21 ................................................................................................ الفصل الثانى :وصف عام للغة الوصف 05 ....................................................UML 3 0.2تمهيد 11 ......................................................................................................... 1.2مخططات 10 ......................................................................................... UML 4.4تعريف النموذج 14 ................................................................................... Model 1.2مخطط وصف وقائع اإلستخدام 11 ......................................... Use Case diagrams 4.2مخطط وصف تبدل الحالة 12 .............................................. Statechart Diagrams 5.2مخطط وصف المهام 11 ......................................................... Activity Diagrams 6.2مخطط التصانيف 15 ................................................................ Class Diagrams 7.2مخطط التسلسل 21 ........................................................... Sequence Diagrams 8.2مخطط وصف المكونات البرمجية 20 ................................... Component diagrams أسئلة الفصل الثانى 21 ............................................................................................... الفصل الثالث :مخطط وقائع اإلستخدام 22 ............................................ Use Cases 0.3تمهيد14 ......................................................................................................... 1.3وقائع اإلستخدام كوسيلة لحصر متطلبات النظم 11 ..................................................... 2.3مدى استخدام مخططات وقائع اإلستخدام 12 ............................................................ 3.3الرموز المستخدمة لتمثيل وقائع اإلستخدام 11 ........................................................... 4.3عملية فرز وتحديد الممثلين 13 .................................................................... Actors 5.3الممثلين غير البشر 13 ........................................................ Non Human Actors 6.3سيناريوهات وقائع االستخدام 31 ........................................................................... 7.3حدود النظام 34 ................................................................... System boundary 8.3العالقات بين عناصر وقائع اإلستخدام31 .................................................................. 1.8.3عالقة التعميم generalizationبين وقائع اإلستخدام المختلفة 31 ........................... 2.8.3عالقة التعميم)الوراثة( generalizationبين الممثلين 31 ......................... .actors 4 3.8.3عالقة االحتواء includeبين وقائع اإلستخدام المختلفة 32 ..................................... 4.8.3عالقة اإلمتداد extendبين وقائع استخدام مختلفة 33 .......................................... 9.3رسم مخططات وقائع اإلستخدام 51 ....................................................................... 01.1توصيف وقائع االستخدام 50 ............................................................................... 33.1استخدام ادوات CASEلرسم وحفظ وقائع االستخدام 51 ............................................. أسئلة الفصل الثالث 52 ............................................................................................... الفصل الرابع :مخطط التصانيف Class diagramو نمذجة المفاهيم99 ............................. 0.4تمهيد55 ......................................................................................................... 1.4تحديد تصانيف النظم 55 ..................................................................................... 2.4استخالص التصانيف األساسية للنظام 010 ............................................................... 1.2جدولة التصانيف 011 ......................................................................................... 1.3.4تصانيف اإلتصال 011 ................................................. Boundary Classes 2.3.4تصانيف التحكم 012 ........................................................... Control Class 3.3.4التصانيف الكائنية 012 ........................................................... Entity Class 4.4مكونات مخطط التصانيف 011 .............................................................................. 1.4.4وصف التصانيف ومبدأ إخفاء واظهار المعلومات 015 ......................................... 2.4.4تحديد العالقات بين التصانيف001 .................................................................. 5.4رسم مخطط التصانيف 001 ................................................................................. أسئلة الفصل الرابع 005 .............................................................................................. الفصل الخامس :مخططات وصف التفاعالت 320 ........................Interaction Diagrams 0.5تمهيد041 ....................................................................................................... 1.5مخطط اإلتصاالت 041 ............................................ Communication diagrams 2.5مخطط التسلسل 011 ......................................................... Sequence Diagram 5 3.2.0العمر الزمنى للكائن 010 .................................................................. lifetime 4.4.1استثارة الكائنات ومسارات التنفيذ 014 ................................................................ أسئلة الفصل الخامس 021 ........................................................................................... الفصل السادس :مخطط وصف تبدل الحالة 305 .........................State chart Diagrams 0.6تمهيد011 ....................................................................................................... تبدل الحالة 010 .............................................................................. 1.6رموز مخطط َ 2.6وصف تبدل حالة كائن 014 ................................................................................. أسئلة الفصل السادس 012 ........................................................................................... الفصل السابع :مخطط وصف المهام 365 .....................................Activity Diagram 0.7تمهيد021 ....................................................................................................... 1.7مكونات مخطط المهام 024 .................................................................................. 2.7تمثيل التفرعات الشرطية 021 ................................................................................ 3.7إدراج الكائنات وتمثيل خطوط السباحة 021 .............................................................. أسئلة الفصل السابع 025 ............................................................................................. الفصل الثامن:مخططات التنفيذ و نمذجة أساليب اإلنجاز 321 ........................................ 0.8تمهيد011 ....................................................................................................... 3.8ما هو المكون البرمجى 012 ................................................................................. 2.8مخطط المكونات 011 ..................................................... Components diagram 1.8متى ُيستعان بالمكونات البرمجية المعاد استخدامها 012 ................................................ 4.8عناصر مخطط المكونات البرمجية 011 ................................................................... 0.8حجم المكون البرمجى 015 ................................................................................... 6 6.8وسم المكونات البرمجية031 ................................................................................. 7.8مخطط النشر 030 ............................................................. Deployment Model 8.8إدراج تفاصيل المكونات البرمجية 034 ..................................................................... 9.8العالقات associationsبين نقاط النشر 032 .......................................................... أسئلة الفصل الثامن 031 ............................................................................................. الفصل التاسعِ : الحزم packagesو تجزئة النظم 395 ............................................... 5.9تمهيد051 ....................................................................................................... ِ 1.9 الحزم 051 ...................................................................................... packages 2.9األنظمة الجزئية 052 .................................................................... Subsystems أسئلة الفصل التاسع 055 ............................................................................................. المراجع االجنبية252 ................................................................................ المراجع العربية 254 ................................................................................. ملحق أ :قائمة مصطلحات250 ..................................................................... 7 كلمة شكر وتقدير عمال بالحديث النبوي الشريف( ،ال يشكر اهلل من ال يشكر الناس) فإنني أجد نفسي مدينا بالشكر لكثير من األشخاص الذين أسهموا في إظهار هذا الكتاب ،سواء اكان ذلك بطريقة مباشرة ،أو غير مباشرة ،كنت سأكتفى بشكرهم جميعا دون ذكر أسماء ،لكنني أجد نفسى مدفوعا ألخص بالشكر بعضهم ،عرفانا بالجميل وتقدي ار للمعروف .فأخص بشكري الجزيل للدكتورة ليي ساي بيك بجامعة ماليا – ماليزيا ،فهى من دفعني لتعلم لغة UMLللمرة األولى ،كما أشكر وبال حدود أستاذي الدكتور الصادق البصير ،الذي غرس في نفسي حب اللغة العربية والكتابة بها .كذلك اليمكنني بحال أن أغفل عن التعقيبات النقدية لطالبى بالجامعات الليبية ،لقد كانت سببا مباش ار في إعادة النظر في صياغتي العربية للكثير من مصطلحات التقنية الشيئية ،وألن الترجمة غالبا ما تمثل خيانة للنص كما يقول المثل ،فإنني أزعم أنهم ساهموا(أسهموا) إلى حد كبير في نفي هذه الصفة عني بإختياري المصطلحات العربية التي اعتقدت أنها األصوب من حيث ترجمتها إلى العربية .الشكر موصول أيضا إلى زمالئي أعضاء هيئة التدريس بقسم الحاسوب جامعة سبها ،أحسب أن بعضهم منحنى سندا كبي ار إلستكمال مغامرة التأليف دون كلل .وفى السياق ذاته أتوجه بالشكر مقدما إلى كل من لديه مالحظة أو تصويب أو أي إقتراح من شأنه تحقيق الفائدة في إصدارات الطبعات التالية لهذا للكتاب. واهلل ولى التوفيق. 8 مقدمة الحمد هلل الذي أتاح لهذا الكتاب البروز في حيز الوجود ،وأسأل اهلل أن ُيشغل به حي از شاغ ار في أرفف كتب الحاسوب و المعلوماتية ،أُدرك إن صياغة كتابا واحدا ال يصنع مؤلفا؛ ولكنني أعتقد أن الرضا بهذه القناعة هو سبب رئيسي في فقر المكتبة العربية خاصة كتب الحاسوب والمعلوماتية .فرغم الجهود المبذولة لسد النقص الكبير لإلصدارات العربية لكتب الحاسوب والمعلوماتية ،إال أن هذه الجهود ترتكز في مجملها على التأليف في مواضيع لغات برمجة الحاسوب ،و برمجيات التطبيقات التجارية ،وبرمجيات النشر المكتبي وأعمال السكرتارية وغيرها. نحن نعتقد ان المكتبة العربية ال تزال بحاجة الى المزيد من تأليف الكتب التى تتطرق الى وصف التراكيب والهياكل الهندسية المعقدة للنظم البرمجية. فهناك شبه إجماع على أننا نعيش عصر "مجتمع المعلومات" ،العصر الذي صارت فيه المعلومات هي السالح األقوى مقارنة بسالح المحركات الذي ميز عصر الثورة الصناعية .بالطبع لم يختف ولم يتقلص دور المحركات في عصرنا الحالي؛ ولكن البرمجيات عززت أداء المحركات عموما ،حيث صارت أكثر دقة وذكاءا في أدائها ،فصارت البرمجيات تمثل جزءا أساس من أي منتج صناعي، أو معرفي ،أو خدمي ،بحيث ال يمكن تصور أداء أي وظيفة أو خدمة ال تكون البرمجيات جزءا من أدائها. وهذا االنتشار الكبير للمنتجات البرمجية في حياتنا جعل من عملية تصميم وبناء البرمجيات أم ار بالغ األهمية ،فمثل ما للبرمجيات من دور إيجابي في خدمة المجتمع؛ إال إنها وفى كثير من األحيان كانت مصد ار لكوارث مالية 9 فالبرمجيات هي عماد األسواق وبشرية حدثت نتيجة ألخطاء البرمجيات. المالية العالمية ،وهى المحرك األساس لتقنية الفضاء ،وكذلك التحكم في تسيير وسائل المواصالت العصرية كالطائرات والسفن و غيرها ،وأي خطأ تقني في أداء هذه البرمجيات قد ينجم عنه خسائر مالية وبشرية هائلة ،هذا ما جعل من االهتمام بتحسين طرق بناء البرمجيات أم ار حثيثا لدى علماء الحاسوب والمعلوماتية. فمنذ مؤتمر الناتو المنعقد عام 0523ظهرت شعارات ضرورة تحسين وتطوير طرق تصميم وبناء البرمجيات ،وذلك لتفادى إنتاج برمجيات ذات جودة منخفضة ،منذ الخمسينيات وحتى بداية السبعينيات كانت العشوائية هي السمة السائدة في طرق بناء البرمجيات ،إذ لم تكن هناك معايير قياسية لوصف وتصميم وبناء البرمجيات ،بل كانت مهارات البرمجة لدى المطورين هي العنصر األساس ،بينما ال يسبق ذلك تجهيز أي مخططات أو نماذج وصفية لما سيتم إنتاجه ،وتتمثل النتائج السلبية لهذا المنحى في التعديل المتكرر للمنتج البرمجي قيد البناء ،وذلك من أجل إصالح األخطاء التي تُكتشف في كل مرة .فمن المؤكد إن هذه العمليات المتكررة لتعديل البرمجيات تؤدى إلى ضياع الوقت وزيادة تكلفة المشاريع البرمجية. حديثا صار المنحى الهندسي لصناعة المنتجات (صناعية ،زراعية، خدمية ،معمارية) هو السائد ،وما يميز المنحى الهندسي هو بناء نماذج وصفية لما سيتم تصنيعه أوال .ومن ميزة النماذج الوصفية أنها تُمكن من إجراء كافة االختبارات والمقارنات حول شكل وسلوك المنتج قبل تصنيعه فعليا ،ومن ثم فإن 10 أي أخطاء تصميمية سيتم اكتشافها قبل التصنيع الفعلي؛ وبذلك سيتم تجنب أي كوارث أو مشاكل سببها استخدام المنتج النهائي. تتعدد طرق ووسائل رسم النماذج الوصفية للمنتجات (قبل تصنيعها)؛ ولكن أكثرها رواجا هي التصاميم الورقية التي توضح مخططات وصف المنتجات الهندسية كالخ ارئط اإلنشائية للبنايات أو خرائط تصميم الطائرات وغيرها .إن كل أعمال االختبارات تجرى على هذه المشاريع وهي في طور التصميم الوصفي قبل إنجازها على أرض الواقع .رغم طبيعتها كمنتج غير مرئي أو محسوس ،إال أن البرمجيات تعد منتجات بالغة التعقيد ،ويجب أن تخضع في بنائها لذات األسلوب الهندسي المتبع في بناء النظم الحسية كالبنايات واآلالت وغيرها ،أي يجب أن تُبنى البرمجيات اعتمادا على رسم مخططات وصفية لها يمكن من خاللها إجراء كافة االختبارات حول مواصفات وسلوك المنتج البرمجي قبل صناعته أو برمجته فعليا. فهذا الكتاب يقدم شرحا مستفيضا ألحد لغات وصف البرمجيات ،وذلك عبر مجموعة من المخططات الوصفية التي تقوم بوصف نواحي مختلفة من التطبيق البرمجي قيد البناء .لقد تعددت لغات وصف البرمجيات حتى جاوزت العشرات وهو ما أحدث فوضى في مجال هندسة البرمجيات حول الطريقة األمثل لوصف نظمها .فظهرت لغة ) UML Unified Modeling )Languageتتويجا لتوحيد جهود ثالثة من أشهر واضعي طرق وصف البرمجيات ،وحاليا تعتبر UMLهي اللغة األشهر واألكثر اعتمادا ضمن سوق صناعة البرمجيات ،بل ربما بلغ انتشارها وشهرتها إلى الحد الذي ال يمكن تخيل مهندس برمجيات يجيد العمل بدونها. 11 عند كتابة هذا المرجع روعي في كتابته العديد من النواحي البيداغوجية pedagogicalالتي تجعل من استيعاب مخططات الوصف المعروضة أم ار ميس ار .ففي الفصل األول تم التعرض إلى مفاهيم النظرية الشيئية التي تعتبر لغة UMLداعما رئيسا لها ،فمعظم مكونات مخططات لغة UMLلها خلفية نظرية ضمن مفاهيم النظرية الشيئية لبناء البرمجيات ،لذلك كان البد من اإللمام بالخلفية النظرية للغة UMLقبل عرض مخططاتها الوصفية ،أما الفصل الثاني فجاء بمثابة صورة جوية لمخططات لغة ،UMLحيث أُعطيت نبذة عن كل مخطط من المخططات الوصفية للغة ،UMLتهدف إلى إعطاء المتلقي فكرة عامة عن مخططات اللغة قبل تفصيل مكونات كل مخطط على حدة في فصول الحقة .ودعما لمنهج التعليم المدعم بالمسائل problem based learningفقد اختير نظام المكتبة الجامعية نموذجا يتم من خالله بيان كيفية استخدام مخططات UMLلتجهيز مخططات الوصف المختلفة ضمن هذا النظام. أخي ار ،لقد أُعتمد في تأليف هذا الكتاب على عديد من المراجع والبحوث األجنبية في هذا المجال ،وقد أولينا عناية خاصة بالمصطلحات العربية ،حيث تم االلتزام بما هو سائد أحيانا ،بينما اختيرت مصطلحات عربية أخرى لما بدا لنا أنه هو األصوب واألدق. 12 الفصل األول :أساسيات النظرية الشيئية 0.1تمهيد قبل التطرق إلى مخططات وصف البرمجيات وفقا للمفهوم الشيئي ،البد من عرض المفاهيم األساسية التي تقوم عليها النظرية الشيئية .ستالحظ الحقا أن بعض هذه المفاهيم شائعة اإلستخدام في مجاالت أخرى غير صناعة البرمجيات، ولكن يظل استيعابها من منظور صناعة البرمجيات أم ار أساسيا .لذلك يمكن إعتبار هذه المفاهيم بمثابة مفردات وصف بناء البرمجيات الشيئية التي البد لكل مهندس برمجيات من االلمام بها .ولكن لماذا نحتاج لوصف النظم المعلوماتية قبل بنائها (برمجتها) فعليا .إنه النهج الحديث إلنجاز أي مشروع هندسي (برمجيات، معمار ،عربة ،الخ) .فنجاح بناء أي مشروع هندسي يعتمد إعتمادا رئيسيا على سالمة التصورات ،ممثلة في مخططات وخرائط وصف المنتج الهندسي قبل عملية بنائه. 1.1فلسفة وصف األشياء/الكائنات البرمجية قبل الشروع إلى تفاصيل نماذج وصف أنظمة برمجيات الحاسوب البد أوال من فهم فلسفة عملية الوصف بشكل عام .فالوصف ليس ظاهرة مرتبطة فقط بوصف األنظمة البرمجية ،بل يتعدى ذلك إلى وصف أي كائن أو ظاهرة أو سلوك وغيره. وعملية الوصف هي عبارة عن مقاربة لما هو عليه الشيئ المراد وصفه ،سواءا كان ذلك مبنى أو عربة أو عملية أو شخص أو آلة أو غيره .ومهما بلغت دقة الوصف لشئ ما فإنه ال يمكن بحال من األحوال مطابقة الشيئ الموصوف ذاته، بل هي مجرد مقاربة وصفية تُمكن المتلقي من فهم وتمييز ما تم وصفه .فمثال، تعتبر خارطة اإلنشاء لمبنى معين عبارة عن وصف تقريبى لما تخيله مهندس 13 اإلنشاء حول ما سيكون عليه المبنى المرتقب، حيث يمكن إجراء جميع اإلختبارات على الخارطة قبل الشروع في البناء الفعلى .االمر ذاته ينطبق على خرائط وصف الطائرات والمباني والجسور وغيرها. قد تختلف مخرجات عملية الوصف من واصف آلخر حيث تتداخل عوامل عدة في اختيارات كل واصف .فمثال لو وقعت حادثة سرقة امام جمع من الشهود ،و فر على اثرها السارق ،ثم طُلب من الشهود وصف المتهم ،الشك ان ما سيدونه رجل الشرطة من اوصاف سمعها من الشهود ستكون مختلفة إلى حد كبير .فبعض الشهود سيركزون فى وصفهم على زى السارق مثال ،بينما قد يهتم آخرين بوصف مالمح الوجه وهكذا .ولكن هل يجب أن يحصل رجل الشرطى على وصف مطابق تماما للجانى حتى يتعرف عليه؟ من المؤكد انه سيحتاج فقط إلى وصف تقريبى ،وهو ما يمكن تسميته وصفا تجريديا للجانى ،وبالمفهوم الهندسي يقال له "نموذج" السارق. 2.1الوصف التجريدى عند شروع المهندس المعمارى مثال في رسم خارطة اإلنشاء لمبنى معين .الحظ أن وصف المبنى سيتم اختزاله فقط في حيز ورقة صغيرة أو مجموعة أوراق. ما من شك أن خارطة المبنى ال تطابق المبنى الحقيقي بالضبط ،ولكنها كفيلة بشرح ما سيكون عليه المبنى الحقيقى .لذلك فعملية الوصف غالبا ال تتجاوز وصف المكونات األساسية ،أو العالمات الدالة لجوهر الشيئ ،بينما يتم التغاضى عن إيراد التفاصيل الدقيقة له ،ورغم هذا االختصار الكبير في الوصف فإن تمييز 14 الموصوف سيكون من السهولة بمكان .لذلك تسمى عملية الوصف المختصر هذه: وصف تجريدي .أي الوصف المختصر الذي ُيركز على الجوهر دون التفاصيل. 3.1أدوات الوصف تأخذ عملية الوصف أساليب ومفردات مختلفة ،وذلك حسب ما يراه الواصف أنه أقرب للفهم والتمييز من قبل المتلقى .وهنا نحتاج لما يمكن تسميته لغة الوصف، أو رموز الوصف .فلغة الوصف تمثل مفردات الوصف وقد يشمل ذلك مفردات اللغات البشرية ،والرسومات ،والمنحوتات ،بل حتى لغة اإلشارة للصم والبكم. وكنموذج لتعدد طرق وأساليب الوصف في الحياة العامة ،فالشعراء مثال يستخدمون الشعر كلغة وصف لمواضيعهم الشعرية ،سواءا كانت مدحا لشخص ،أو وصفا لمشهد أو غير ذلك .انظر مثال للشاعر البحتري وهو يصف مشهد الربيع بقوله: أتاك الربيع الطلق يختال ضاحكا من ُ ِ حتى كاد أن يتكلما الحسن َ الشاعر هنا أوجز وصف جمال الربيع بأبيات بليغة تدل على بهجة الربيع ،وما يبعثه في النفس من سرور ،ولكن الحظ أن الشاعر لم يصف الكثير من التفاصيل الدقيقة ،التي قد ال يصلح الشعر (كلغة وصف) لوصفها .وكنموذج آخر لوصف الربيع ،قد يلجأ رسام لوصف ذات المشهد بلغة وصف أخرى وهى الرسم .إذا فنحن هنا أمام وصف نفس المشهد ،أو الظاهرة أو النظام (اصطالحا) ،ولكن تم التعبير عنه بلغتي وصف مختلفتين .تأمل أي الوصفين أقرب للتعبير عن مشهد الربيع؟ في الدروس القادمة سنبين ضرورة فعل نفس الشيئ عند وصف البرمجيات، فالنظم البرمجية يتم وصفها بصيغ ورموز وصف مختلفة ،وذلك لتحقيق أغراض 15 سيتم الحديث عنها الحقا .المثال السابق كان على صعيد وصف الظواهر أو النظم بشكل عام .أما على صعيد بناء وتطوير األنظمة الهندسية ،تكمن الحاجة إلى عملية الوصف عند التفكير في بناء أو تطوير أي كائن هندسي (مبنى ،آلة، عربة ،الخ) .ولتحقيق ذلك يتم أيضا اللجوء إلى لغات وصف معينة لعمل نماذج وصفية لهذه األشياء قبل عملية االنجاز الفعلى لها .فمثال ،قبل ظهور برمجيات الرسم الهندسي ،CADكانت مادتا الطين والخشب هما لغة وصف نماذج ى السيارات الجديدة .فيتم صنع نموذج طينى أو خشبى للسيارة ،ومن ثم تُجر َ اإلختبارات المختلفة على المجسم التجريبى ،كإختبارات انسيابية الهواء ،Aerodynamicومقاومة الصدمات ،وغيرها .ونتيجة لعوامل التكلفة ومرونة العمل ،صارت رسومات CADو MATLABهي لغات الوصف األكثر شيوعا في مثل هذه التطبيقات. أما حول تعدد لغات الوصف ،فيعود تباين مفردات أو لغات الوصف إلى ضرورة اشتراك الواصف والمتلقي في فهم نفس اللغة ،واال فقد أنتفت وظيفة الوصف من االساس .فمثال ما معنى قراءة ابيات قصيدة الربيع لشخص أصم؟ كذلك الحال بالنسبة لوصف النظم المعلوماتية ،فالمستفيد أو مشغل النظام المعلوماتى غالبا ما يفتقد للمعلومات الكافية حول المصطلحات التقنية ألنظمة المعلومات ورموزها المختلفة .لذلك يجب أن تكون لغة الوصف في متناول فهم الزبون ،أو المستخدم، سواءا كان ذلك وصفا سرديا ،أو وصفا باستخدام خرائط ومخططات مرئية سهلة االستيعاب بالنسبة له. 16 4.1خصائص المفهوم الشيئي/الكائناتي للبرمجيات الرواج الكبير للمفهوم الشيئي جعل منه خاصية يحرص الكثيرين على تطوير برمجياتهم وفقا لها .ولكن ما الذي يجعل من أي تطبيق ،أو لغة برمجة ،أو نظام إدارة قاعدة بيانات ،يكتسب هذه الخاصية .هناك العديد من العناصر أو التراكيب والخصائص التي يوفرها المفهوم الشيئي ،أي تطبيق شيئي ،أو لغة برمجة شيئية، أو نظام قاعدة بيانات شيئية ،البد أن يدعم هذه الخصائص المبينة بالفقرات التالية. 1.4.1مفهوم الشيئ/الكائن البرمجي Object العالم من حولنا ملئ بالكائنات سواءا المحسوسة أو التجريدية (أى الوصفية) ،وفى إطار أداء أي وظيفة من وظائف الحياة ،فإن ذلك يتخلله االستعانة بمجموعة من الكائنات ،التي تخدم بعضها بعضا من أجل إنجاز أي وظيفة ،فمثال لو أردت كتابة رسالة أو مقالة ،فإنك تحتاج إلى قلم ،و ورقة ،ومكتب مريح يحتوى على طاولة ،وكرسي ،وربما حاسوب شخصى .جميع هذه األشياء الالزمة لكتابة الرسالة تسمى اصطالحا "كائنات" .objectsوكل كائن له شكل معين ،و وظيفة مميزة، فقد ُجعل القلم للكتابة ،والكرسي للجلوس ،والطاولة إلسناد األشياء عليها ،وهكذا فإن جميع األشياء أو الكائنات مرتبطة في اذهان البشر بمسميات ووظائف محددة ،وكما اسلفنا سابقا فإن ذلك ينسحب على جميع نواحي الحياة .فالطبيب كائن له وظيفة محددة وهى التطبيب ،و التارزى كائن وظيفته الحياكة ،وهكذا. ولقد جرت العادة على ان كائنات الحياة بما فيها البشر تتخاطب وتتفاعل فيما بينها بحسب حاجة كل كائن آلخر .ووفقا لهذه القاعدة ال يمكن تصور أن شخصا 17 مريضا سيلجأ للتارزى لكى يصف له الدواء ،ألنها هذه ليست وظيفة التارزى .أو ان شخصا سيستعين بفني إصالح العربات لبناء بيت!!! وهكذا. سلوك الكائن (العمليات ) هوية الكائن (بيانات التعريف) إضافة كتاب تعديل بيانات كتاب إلغاء كتاب :البرمجية بلغة C++ العنوان :كتاب النوع :د.بشير العيساوى المؤلف :الدار العالمية للكتاب الناشر رقم النسخة 4231 : :متوفر الحالة مرجع الشكل( :)0-0وصف الكائن "مرجع” فى مكتبة جامعية سلوك الكائن (العمليات ) هوية الكائن (بيانات التعريف) الموقع -0نقل ملكية :شارع عمر المختار -4العرض في مزاد سنة االنشاء 0511 : المالك :عبداهلل عبدالسالم الغرض :سكن الشكل ( :)4-0وصف الكائن "منزل" 18 وفقا للمفهوم الشيئي فإن الكائن objectهو أي شيء مميز له هوية وسلوك (اي وظيفة) ،بمعنى أي شيئ يمكن تمييزه ببيانات معينة dataوله سلوك behavior يتمثل في الوظيـ ـ ـ ـفة التي ينجـ ـ ـ ـ ـ ـ ـزها (كتابة ،طباعـ ـ ـ ـ ـ ـة ،تطبيب ،بيع ،إلخ). األش ـ ـ ـ ـ ـكال ( )0-0و( )4-0و( )1-0تمثل مخططات لتعريف أشياء يمكن إعتبارها كائنات ،objectsفالبيت كائن له بيانات ،وله مجموعة من العمليات (السلوك) التي تميزه ،وكذلك الحال بالنسبة للطبيب ،والمحاضر ،والعربة ،والكتاب وغيرها. سلوك الكائن (العمليات ) هوية الكائن (بيانات التعريف) .0تشخيص األمراض ووصف العالج االسم :د .كريمة بشير .4القاء محاضرات تخصصية العمر 21 : .1اجراء عملية جراحية العنوان 414:ميدان الجزائر,طرابلس المؤهل :دكتوراة طب التخصص :جراحة اعصاب الشكل ( :)1-0وصف الكائن "طبيب" الحظ أنه يندرج تحت تعريف "الكائن" ليس فقط الكائنات المحسوسة ،كالكتاب والطبيب و غيره ،بل يتعدى ذلك إلى الكائنات المعنوية ،مثل عملية (حجز رحلة جوية) ،أو (حساب مصرفى) ،أو غيره من الكائنات المعنوية غير المحسوسة. فمثال الحساب المصرفى يمكن ترشيحه ككائن برمجي ضمن متطلبات منظومة 19 معلومات مصرفية ،فكل حساب مصرفى له بيانات تميزه مثل رقم الحساب ،واسم الزبون ،ونوع الحساب (إدخار ،إيداع ،جاري) ،والرصيد وغيره .جميع هذه البيانات تمثل هوية أي حساب مصرفى .أما السلوك behaviorالمتوقع لهذا الكائن فيتمثل ذلك في عملية (ايداع مبلغ مالى في) الحساب المصرفى ،أو عملية (سحب مبلغ مالي) من الحساب ،أو عملية (استصدار كشف حساب) .وجميع هذه العمليات تُـنجز تحت سيطرة الكائن المعنى .فمثال ،ال ُيسمح لصاحب الحساب سحب أي قيمة تتجاوز رصيد الحساب .كل هذه العمليات تمثل سلوك الكائن ]حساب مصرفى[ (انظر الشكل .)4-0 سلوك الكائن (العمليات ) هوية الكائن (بيانات التعريف) نوع الحساب رقم الحساب االســـم سحب قيمة :حساب جارى إيداع نقدي 87-464-2: طباعة كشف حساب :عمر على ابوالقاسم تجميد حساب الفرع المصرفي :المختار الرصيد 2478 : حساب مصرفى الشكل ( :)4-1وصف الكائن غير حسي "حساب مصرفي" فرز الكائنات البرمجية تظل عملية تمييز الكائنات المرشحة لتمثيل أي نظام معلوماتى ،هي مهارة بحد ذاتها ،فليس أي بيانات أو معلومات يمكن إعتبارها كائنات برمجية ،فمنها ماهو فاقد لالستقاللية ،بل تابع لكائنات أخرى ،و ليس له أي وجود مستقل لذاته .فمثال 20 بيانات العنوان ،addressالحظ أنها ال تمثل كائنا مستقال لذاته ،ألن العنوان خاصية من خصائص كائنات أخرى كالكائنات] :طالب[ ،أو ]شركة[ ،أو ]منزل[ وغيره ،فلكل من هذه الكائنات خاصية تتمثل في إما عنوان الطالب ،أو عنوان الشركة ،أو عنوان المنزل. إن ما تحاول النظرية الشيئية تحقيقه ،هو محاكاة نفس صيغة التعامل بين الكائنات البرمجية المختلفة ،أي أن التطبيقات البرمجية يتم تصميمها ثم برمجتها على هيئة "كائنات برمجية" ،تتخاطب وتتفاعل فيما بينها ألداء وظائف النظام المعني .تتمثل ميزة هذا النهج في بناء النظم البرمجية ،في تبسيط بناء البرمجيات ،والتقليل من أخطاء المبرمجين .فمثال لو أخطأ المبرمج في كتابة أمر إلستدعاء روتين معين، وتم استدعاء وتنفيذ روتين آخر مشابه له في التسمية ،ولكنه ينتمى لكائن آخر، فإنه وفقا للسلوك المتوقع لكل كائن برمجي فإن أي استدعاء بين أي كائنين برمجين ال عالقة بينها ستُكشف فو ار .فمثال العملية (سحب مبلغ مالى) هي إحدى سلوكيات الكائن ]حساب مصرفى[ ،من المؤكد أنه ستتم االستجابة ألي استدعاء لهذه العملية من قبل الكائن ]زبون[ بالمصرف ،نظ ار لوجود عالقة بين الكائنين ]زبون[ و ]حساب مصرفى[ .بينما لو تم خطأ استدعاء نفس العملية من قبل الكائن ]سيارة[ الوارد ضمن منظومة خاصة بإدارة إستخدام مركبات المصرف مثال .فإنه من خالل المفهوم الشيئي سيتم اكتشاف هذا الخطأ تلقائيا لعدم وجود عالقة بين الكائنين المختلفين ،بينما ال يمكن االنتباه لذلك وفقا ألسلوب البرمجة اإلعتيادية (غير الشيئية). و كمثال واقعي للتمثيل الشيئي للنظم ،نورد سيناريو إعارة الكتب ضمن نظام مكتبة جامعية .الشكل ( )1-0يمثل مشهد مرئي لما يمكن أن نراه داخل المكتبة 21 الجامعية .ضمن مكونات المشهد ،الحظ توفر مجموعة من المستفيدين من الخدمات المكتبية ،من طلبة ،ومحاضرين ،وموظفين ،أو أي شخص آخر تشمله لوائح العضوية بالمكتبة .بإمكان أي من هؤالء التجول بين أرفف الكتب ،واختيار ٍ كتاب ما ،فإنه الكتب الستعارتها ،أو اإلطالع عليها .فإذا أراد شخص إستعارة سيتوجه مباشرة إلى ركن منظومة اإلعارة ،مخاطبا الموظف المسئول من أجل إستعارة الكتب .هنا يقوم الموظف باستخدام النظام المعلوماتي وذلك بالنقر على أزرار خيارات اإلعارة ضمن شاشات النظام .يتم تقييد بيانات الكتاب المعار ثم يتم تسليمه للمستعير في حال عدم وجود أي موانع تتعلق بالئحة اإلعارة. موظفة مكتبة كتاب طالب شاشة تحاور مع المستخدم محاضر منظومة االعارة زر ضمن شاشة التحاور مع نظام المكتبة الشكل ( :)4-1مشهد يبيين الكائنات المعنية بنظام اإلعار بمكتبة جامعية. 22 هذا السيناريو هو في الواقع عبارة عن سلسلة من الرسائل ،messagesالتي تُـرسل من كائن ألخر ألداء أي وظيفة .فعندما يقوم أي عضو بالمكتبة بأخذ كتاب معين من الرف ،فهذه العملية إنما تعتبر رسالة بين الكائنين المعنيين ،أي الكائن ]مستعير[ و الكائن ]كتاب[ .كذلك عندما يتوجه المستعير إلى ركن اإلعارة ويتواصل مع موظف اإلعارة ،فهذه العملية هي أيضا رسالة بين الكائنين المعنيين ألداء عملية اإلعارة ،حيث يتم تقييد بيانات الكتب المعارة في الكائن ]حساب إعارة[ التابع للمعنى .وعلى هذا النوح ،جميع العمليات والرسائل بين كائنات المكتبة يمكن وصفها تجريديا كما هو مبين بالشكل (.)2-0 محاضر طالب رسالة معالجة حساب إعار موظف مستعير كتاب نظام اإلعار شاشة المكتبية تحاور مع المستخدم زر الشكل ( :)6-1تطوير البرمجيات الشيئية بإسلوب التخاطب بين كائنات النظام. 23 2.4.1التصنيف Class التصنيف classهو عبارة عن "قالب" يمثل الوصف العام لمجموعة من الكائنات التي تتشابه في خصائصها وسلوكها .فالتصنيف classيمثل القالب الذي يمكن عن طريقه استنساخ أي كائن له نفس الخصائص والسلوك .الحظ أن هذه الخاصية مستمدة من النزعة البشرية لتصنيف األشياء ،ففي واقع الحياة يتم تمييز الكائنات الطبيعية على هيئة تصنيفات عديدة ،مثل (كائنات حية وكائنات جامدة)، و (طيور-الثدييات) و (مناطق حارة-مناطق باردة) وغيرها. التصنيف طالب عبدالرحمن بشير جامعة النجاح كلية الهندسة فدوى المغربى جامعة النجاح كلية الطب منذر الحوات جامعة النجاح كلية التربية كائنات تنتمى للتصنيف طالب الشكل ( :(8-1شكل يمثل عالقة تصنيف بكائنات تابعة له. لمزيد من التفصيل ،يمكن إعتبار العنصر ]طالب[ كتصنيف يندرج تحته كل كائن له خصائص الطالب ،بمعنى أن أي شخص ينتمى لمؤسسة تعليمية ،ويدرس مجموعة من المقررات ،ويخضع إلختبارات التحصيل وغيرها .كل عنصر ينتمى إلى هذا التصنيف يسمى حالة أو عينة .instanceفالطالب عبدالرحمن بشير، والمقيد تحت الرقم دراسى 402بجامعة النجاح ،ال يمكن إدراجه كتصنيف class 24 بمفرده ،فهو يعتبر كائن objectينتمى إلى التصنيف ]طالب[ ،كذلك الحال مع بيانات أي طالب آخر ينتمى إلى نفس التصنيف (انظر الشكل .)1-0إذا فالكائن يمثل نسخة أو حالة instanceلتصنيف ما. طالب طبيب فالح موظف الشكل ( :)7-1شكل يمثل إدراج مجموعة كائنات ضمن تصنيف ]شخص[. لتمييز الكائنات وتصنيفاتها ،يمكن إدراج أي كائن ضمن تصنيف معين إذا توفرت بينهما عالقة "يعتبر" ( .)is aفمن خالل الشكل ( )3-0الحظ أن كل من الكائنات الحقيقية مثل ]فالح[ و]طالب[ و]موظف[ و]طبيب[ كلها تعنى ]شخص[ معين. فالفالح شخص والطالب شخص معين وكذلك الموظف والطبيب.إذا ما يمكن أن ندرجه تحت التصنيف ]شخص[ ،هو كل كائن له خصائص مثل اسم وطول ووزن وعنوان ومهنة وعمر وغيره .الحظ أن جميع هذه الخصائص أو البيانات هي فى الحقيقة خصائص مشتركة بين تلك الكائنات ( طالب وطبيب وفالح وموظف وغيرهم). الشكل ( )5-0يمثل مثاال آخ ار لتصنيفات أخرى وهذا التصنيف هو ]عقار[ ،حيث يعتبر المنزل عقار ،وكذلك المسجد ،والمدرسة ،والعيادة ،وهى سميت كذلك 25 الشتراكها جميعا في بعض الخصائص األساسية ،مثل المالك ،والمساحة، والعنوان ،وغرض االستفادة منه ،وغيره .لذلك ادرجت هذه الكائنات تحت نفس التصنيف classأي ]عقار[. تصنيف عقار منزل مسجد عياد مدرسة الشكل ( :)9-1شكل يمثل إدراج مجموعة كائنات ضمن تصنيف ]عقار[. 3.4.1التجريد Abstraction كما تمت اإلشارة إليه سابقا ،يمثل التجريد وسيلة لوصف شيء ما دون التعمق في تفاصيله ،حيث يتم التركيز فقط على النواحي التي تخدم الغرض من الوصف. فمثال عند الرغبة في وصف بيانات نظام معلومات الطالب الجامعيين .الحظ أن بيانات النظام المرتقب تتمحور حول الكائنات] :طالب[ و ]محاضر[ و]مقرر دراسي[ وغيرها .فإذا حصرنا مؤقتا عملية الوصف التجريدى في العنصر ]طالب[، سنالحظ أن الطالب ككائن بشرى ،لديه العديد من البيانات التفصيلية المتعلقة به. وتتمثل هذه البيانات في مجموعة البيانات الشخصية مثل االسم ،العمر و الطول و الوزن وغيرها ،ثم البيانات الصحية ،مثل فصيلة الدم ،و شفرة الحمض النووى ، DNAوأمراض الحساسية التي قد يعانى منها .إضافة لذلك هناك بيانات أخرى 26 مثل عدد االخوة و رقم الحساب المصرفى (إن وجد) ،وتفاصيل رخصة القيادة وغيرها. السؤال الذي يمكن طرحه هنا هو :هل هناك حاجة إلدخال كل هذه المعلومات ضمن النظام المعلوماتى لمعالجة بيانات طالب الجامعة؟ الحظ أنه ال حاجة لتخزين كل هذه البيانات ،إن ماسيتم إدخاله منها هو فقط مايتعلق بمعالجة بيانات أى طالب ضمن العمليات المتوقعة في نظام معلومات الطالب الجامعيين .لذا يتم اإلكتفاء بالبيانات األساسية ،ذات العالقة بمجال التعليم الجامعى ،و يتم تجاهل أمرض الحساسية ،وشفرة البيانات األخرى .فمثال ،بيانات رخصة القيادة ،و ا الحمض النووى ،كلها ال عالقة لها بنظام معلومات الطالب الجامعيين ،ويجب التغاضى عنها ،هذا هو المقصود بالوصف التجريدي للنظام قيد البناء .الحظ أن البيانات التي تم تجاهلها قد تكون ذات أولوية ضمن نظم أخرى ،فمثال بيانات أم ارض الحساسية قد تكون بيانات محورية في نظام معلومات المرضى في عيادة طبية ،بينما تعتبر بيانات شفرة الحمض النووي ذات أهمية محورية عند تجريد البيانات لتصميم منظومة المعلومات الجنائية للمواطنين ،لذلك تسمى عملية التركيز على تفاصيل دون أخرى بعملية التجريد لبيانات النظام المعلوماتي المرتقب. 4.4.1التغليف Encapsulationواخفاء البيانات Information Hiding ذكرنا أنه في عملية تجريد بيانات أي نظام مرتقب ،يتم فقط دراسة وفرز ما يجب االقتصار عليه من البيانات المتوفرة عن النظام .أما عملية التغليف encapsulationفهي تُعنى بالكيفية التي ستنظم وفقها البيانات المنتقاة ،وكذلك 27 تحديد سبل معالجة البيانات المعنية .وفقا للمفهوم الشيئي فإن عملية التغليف تتمحور في فرز البيانات على هيئة مغلفات )كبسولة( ،كل منها يسمى تصنيف .classوسميت مغلفات ألنها تخفي مابداخلها من تفاصيل للتراكيب البيانية data structuresوأنواع الدوال ،functionsالتي من خاللها تتم معالجة البيانات )انظر الشكل .)01-0 التصنيف :مستعير التصنيف :كتاب إسم المحاضر العنوان الدرجة العلمية المؤلف القسم رقم التصنيف تاريخ مباشرة العمل الناشر إسم الطالب سنة النشر التخصص الرقم الدولي الفصل الدراسى إسم الموظف إضافة بيانات كتاب جديد() الدرجة الوظيفية تعديل بيانات كتاب() إالمهنة ضافة بيانات مستعير جديد() إستعارة نسخة() إستعارة نسخة كتاب() إسترجاع نسخة معارة() إرجاع نسخة معارة() …. الشكل ( :)11.-…1مثال لمغلفات تحوى تراكيب البيانات والعمليات الممثلة لسلوك التصنيف …. المعني. عادة كل مغلف أو تصنيف classلديه واجهة interfaceيتم التعامل معه من خاللها ،و دون النظر للتفاصيل .هذا األسلوب في التعامل يحاكي األساليب 28 المتبعة في جميع النظم الهندسية التي يتعامل معها البشر .فالطائرة مثال تعتبر مغلفا أو تصنيفا ،يقوم قائد الطائرة بالتحكم في تشغيلها عبر واجهة تعامل interfaceتتمثل في مجموعة العدادات ،وأجهزة المالحة الجوية المختلفة ،ولكنه يجهل تماما التفاصيل المعقدة لنظرية عمل المحركات ،وحركة أجنحة الطيران ألنها ال تعنيه. الشكل ( :)11-1مثال لمفهوم إخفاء التفاصيل واالكتفاء بالتعامل مع منافذ اإلتصال بأجهز تشغيل السيار . تعتبر قيادة السيارة كمثال أكثر شيوعا لمفهوم التغليف واخفاء التفاصيل ،فقيادة السيارة تستلزم فقط معرفة كيفية التعامل مع واجهة القيادة Interfaceالمتمثلة في العدادات والدواسات وعمود تبديل السرعات وغيره (انظر الشكل ،)00-0بينما تفاصيل احتراق الوقود وانتاج طاقة الحركة وغيرها من تعقيدات ،فهى عادة ما تكون خارج إهتمام السائق ،بل اليلزمه اإللمام بتفاصيلها ألنه ببساطة ال حاجة له بها للتمكن من قيادة السيارة .فمن وجهة نظر التقنية الشيئية ،تعتبر السيارة مغلف ويكتَفَى فقط بإبراز واجهة تعامل يخفي التفاصيل النظرية لطريقة عملهاُ ، dashboardمختصرة وغير معقدة تتمثل في عدادات السرعة والدواسات وعمود 29 تغيير السرعات. المفهوم الشيئي للبرمجة يهدف إلى تحقيق نفس طريقة التعامل مع البرمجيات عبر خاصية التغليف. مبرمجي النظم الشيئية وفقا لمفهوم البرمجة الشيئية أصبح هناك نوعان من المبرمجين ،مبرمجون مختصون ببرمجة التصانيف ( classأى المغلفات) ،وآخرون يستغلون التصنيفات الجاهزة في برمجة وتجميع التطبيقات المختلفة .فالنوع الثاني من المبرمجين ال يهتم بالتفاصيل الداخلية للمغلفات البرمجية بينما يكتفون فقط باإللمام بواجهة التعامل مع هذه المكونات تماما كسائقي السيارات .انظر مثال أسلوب البرمجية المرئية visual programmingالمتمثلة في لغات Visual Basicو Visual C++و غيرها .يمكن للمبرمج بهذه اللغات المرئية ان ينشئ تطبيقا برمجيا في وقت يسير جدا ،فجميع مكونات التحاور مع المستخدم ،من أزرار أوامر ،ومكونات إدخال البيانات (انظر الشكل )04-0تعتبر جاهزة لإلستخدام وفقا الختيارات المبرمج .يمكن للمبرمج فقط تعديل خصائص االلوان ،وعناوين البيانات وترتيبها على الشاشة .جميع هذه اإلجراءات يمكن للمبرمج إنجازها ،دون اإلطالع على شفرة البرامج التي تنشئ العناصر المختلفة لعناصر التحاور مع المستخدم. الطريقة السابقة لتصميم وبناء البرمجيات ،تعتمد على ما يسمى بأسلوب إخفاء المعلومات information hidingعن من ليس له عالقة باإلطالع عليها .هذه الخاصية لها أهمية كبيرة في سهولة أعمال الصيانة للبرمجيات ،فيمكن اإلحتفاظ بنفس بيانات واجهة التعامل ،interfaceبينما يتم تعديل المكونات الداخلية للمغلفات ،أو التصانيف ،دون إحداث أي خلل بالتطبيقات التي تستخدمها .فقد يتم 30 اللجوء لتغيير تراكيب قاعدة البيانات ،أو الفهارس المعتمدة للوصول للبيانات وغيرها دون التعديل الجذرى في التطبيقات البرمجية المعنية. الشكل ) :)12– 1بيئة تطوير البرمجيات المرئية واإلعتماد على النماذج الجاهز القابلة للتعديل. 5.4.1الوراثة Inheritance تتمثل الوراثة عموما في اشتراك أكثر من كائن في خصائص معينة .فمثال رغم أن البشر والحيوانات كائنان مختلفان ،إال أنهما يشتركان في بعض الخصائص كالوالدة مثال .كذلك يهدف المفهوم الشيئي إلبراز الخصائص المشتركة للكائنات 31 البرمجية المختلفة .والهدف من التصنيف الوراثي لألشياء هو االختصار في الوصف ،واالكتفاء بما يجب التصريح به ،بينما يتم معرفة الصفات الموروثة ضمنيا .فمجرد تعريف كائن ما كالغراب مثال بأنه طائر ،فهو تلقائيا يرث الخصائص العامة ألي طائر ،مثل القدرة على الطيران ،دون الحاجة للتعريف بأنه يستطيع الطيران و أن له جناحين و غير ذلك. والبشر عادة يتعاملون تلقائيا بمبدأ وراثة الصفات في وصفهم وتعريفهم لألشياء. فهم يلجأون للتجريد واإلختصار في إيصال المعلومات ،وذلك إعتمادا على فهم اآلخرين للتفاصيل الدقيقة عمال بمبدأ وراثة المفاهيم .فالعرب القدماء يقولون: "توضيح الواضحات من الفاضحات" ،أي أن اإلغراق في الوصف عادة سيئة ،بل قد يوصف فاعلها بالحمق أحيانا .تخيل مثال ،أن شخصا ما تردد على بيتكم سائال عن شقيقك في حال غيابه ،ثم أردت وصف الشخص لشقيقك إثر عودته للبيت ،من المؤكد أنك لن تصف السائل بأنه شخص له عينين ،ويقف على قدمين اثنتين ،وله قامة طويلة ،وأنه يرتدى ربطة عنق!!! تُرى هل يجب ذكر كل هذه التفاصيل لالستدالل على هوية شخص معين!! قطعا ال .فمن المعلوم أن أي ]شخص[ يمكن أن تكون له مثل هذه االوصاف ،و وصف الشخص على ذلك النحو ال يفيد شيئا ،أي بمجرد ِذكر أن شخصا ما أتى للسؤال عن آخر فهذا كافيا مبدئيا ،فكل هذه االوصاف هي أوصاف ضمنية ويرثها أي شخص .بل أن هذا الوصف المغرق في تفاصيل ال لزوم لها ،قد ال يساعد كثي ار في معرفة هوية السائل .فإذا قلت أن شخصا ُيدعى فالن أو به عاهة مميزة ،فإن ذلك أكثر اختصار وداللة على هوية الشخص الموصوف دون اإلغراق في وصفه على ذلك النحو الذى اليفيد. 32 و على صعيد البرمجيات فإنه يستفاد من خاصية الوراثة في تجنب تكرار بعض التراكيب البيانية .وكذلك الدوال البرمجية ،وذلك عند برمجة التطبيقات المختلفة. فتكرار البيانات المتشابهة له تأثير سلبي على استغالل الذاكرة ،كذلك فهو يساهم في تعقيد شفرة البرمجيات مما يؤذى إلى صعوبة صيانتها .وخاصية الوراثة لها صلة مباشرة بخاصية التصنيف ،فالتصنيف يبين مسارات الوراثة بين الكائنات المختلفة (أى من يرث بيانات وسلوك من) .فارتباط الكائن ]س[ بعالقة "يعتبر" مع الكائن ]ص[ ،انما تعنى ان الكائن ]س[ يرث جميع خصائص (اى بيانات وسلوك) الكائن ]ص[ .لذلك عوضا عن التصريح بهذه الخصائص ضمن تعريف الكائن ]س[ ،فإنه يشار فقط إلى أنه يرث الكائن ]ص[ ومن ثم فإنه سيرث سلوك وجميع خصائص الكائن االب ضمنيا. ألدراك مفهوم الوراثة ضمن إطار نظام المكتبة الجامعية ،الحظ أنه رغم إشتراك جميع المستفيدين بالمكتبة في خصائص معينة ،إال أنه هناك بيانات معينة تميز كل شريحة من المستفيدين بالمكتبة ،فالطالب له بيانات معينة تميزه عن المحاضر ،وكذلك الموظف االداري بالجامعة له بيانات معينة تميزه عن الطالب وهكذا .فبيانات الرقم الدراسى مثال ال تنطبق على المحاضر وكذلك بيانات الدرجة الوظيفية للمحاضر أو الموظف ال تنطبق على الطالب وهكذا .لذلك يتم تسمية تصنيف تجريدى عام يطلق عليه] :مستعير[ ،هذا التصنيف يحوي تفاصيل البيانات والعمليات المشتركة ،بين جميع شرائح المستعيرين ،وتتم وراثة هذه البيانات ،و العمليات ،من قبل الكائنات الفرعية ،التي تمثل خصوصيات كل كائن يمثل شريحة من شرائح المستعيرين مثل] :طالب[ و]محاضر[ و]موظف[. فعوضا عن كتابة عدد ثالث دوال منفصلة ،إحداها إلعارة كتاب لطالب ،وأخرى إلعارة كتاب لمحاضر ،وثالثة إلعارة كتاب لموظف ،فإنه وفقا لمفهوم الوراثة يتم 33 كتابة دالة عمومية واحدة إلعارة كتاب ،ويتم استدعاء نفس الدالة من قبل عضو المكتبة ،سواءا كان محاض ار ،أو طالبا ،أو موظفا .ويمكن إنجاز ذلك بعد التصريح بأن التصنيفات: ]طالب[ و]محاضر[ و]موظف[ جميعها التصنيف ]مستعير[ ،وذلك على النحو المبين بالشكل (.)01-0 ترث من خالل الشكل( ،)01-0الحظ أن النموذج األعلى من الشكل يمثل تصميم وبرمجة دالتي إعارة واسترجاع الكتب لكل صنف من اصناف المستعيرين .كل منها كتبت على حدة .بينما النموذج األسفل من الشكل يمثل استغالل خاصية الوراثة في النظم الشيئية .الحظ أن هذه الطريقة أكثر إختصار في الوصف وفى قلة المجهود البرمجى .فبمجرد إبراز ارتباط التصنيفات] :طالب[ و]محاضر[ و]موظف[ مع التصنيف ]مستعير[ بعالقة الوراثة ،إثرها ال يجب كتابة دالة خاصة لإلعارة لكل تصنيف على حدة ،بل جميعها تستغل نفس الدوال المعرفة داخل التصنيف األب وهو التصنيف ]مستعير[. 6.4.1معدل التماسك Cohesion برز مفهوم تجزئة البرمجيات مع ظهور لغات البرمجة الهيكلية ،حيث أمكن كتابة البرامج على هيئة روتينات يتم إنجازها ،واختبارها ،بصورة منفردة ،ثم تلصق ببعضها وفقا لالرتباط الوظيفى بينها .وشكـل مفهوم التجزئة أسلوبا جديدا ،ساهم في إنجاز البرمجيات بصورة جماعية ،باإلضافة إلى التحسن الكبير في جودة البرمجيات المنجزة .مؤخ ار برزت مسائل عدة تتعلق بما يتكون منهه الجزيء (الروتين) ،وما حجمه ،وكثافة اقتران روتين معين بغيره من الروتينات األخرى، التي تشاركه في أداء وظيفة أو مهمة معينة. 34 دالة إعارة كتاب لطالب { دالة إسترجاع كتاب لطالب { ..... } ..... } دالة إعارة كتاب لمحاضر دالة إعارة كتاب لموظف { دالة استرجاع كتاب لمحاضر ..... { دالة إسترجاع كتاب لموظف ..... ..... ..... } } { } ملف طالب { } ملف موظفون ملف محاضرون جزء – أ :تصميم برمجيات دون االستعانة بمفهوم الوراثة مستعير رقم العضوية غرامة مستحقة إعار كتاب( ) {}...... استرجاع كتاب( ) {}...... محاضر موظف طالب جزء – ب :تصميم برمجيات باإلستعانة بمفهوم الوراثة الشكل ( :)11-1نموذجين لتصميم برمجيات وفقا لألسلوب التقليدى (أعلى) وآخر وفقا ألسلوب الوراثة (أاسفل). 35 خاصية تماسك الروتين البرمجي تتعلق بعدد الوظائف أو المهام التي يقوم بها كل روتين .كلما كبر عدد وظائف الروتين أُعتبر ذو تماسك منخفض ،وهى خاصية سيئة خاصة عندما تكون الوظائف غير ذات صلة مطلقا .ويشكل التماسك المنخفض تحديا كبي ار أثناء صيانة البرمجيات المعنية الحقا .على صعيد هندسة البرمجيات الشيئية ،يتمثل معيار التماسك في معدل تماسك التصانيف classes والدوال ،methodsفهى إما ان تكون ذات معدل تماسك عالي highly cohesiveأو ذات معدل تماسك منخفض .low cohesion تثمثل التصانيف والدوال ذات التماسك عالي الكثافة في جعلها إما تصف شيئا واحدا بالنسبة للتصانيف ،أو بجعلها تقوم بوظيفة واحدة بالنسبة للدوال .فبالنسبة للتصانيف مثال ،عند تصميم منظومة اإلعارة بالمكتبة الجامعية ،يمكن اقتراح التصانيف] :محاضر[ و ]طالب[ و]موظف[ .الحظ أنه رغم إشتراك هذه التصانيف في البيانات األساسية الخاصة باإلعارة كرقم المرجع المعار وتاريخ اإلعارة ومدتها ،غير انه لكل من هذه التصانيف بيانات أخرى تميزه ،كالمنصب الوظيفى بالنسبة للتصنيف ]موظف[ ،والفصل الدراسى بالنسبة للتصنيف ]طالب[، و الدرجة العلمية بالنسبة للتصنيف ]محاضر[ .لذاك هناك بيانات تخص كل نوع من أنواع المستفيدين من خدمات المكتبة .ومن تم ،فإن اختزال كل أنواع المستفيدين واقتراح تصنيف تجريدى شامل يدعى ]مستعير[ ( borrowerيجمع تفاصيل جميع أنواع المستفيدين) يعتبر أم ار غير جيد .وتعتبر هذه الطريقة في التمثيل ذات تماسك/التصاق منخفض low cohesionوهو خاصية سيئة. أما الطريقة المثلى فهي اقتراح كائنات ذات تماسك عالي ،وذلك بإتباع التمثيل الهرمى hierarchalللتصانيف ،والذي يعتمد على مفهوم وراثة inheritance 36 الخصائص المتشابهة بين التصانيف .فعند تصميم نظام المكتبة ،يتم تمييز كل نوع من أنواع المستعيرين كتصنيف classبمفرده ،بينما يتم اقتراح تصنيف عام يمثل الخصائص المشتركة (البيانات) بين جميع انواع المستعيرين .يمكن تسمية التصنيف العام بـ ]مستعير[ بينما تقوم التصـانيف الفرعية مثل ]محاضر[ و ]طالب[ و]موظف[ بوراثة البيانات والعمليات األساسية لعمليات االستعارة .وفقا سيمثل بتصنيف بمفرده لهذا النهج في التمثيل فإن كل نوع من أنواع المستعيرين ُ وهو ما يوافق شرط التماسك العالي high cohesionوهى خاصية ايجابية. تتميز الوحدات البرمجية ذات التماسك العالي ،بإنها إذا كانت هناك حاجة إلى تغيير أي من العمليات ،أو تراكيب البيانات التي تخص أي من أنواع المستعيرين، فإن التعديالت المحتملة ستكون فقط في التصنيف المعنى دون غيره من التصانيف. فمثال إن كانت هناك حاجة إلتاحة الفرصة للمحاضرين فقط لالستعارة الخارجية ( interlibrary loanأي استعارة كتب من مكتبات جامعات أخرى) .ففي هذه الحالة يتم التعديل في تركيبة التصنيف ]محاضر[ فقط ،يتم ذلك بإضافة دالة جديدة تقوم بأداء هذه العملية ،بينما ال يتم التطرق ألى من التصانيف األخرى عند إجراء هذه العملية ،ومن ثم فهى لن تتأثر سلبا بأعمال الصيانة التي تجرى على التصنيف المراد تعديله. بالنسبة لتماسك للدوال فمثال عند تصميم تصنيف classمن نوع ]كتاب[ ،فمن المؤكد أن هذا التصنيف سيتضمن دوال عديدة ،مثل :عملية استعارة كتاب )( borrow_a_bookوعملية استرجاع كتاب )( return_a_bookباإلضافة إلى عمليات أخرى مثل أضف كتاب جديد )( add_a_bookوعملية حذف كتاب، )( delete_a_bookوغيرها .الحظ أنه من الممكن جعل كل من عمليتى استعارة 37 كتاب ،وعملية استرجاع كتاب ،تُنجزان من خالل دالة functionواحدة .في هذه الحالة تسمى هذه الدالة السابقة بدالة ذات تماسك منخفض .low cohesion مشكلة هذه الطريقة في بناء البرمجيات أن شفرة البرامج codeتكون أكثر تعقيدا، فمثال عند الرغبة في تعديل الئحة استرجاع الكتب ،فإن مهندس الصيانة سيتتبع شفرة الدالة بأكملها لكى ينجز التغيرات المناسبة ،رغم أن التغييرات تخص مهمة واحدة وهي مهمة (اى استرجاع كتاب) دون غيرها .لذلك يستحسن جعل كل من العمليتين تنجز بواسطة دالة methodمنفردة ،عندها يكون كل من الدالتين الجديدتين ذات تماسك عالي البنية وهو ما توصى به أساليب هندسة البرمجيات الحديثة .الشكل ( )02-0يبين تصو ار لألنواع المختلفة لتماسك الدوال البرمجية. 7.4.1معدل االرتباط Coupling االرتباط هي خاصية يقاس من خاللها كثافة اإلتصاالت (أي االستدعاءات) بين وحدات البناء البرمجية ممثلة في التصانيف classesوالدوال methodsالتي يتكون منها النظام .ويتمثل االرتباط للتصانيف في عملية استدعاء أي تصنيف لتصنيف آخر أو مجموعة تصانيف أخرى وذلك من أجل إنجاز مهمة معينة .أما االرتباط بين الدوال فيتمثل في عملية استدعاء دالة ما methodلدالة أو لمجموعة دوال أخرى النجاز وظيفة معينة .ويتم إنجاز االرتباط بين أي تصنيفين بطريقتين مختلفتين ،فعند استدعاء تصنيف ما لتصنيف آخر دون التدخل الم َخاطَب ،عندها يسمى في المكونات الداخلية للتصنيف ُ هذا النوع من االرتباط إرتباطا مرنا loose couplingوهو النوع الجيد من االرتباط .أما عندما يكون االرتباط بين التصنيفين المعنيين يشمل استدعاء وتنفيذ بعض البيانات ،أو الدوال الخاصة بتصنيف معين من قبل تصنيف أخر ،عندها يسمى هذا النوع من 38 اإلرتباط ارتباط قوي strong couplingوهو سيئ التأثير ،حيث تعتبر خاصية االرتباط القوي أم ار يخرق قواعد النظرية الشيئية وتحديدا مفهوم التغليف encapsulationالذي يصر على استقاللية الكائنات. )Function sak( , , , دالة ذات تماسك(سيئ) )Function xyz( , , , دالة ذات تماسك(مقبول) )Function abc( , , , دالة ذات تماسك مثالى الشكل( :)14-1نماذج لدوال ذات ترابط داخلى/تماسك مختلف. لتوضيح هذه المسألة من خالل نظام المكتبة الجامعية ،الحظ أنه عند الحاجة إلى إنجاز عملية استعارة كتاب من قبل أي ]مستعير[ ،يجب أوال الكشف عن حالة الكتاب (معار ،محجوز ،مرجع ال يعار ،الخ) .إلجراء هذه العملية يمكن جعل التصنيف ]مستعير[ قاد ار على قراءة بيانات حالة الكتاب book statusالمدرجة ضمن التصنيف ]كتاب[ ،ومن ثم استكمال العملية .وهذا النوع من االرتباط يسمى إرتباط قوي .الطريقة األخرى تتمثل في مخاطبة التصنيف ]مستعير[ للتصنيف ]كتاب[ وذلك بواسطة ارسال الرسالة )(( get_book_statusأي ما هي حالة المراد) .في هذه الحالة فإن عملية قراءة البيانات المعنية تتم من قبل الكتاب ُ التصنيف المختص وهو التصنيف ]كتاب[ وهو بدوره ينقل الجواب للتصنيف 39 ]مستعير[. هذا النوع من اإلرتباط يسمى ترابطا مرنا وهو االفضل ألنه يعزز أسلوب التخاطب عبر المراسالت messagesالذي توصى به النظرية الشيئية. 8.4.1تعدد األشكال Polymorphism هذا المفهوم هو محاكاة لسلوك حيوان الحرباء ،اذ من المعروف ان الحرباء لها القدرة على أن تتلون بألوان مختلفة .و بالنسبة لهندسة البرمجيات الشيئية فالهدف من تحقيق خاصية تعدد األشكال هو بناء مكونات برمجية ،لديها القدرة على التكيف مع أنواع مختلفة من المعطيات .تحقيق هذه الخاصية ُيمكن من تفادي كتابة شفرات برامج codeمختلفة للتعامل مع كل نوع من أنواع المعطيات، فالكائن متعدد األشكال سيسلك سلوكا متبدال وذلك وفقا للمعطيات المزود بها. فمثال ،نظ ار الن لوائح اإلعارة في نظام المكتبة تختلف بحسب نوع المستعير (محاضر ،طالب ،موظف) فمن البديهي أنه سيتم تصميم وكتابة دوال مختلفة النجاز عملية اإلعارة لكل نوع من أنواع المستعيرين وذلك على النحو التالى: استدعاء دالة دالة اإلعارة لطالب..... استدعاء دالة اإلعارة لمحاضر........ استدعاء دالة اإلعارة لموظف......... )(borrorw_book_student )(borrorw_book_lecturer )(borrorw_book_employee الحظ أن كل من الدوال السابقة لها شكل واحد في التعامل ،أي أنها تقوم بأداء خدمة إعارة كتاب لصنف معين من المستعيرين (طالب ،محاضر ،موظف). مايراد تحقيقه باستخدام خاصية تعدد األشكال polymorphismهو تصميم دالة ُ واحدة يمكنها التكيف مع أي نوع من أنواع المعطيات المختلفة المتمثلة في أصناف المستعيرين .فوفقا للمعطيات المرسلة عند استدعاء الدالة متعددة األشكال فإنها تسلك السلوك الخاص بالمعطيات المعنية .إن كانت المعطيات تشير إلى أن 40 المستعير هو من صنف ]محاضر[ ،فإن الدالة ستختبر شروط اإلعارة بالنسبة للمحاضرين ،وهكذا بالنسبة ألصناف المستعيرين اآلخرين ،أي أن نفس الدالة تتعامل مع معطيات مختلفة وبسلوك مغاير .لذلك فإنه عوضا عن كتابة دالة خاصة باإلعارة لكل شريحة من شرائح المستعيرين ( كما هو مبين سابقا) ،فإنه يتم اللجوء إلى صياغة دالة واحدة متعددة األشكال (أى حرباوية التشكل) لها القدرة على التعامل مع الشرائح المختلفة من المستعيرين ُك ٌل حسب لوائح اإلعارة الخاصة به. 9.4.1التطوير وفقا للمكونات البرمجية الجاهزة Component-Based لقد تم إعتماد طريقة بناء البرمجيات بواسطة المكونات الجاهزة في إطار حملة إعادة إستخدام المكونات البرمجية المستعملة سابقا .software reuseو تهدف هذه الحملة إلى عدم برمجة النظم المعلوماتية من الصفر في كل مرة ،بل يتم اللجوء إلى إعادة استغالل مكونات برمجية سابقة كلما أمكن ،وذلك اختصا ار للوقت والجهد .ورغم الوعود التي صاحبت ظهور النظرية الشيئية من حيث قدرتها على تصميم مكونات برمجية يمكن إعادة استخدامها على نطاق واسع ،إال أن ما تحقق حتى اآلن هو أقل بكثير من المتوقع .فكان من المفترض أن يتم إعادة إستخدام المكونات الشيئية على مستوى التصانيف ،classesإال أن التفاصيل الدقيقة للتصانيف ولغات البرمجية المنجزة بها ،حالت في كثير من األحيان دون إعادة استخدامها دون تغييرات جوهرية .لذلك تم التفكير في تصميم مكونات برمجية أكثر عمومية ،ولها صفة االستغالل في العديد من التطبيقات داخل مجال معين (تعليم ،ترفيه ،تجارة الكترونية ،الخ). 41 من حيث الحجم ،تعتبر المكونات البرمجية software componentsذات حجم أكبر من العناصر الشيئية المألوفة (تصنيف ،كائن) .بل قد تتكون من مجموعة من التصانيف ذات العالقة والتى تقوم بمهمة محددة .ويعتبر هذا فرقا جوهريا بين المكونات البرمجية software componentsوالعناصر الشيئية مثل التصنيف classمثال .فإعادة إستخدام التصانيف classesتستلزم التوافقية compatibilityبين لغات التمثيل لهذه التصانيف ولغة التمثيل المستخدمة في البرمجيات المستهدف بنائها ،أما فيما يخص إعادة إستخدام المكونات البرمجية، يتم فقط استدعائها ألداء الخدمة serviceالمنوطة بها ،فهي لها القدرة على التخاطب مع أي نوع من أنواع المكونات البرمجية التي تستدعيها ،و بأى لغة ُكتبت أو نوع نظام تشغيل يدعمها .أي أن مسألة شرط التوافقية ليست مطروحة مطلقا. 10.4.1األنماط Patterns يطلق مصطلح نمط patternعلى كل ما هو سائد من سلوك أو شكل وغيره. ِ فالحرفى المختص في صناعة أي شيء غالبا ما يسلك نهجا نمطيا (مكر ار) في إنجاز مشغوالته ،والتعامل مع األنماط المتكررة هو ما يكسب المهارة التي تميز المبتدئين عن المحترفين في المجاالت المختلفة .ومفهوم التعامل باألنماط ليس حك ار على صناعة البرمجيات ،بل هو متبع من قبل أي مهندس أو حرفى في أي مجال من مجاالت الحياة .فمثال لو تتبعنا سلوك مهندس االنشاءات المدنية عند شروعه في رسم التصاميم االنشائية أو المعمارية لمبنى مدرسة مثال ،فمن المالحظ أن هناك أنماط سائدة الشكال عمارة المدارس ،فالمدرسة باالساس عبارة عن مجموعة فصول دراسية ومكاتب وساحات النشاط الرياضى وغرف المنافع الالزمة 42 مع مراعاة نواحي السالمة والصحة العامة في التصميمات المستهدفة .و من األنماط السائدة لتصميم المدارس أنها تتمحور حول مجموعة من الفصول المتجاورة طوليا أو على هيئة شكل مربع ناقص ضلع تتخلله ساحة النشاط وهكذا. تمثل هذه األنماط نقطة البداية ألي مهندس معماري وهى بالتأكيد تجعله يضع كل تركيزه في ابتكار التفاصيل الدقيقة التي من الممكن أن تميز مدرسة عن أخرى. وإلدراك أهمية االسترشاد باألنماط وسهولة العمل من خاللها ،تخيل أن ُيطلب من معمارى امريكى أن يصمم مسجدا حديثا في مدينة عربية .الشك أن مهمة هذا المعمارى من الصعوبة بمكان ،فقد ال على دراية باألنماط السائدة لعمارة المساجد في بالدنا المسلمة .ولذلك فهو غالبا سيصمم المسجد بصورة قد ال تثير استحسان الناس الذين تعودوا على االنماط الشائعة لعمارة المساجد في بلدان العالم االسالمي .بينما من اليسير إسناد نفس المهمة لمعمارى مسلم نشأ في بيئة مسلمة، حيث عادة ما يكون هذا المعماري ملما باألنماط السائدة في عمارة المساجد ومتأث ار بها .لذلك فهو البد أن يلجأ إلى إستخدام انماط معمارية سائدة كالمآذن والقباب واألقواس وغيرها. وليس المهندسين المعماريين وحدهم من يلجأون للتعامل مع األنماط بل هو أسلوب متبع من قبل مصممى السيارات ،ومصممى المصانع ،ومصممى المالبس ،وغيرهم .بالتالى فالتعامل مع األنماط من قبل مهندسي البرمجيات أم ار ليس جديدا ،بل هو استعارة لنفس المفهوم واستخدامه في مجال هندسة البرمجيات. يهدف رصد أنماط البرمجيات software patternsإلى توفير مكتبة من أنماط تصميم البرمجيات ،والتى تساعد في تسريع عملية بناء البرمجيات عن طريق 43 إعادة إستخدام reuseاألنماط السابقة .وهذه اإلعادة ليست بالضرورة إعادة َحرفية للبرمجيات السابقة في جميع تفاصيلها ،بل إعادة إستخدام األنماط األساسية فيما تضاف الحقا الجزئيات اإلبداعية التي تميز كل مبرمج .عمليا ،الحظ أنه هناك تشابها كبي ار في برمجيات البريد اإللكترونى .Emailفالنمط السائد لهذه البرامج أنها تحتوى على مساحة لتحرير الرسائل editorومساحة لتحميل الملفات الملحقة attachmentsإضافة لروابط linksالستعراض صفحة البريد الوارد ،وصفحة البريد الصادر وغيرها .أي شخص ينوى تصميم وبناء برنامج بريد الكترونى جديد البد وأن يستعين بهذه األنماط السائدة لبرامج البريد اإللكتروني .وهذا ما يفسر سهولة إستخدام أي برنامج بريد الكترونى ألول مرة من قبل مستخدمين إعتادوا التعامل مع برامج بريد إكترونى أخرى .ومما تقدم فإنه إضافة لتسريع إنتاج البرمجيات فإن وجود مكتبة لألنماط البرمجية السائدة ،تساهم في نقل خبرات المبرمجين والمصممين المحترفين إلى المبرمجين والمصممين الجدد. 44 أسئلة الفصل االول اختر االجابة الصحيحة قرين كل سؤال ؟ -0تبرز الحاجة لوصف النظم المعلوماتية من أجل ..... أ -توفير قناة اتصال بين مهندس البرمجيات و المؤسسة المستفيدة. ب -تحليل النظام المعلوماتى قيد البناء. ج -إعداد نماذج مخططات وصف تجريدية تستخدم لفهم تفاصيل النظام قيد البناء وآلية عمله. د -تسهيل مهمة المبرمجين من أجل ترجمة مخططات النظام إلى شفرة برمجيات. ه -جميع االجابات خاطئة . -4تستخدم صيغ الوصف القياسية (لغات الوصف) للتغلب على مشكلة... أ -صعوبة التواصل بين الزبون ومهندسي االبرمجيات. ب -الغموض المصاحب للوصف السردى لتفاصيل النظم المعلوماتية قيد البناء. ج -صعوبة قياس انتاجية مهندسي البرمجيات. د -بطء إنجاز التطبيقات البرمجية في مواعيدها المقررة. ه -جميع االجابات خاطئة. -1يساهم تعدد مفردات ومخططات وصف النظم في ...... أ -تعقيد عملية بناء النظم المعلوماتية. ب -دقة وصف مكونات النظم المعلوماتية من نواحيها المختلفة. ج -إرهاق مهندسي البرمجيات في أعمال وصف النظم. 45 د -ليس لتعدد المفردات والنماذج أي تأثير على وصف وبناء النظم ه -جميع االجابات خاطئة . -2توفر النماذج التجريدية لوصف النظم المعلوماتية (قيد البناء) ...... أ -مجاال إلختبار ومراجعة النظم قبل إنجازها الفعلي. ب -وسيلة لتفادى ارتكاب أخطاء تصميم النظم قيد البناء. ج -وسيلة لتنظيم إنجاز االعمال من قبل فرق تطوير البرمجيات. د -قاموسا مرجعيا لجميع اعضاء فرق تطوير البرمجيات. ه -جميع االجابات صحيحة. -1يمثل الكائن .... object أ -اى عنصر بيانات يتعلق بمجال التطبيق (النظام) قيد التحليل. ب -اى عنصر بيانات له هوية وسلوك مستقل ضمن بيئة النظام. ج -اى مستند من مستندات النظام الحالى والمستهدف ميكنته. د -اى كائن بشرى يتعلق بالنظام قيد البناء. ه -جميع االجابات خاطئة . -2أحد العناصر التالية ال ينطق عليه مفهوم الكائن objectضمن المنهج الشيئي لتمثيل البرمجيات. أ -زبون. ب -فاتورة. ج -سلعة. د -قلم. هُ -م َوِرد (مزود). -1الرسالة messageهي عبارة عن ..... أ -عملية تمثل سلوكا معينا ألحد كائنات النظام. 46 ب -وحدة بناء النظم الشيئية. ج -ارسال معلومة من كائن objectآلخر. د -طلب خدمة يؤديها كائن objectلصالح كائن آخر. ه -جميع االجابات خاطئة . -3التصنيف classهو عبارة عن ....... أ -مجموعة من الكائنات التي تربطها عالقة "وراثة". ب -وصف تجريدى عام لمجموعة من الكائنات التي تشترك في بعض الخصائص والسلوك. ج -وصف تجريدى عام لمجموعة من الكائنات التي تستدعى بعضها البعض. د -اصناف البيانات التي لها سلوك وهوية مميزة. ه -تصنيف الكائنات objectsوفقا لوظائفها. -5بيانات احد الخيارات التالية ال يمكن تمثيلها من خالل تصنيف ذو مستوى تجريد أعلى. أ -فاتورة – كشف حساب – كشف طلبية. ب -سيارة – جرار – شاحنة. ج -مدرسة – روضة – جامعة. د -كرسي – فصل – تلميذ. ه -جميع االجابات صحيحة. -01يمثل التغليف encapsulationعملية ....... أ -تمثيل الكائنات ذات العالقة على هيئة مغلفات ذات مستوى تجريد اعلى. 47 ب -تجميع الكائنات ذات العالقة على هيئة مغلفات تُدعى تصانيف .classes ج -إعداد توليفة من البيانات والعمليات التي تُجرى عليها والتعامل معها وحدة واحدة. د -إعداد كبسوالت (مغلفات) برمجية تحوى بداخلها تراكيب بيانات النظام فقط. ه -جميع االجابات صحيحة. -00تتمثل خاصية إخفاء المعلومات information hidingفي ..... أ -استخدام خوارزميات التشفير إلخفاء الطبيعة الحقيقية لبيانات النظام. ب -اخفاء تفاصيل بناء النظام عن الزبون. ج -حجب التفاصيل الداخلية للكائن البرمجي وحصر التعامل مع الكائنات األخرى بواسطة الرسائل messageالمخولة. د -حجب سلوك (عمليات) الكائنات عن التصانيف األخرى. ه -جميع االجابات خاطئة. -04تستخدم خاصية الوراثة في ...... أ -صياغة الرسائل messagesالموجهة من كائن آلخر. ب -تفادى مشكلة تكرار بيانات كائنات النظام المتشابهة. ج -ضمان استجابة كائن ما لرسالة messageمرسلة من كائن آخر. د -الكشف عن األخطاء التنفيذية للكائنات. ه -جميع االجابات خاطئة . -01تستخدم خاصية التماسك ..... cohesion أ -لتقدير درجة تعقيد complexityالبنية الداخلية للكائن أو التصنيف البرمجي. 48 ب -لتقدير كثافة الرسائل messagesالموجهة من كائن ما إلى كائنات النظام األخرى. ج -لمعرفة معدل األخطاء الداخلية التي تحتويها الدوال الداخلية للكائن البرمجى. د -لتحقيق خاصية إخفاء البيانات والسلوك للكائنات والتصانيف البرمجية. ه -جميع االجابات خاطئة . -02تستخدم خاصية االرتباط ..... coupling أ -لتقدير درجة تعقيد complexityالبنية الداخلية للكائن أو التصنيف البرمجى. ب -لتقدير كثافة الرسائل messagesالموجهة من كائن ما إلى كائنات النظام األخرى ذات العالقة. ج -لمعرفة معدل األخطاء الداخلية التي تحتويها الدوال الداخلية للكائن البرمجى. د -لتحقيق خاصية اخفاء البيانات والسلوك للكائنات والتصانيف البرمجية. ه -جميع االجابات خاطئة . -01تساهم خاصية تعدد األشكال Polymorphismفي ....... أ -بناء مكونات برمجية متعددة المستويات الوراثية. ب -بناء دالة برمجية متعددة السلوك (عمليات). ج -بناء مكونات برمجية متعددة التراكيب البيانية. د -بناء دالة برمجية متعدد المعامالت .parameters ه -تسهيل صيانة البرمجيات الشيئية عبر إعتمادها خاصية الوراثة. 49 الفصل الثانى :وصف عام للغة الوصف UML 0.2تمهيد تعتبر لغة التوصيف الموحدة ،UMLلغة الوصف األحدث واألشهر في مجال وصف وتطوير النظم المعلوماتية ،بل يمكن وصفها بأنها لغة الوصف القياسية عالميا .وبالتالى أضحى إتقان لغة UMLمن المهارات األساسية لكل مهندس برمجيات الحاسوب ،وكأي لغة بشرية ،أو لغة برمجية ،فإن لغة UMLتتكون من مجموعة من المفردات ،والقواعد ،والمخططات ،التي يتم من خاللها وصف أي نظام معلوماتي .وقدرة لغة UMLعلى الوصف ال تقتصر فقط على وصف النظم المعلوماتية المدعمة حاسوبيا ،بل تتعدى ذلك إلى وصف أي نظام هندسي أو اقتصادي أو اجتماعي أو غيره. قبل بروز لغة ) UMLأواخر الثمانيات وحتى أوائل التسعينيات( ،كانت هناك العديد من لغات وصف و نمذجة النظم المعلوماتية .بل إن صناعة البرمجيات آنذاك كانت شهدت ما ُسمى بحرب اللغات و الطرق الوصفية ،وذلك نظ ار للعدد الهائل لطرق وصف وبناء البرمجيات المختلفة ،والتى تتباين في طرائقها و المخططات الوصفية التي تستعين بها .ولكن ما يميز لغة UMLهو بروزها تتويجا إلسهامات رواد أشهر ثالثة طرق لوصف النظم المعلوماتية .وتتمثل هذه الطرق الثالث فى: -0طريقة Boochللمؤلف Grady Booch -4طريقة Objectoryللمؤلف Ian Jacobson 50 -1طريقة ) Object Modeling Technology (OMTللمؤلف Jim .Rambaugh للوصول إلى طريقة معيارية لوصف ونمذجة البرمجيات ،فقد تضافرت جهود المؤلفين الثالثة للخروج بطريقة واحدة ،يتم فيها األخذ باإلعتبار المزايا والعيوب التي تضمنتها كل طريقة وصفية .لقد كانت حصيلة هذه الجهود هو الخروج بما ُسمى بلغة وصف البرمجيات الموحدة .UMLمنذ ذاك الحين ،صارت لغة UMLهي لغة الوصف المرئية المعتمدة لتحليل وتصميم النظم الشيئية من قبل عنى بوضع مؤسسة ) Object Management Group (OMGوالتى تُ َ (انظر البرمجيات بصناعة الخاصة والمعايير المقاييس .)http://www.omg.org/ 1.2مخططات UML رغم أن UMLتوصف إصطالحا بأنها لغة لوصف أنظمة الحاسوب ،كلغة C++أو JAVAوغيرها .إال أنها تختلف من حيث تميزها في استخدام الرسوم، أو األشكال الهندسية لوصف النظم ،عوضا عن استخدام النصوص الرقمية والحرفية فقط كما هو الحال في لغات البرمجة االعتيادية .لذلك تُـشكل األشكال ما يسميه كيمبل) Kimmel(2005بالنحو المرئى visual والرموز ،grammarوذلك خالفا للقواعد النحوية المعتادة التي تعتمد على النص فقط. وقياسا على عدم ضرورة إلمام أي شخص بجميع قواعد النحو العربي كي يتمكن كتابة تقرير جيد ،فكذلك الحال بالنسبة لتعلم لغة .UMLفنظ ار لشمولية التطبيقات 51 المختلفة لهذه اللغة ،فإنها تحتوى على العديد من القواعد ،ومخططات التمثيل، التي ليس من الواجب االستعانة بها جميعا لتمثيل أي نظام .بل يخضع استخدام مخططات لغة UMLإلى متطلبات النظام قيد االنجاز. مسألة االستعانة بالرسوم والصور في وصف األشياء ،هي لمجرد تقريب فهم المراد وصفه ،و بأقل جهد ذهنى ممكن .فوفقا للمثل الصينى القديم :الصورة أكثر تعبي ار من الوصف السردى بآالف الكلمات ،كذلك الحال بالنسبة للغة ،UMLفهى تعتمد إعتمادا أساسيا على األشكال الهندسية في وصف النظم ،كطريقة أدق تعبي ار و أيسر للفهم من ِقبل أعضاء فرق تطوير البرمجيات من ناحية ،وكذلك كوسيلة للتحاور مع زبائن النظم المعلوماتية من ناحية أخرى ،فالزبون العادي غالبا ما يجهل أو يغفل العديد من المصطلحات التقنية المختلفة. 4.4تعريف النموذج Model النموذج هو عبارة عن مجموعة من المخططات ،diagramsذات األشكال الهندسية ،والصور ،التي تحمل دالالت وصفية محددة .وتماثل هذه األشكال والصور في وظيفتها الحروف االبجدية الى لغة بشرية .فبدال من االستعانة بالوصف السردى للنظام ،يتم إنجاز عملية الوصف عبر األشكال ،والصور، و هي أسرع استيعابا ،و أيسر للفهم ،مقارنة بالوصف السردى ،الذي قد يتجاوز العديد من الصفحات ،هذا باإلضافة إلى الغموض الذي قد يصاحب النصوص السردية عموما. 52 مثلما تمثل الجملة ،أو العبارة ،وحدة البناء األساسية لكتابة النصوص في اللغات البشرية ،فإن مخططات لغة UMLالمختلفة ،تُمثل وحدة بناء أي نموذج model لوصف مخرجات عمليات تحليل وتصميم النظم المعلوماتية .والنموذج Model هو عبارة عن مخطط diagramأو مجموعة من المخططات الوصفية التي تصف أي عملية أو وظيفة من وظائف النظام المعلوماتى قيد البناء. مشهد الزبون Use Case diagrams البنى األساسية مشهد ُ Class Diagrams Object diagram Component Diagrams Sequence and Collaboration Diagrams State chart Diagrams Component diagram Packages مشهد تفاصيل وظائف النظام واساليب التنفيذ مشهد التشغيل الفعلى Deployment Diagrams الشكل ) : )1-2المخطط العام لمخططات لغة UMLوالمشاهد التي تدعمها. تقوم لغة UMLبوصف النظم عبر إستخدام مخططات عديدة كل منها يقوم بوصف وتمثيل النظام من نواحي معينة .فكل نظام يمكن وصفه من مشاهد أو 53 زوايا متعددة وكل مشهد أو زاوية ربما يحتاج إلى صيغة معينة لوصفه .ويمكن إجمال مخططات لغة UMLو اغراضها بالشكل ) .)1-2الحظ انه هناك العديد من المخططات التي توفرها لغة UMLوهى تختلف حول أي من نواحي النظام التي يقوم بوصفها كل مخطط. الشكل ( :)4-4الوصف المختلف للفيل من قبل جماعة العميان. حول سبب تعدد مخططات لغة الوصف لغة UMLيمكن االستعانة بقصة الفيل وجماعة العميانُ .يحكى أنه كان هناك مجموعة من العميان ،يسيرون وسط الغابة ،وفجأة تدحرجوا من فوق هضبة ،و وجد كل منهم نفسه معلقا بناحية من نواحي كائن ضخم سقطوا فوقه وعلى نواحيه(انظر الشكل .)2-2بدأ الجميع بمحاولة التعرف على الكائن الضخم من خالل تحسس مواضعهم ،قال الذي 54 إعتلى ظهر الفيل إنه مجرد جبل ،وقال آخر كان ممسكا بخرطوم الفيل ،إنها أفعى ضخمة ،بينما تكهن آخر (كان ممسكا بفخذ الفيل) بأنه يمسك بجذع شجرة. وهكذا فكل واحد منهم رمى بتكهن معين ،دون أن يميز أي واحد منهم أنه فيل .من المالحظ أن كل شخص إستطاع أن يعبر عن تصوره عن الكائن دون أن يميزه على وجه الدقة .الدرس المستفاد هاهنا هو أنه لوصف أى شئ على وجه الدقة، البد من معرفة نواحيه المختلفة كلها .ولكى يتم ذلك البد من االستعانة بلغة وصف تصف المشاهد أو الزوايا المختلفة للكائن .الكائن فى هذا المثال هو النظام إصطالحا ،فمن أجل االلمان الجيد بنظام ما ،البد من النظر إليه ووصفه من جميع الزوايا. الفقرات التالية تعرض مختص ار لكل مخطط وصفي من مخططات ،UMLبينما سيتم تفصيل مكوناتها في فصول الحقة. 1.2مخطط وصف وقائع اإلستخدام Use Case diagrams تستخدم مخططات وقائع اإلستخدام Use Caseفي رسم نموذج وقائع اإلستخدام للنظام قيد التحليل .وهى تقوم بوصف وتعريف الوظائف/الخدمات األساسية للنظام المعلوماتى .مخططات وقائع اإلستخدام ال تقوم بوصف التفاصيل الدقيقة لوظائف النظام بل تكتفى فقط بعناوين الوظائف/الخدمات مع بيان المنفذين لها أو المستفيذين منها .ويرمز ألي وظيفة بشكل بيضاوى بينما يرمز للمنفذ أو المستفيد من العملية برسم كاريكاتورى لكائن بشرى كما هو مبين بالشكل (.)3-2 55 طلب عناوين جديدة من ناشرين إستعارة كتاب موظف مكتبة مستعير إسترجاع كتاب معار الشكل ( :)1–2جانبا من نموذج وصف وقائع اإلستخدام ضمن نظام مكتبة جامعية. الشكل ( )3-2يبين مثال مختصر لمخطط وقائع اإلستخدام الخاص بنظام معلومات مكتبة جامعية .الحظ ان المخطط يورد فقط عناوين الوظائف/الخدمات التي يمكن أدائها عبر النظام المعنى وكذلك من هو الفاعل أو المستفيد من أي خدمة من خدمات المكتبة الجامعية. 4.2مخطط وصف تبدل الحالة Statechart Diagrams تستخدم مخططات وصف تبدل الحالة في رصد تغير حالة أي كائن برمجي من صورة ألخرى ،ويحدث هذا التغير إستجابة ألى رسالة messageكطلب تنفيذ عملية أو خدمة معينة .فمن المعلوم أن أي رسالة إنما هي طلب ألداء أي عملية، 56 و أى عملية قد ينجم عنها تغيير حالة الكائن المعنى من صفة ألخرى .فمثال من خالل نظام االعارة بمكتبة جامعية ،ستتغير حالة الكائن ]كتاب[ من صفة متوفر إلى صفة معار إثر استالم رسالة بطلب تنفيذ عملية إعارة نسخة كتاب)( .كذلك تنقل صفة الكتاب من صفة معار إلى صفة متوفر إثر تنفيذ عملية استرجاع كتب)( من قبل احد المشتركين بالمكتبة .الشكل ( )4-2يبين مخطط وصف تبدل حالة الكائن ]كتاب[ من حالة ألخرى مع بيان الرسائل messages التي تساهم في تشكل كل حالة من حاالت نسخة الكتاب. رسالة طلب استرجاع كتاب متوفر على الرف )(Return_book معار )(Borrow_book رسالة طلب إعارة كتاب الشكل ( :)4-2مخطط وصف تبدل الحالة للكائن كتاب. 5.2مخطط وصف المهام Activity Diagrams تستخدم مخططات وصف المهام Activity diagramsفي وصف خطوات تنفيذ أي مهمة مدرجة ضمن مخططات وقائع االستخدام .ووظيفتها مشابهة لوظيفة الخرائط اإلنسيابية flowchartsالتقليدية .فهى تبين أوال خطوات إنجاز أي عملية باإلضافة إلى تزامن تنفيذ هذه الخطوات .قد يتم تنفيذ بعض الخطوات 57 بالتوالى و أخرى بالتوازى ،وذلك وفقا لتسلسل حل المسألة قيد الوصف. الشكل ( )0-2يبين مخطط وصف مهمة استرجاع كتب)( من قبل موظف مكتبة جامعية. إستالم نسخة كتاب مسترجعة ]تجاوز مد االعار [ طباعة إيصال نقذى حساب الغرامة المقرر تصنيف شخص تعديل بيانات الكتاب ووضعه على الرف إنتقل إلى الزبون التالى الشكل ( :)4-2مخطط وصف عملية استرجاع الكتب من قبل موظف مكتبة. 58 6.2مخطط التصانيف Class Diagrams يستخدم مخطط التصانيف في وصف البنية األساسية الثابتة للنظام static ،viewهذا المخطط ال يتعرض لتفاصيل سلوك behaviorالنظام ،من عمليات ووظائف وغيرها .فهو تحديدا يقوم بتعريف تصانيف classesالبيانات األساسية التي يتضمنها النظام المقصود ،فكل تصنيف ُيمثل قالبا بيانيا يمثل العينات المختلفة لبيانات النظام قيد الوصف .فإثر فرز تصانيف النظام تتم االستعانة بهذا المخطط لتحديد عالقات التعاون فيما بين تصانيف النظام ،وذلك من أجل إنجاز الخدمات المتوقعة من النظام. كتيب ملكية *1.. 1 لها يمتلك 1 سائق 1 1 يملك *1.. شاحنة مركبة سيارة دراجة نارية الشكل ( :)6-2شكل يمثل جزءامن مخطط التصانيف ضمن نظام معلومات المركبات اآللية التابعة لمصلحة المرور والتراخيص. 59 عند تعريف أي تصنيف ،يتم تحديد بياناته األساسية ،والمهام التي يساهم في إنجازها .إضافة إلى ذلك فمخطط التصانيف يقوم أيضا بتبيان العالقات relationshipبين التصانيف المختلفة للنظام المستهدف .فإلنجاز عملية إعارة كتاب من مكتبة جامعية ،الحظ أن هذه العملية هي تفاعل يتم بين أي عضو بالمكتبة وبين أي من الكتب القابلة لإلعارة .لذلك ُيفهم أنه هناك عالقة تربط بين التصنيف ]مستعير[ والتصنيف ]كتاب[ .الشكل ( )6-2يبين مثاال مصغ ار لمخطط تصانيف نظام معلومات المركبات اآللية التابع لمصلحة المرور وتراخيص القيادة. 7.2مخطط التسلسل Sequence Diagrams يستخدم مخطط التسلسل في وصف سلوك أو عمليات النظام عبر وظائفه المختلفة .وتحديدا يقوم مخطط التسلسل بوصف تسلسل تنفيذ الخطوات الداخلة في إجراء أي خدمة من خدمات النظام .لذلك فكل واقعة استخدام ،يتم وصف محتواها باستخدام مخطط تسلسل ،يصف خطوات تنفيذ العملية الممثلة بواقعة اإلستخدام المعنية .ويشمل هذا المخطط إيراد جميع الكائنات ،objectsأو التصانيف classesالمسئولة عن تنفيذ خدمات معينة .ويتم التخاطب بين الكائنات المختلفة للنظام ،بواسطة الرسائل ، messagesحيث تُمثَل كل رسالة بواسطة روتين يتم استدعائه لتنفيذ عملية معينة .الشكل ( )1-4يبين مخطط تسلسل مختصر لوصف تسلسل خطوات عملية استعارة كتاب. 60 كتاب واجهة مستخدم >><<UI مشتركين مستخدم طلب إعارة)( أكشف عن العضوية) ) ] شروط اإلعارة مستوفاة[ إنجز عملية االعارة)( تحديث قيد اإلعارة للمستعير)( الشكل ( :)8-2شكل يمثل مقطع مختصر لمخطط النسلسل لعملية إستعار كتاب. 8.2مخطط وصف المكونات البرمجية Component diagrams لقد اختلفت طرق البرمجة وتطورت بشكل كبير ،بدءا بأسلوب البرمجية المتتالية، حيث يتكون البرنامج من مئات أو آالف السطور المتتالية ،من أوامر أي لغة برمجة ،إلى أسلوب البرمجية الهيكلية ،حيث يقسم البرنامج إلى مجموعة من الروتينات المنفصلة ،والتى يستدعى بعضها بعضا وفقا لتسلس لخوارزمية الحل. ومن أجل تبسيط و تسريع عملية برمجة النظم المعلوماتية ،فإن األسلوب االحدث لكتابة البرمجيات ،يعتمد على اإلستفادة من المكونات المتشابهة للبرمجيات السابقة ،واعادة استخدامها في بناء النظم الجديدة .و ألن المكونات البرمجية المعاد استخدامها كانت قد اختبرت من قبل في نظم أخرى فبالتالى تُعد نسبة 61 ظهور األخطاء البرمجية أقل في البرمجيات المعتمدة على إعادة اإلستخدام مقارنة ببرمجيات أخرى ُبنِيت من الصفر. يختلف حجم وتعقيد المكونات البرمجية وفقا لوظائفها ،فهي قد تتخذ شكل تصنيف ،classأو مجموعة تصانيف (تمثل مكونا برمجيا واحدا) .لتحقيق مبدأ إعادة استخدام المكونات البرمجية ،فكل مكون برمجي componentيمكن أن يكون مزود خدمة ،providerأو مستفيد من خدمات مكونات برمجية أخرى ،ولذلك فكل مكون برمجي يجب أن يكون له منافذ استقبال ،أو قنوات تزويد ،وذلك على النحو المبين بالشكل (.)3-4 قنوات تزويد خدمة >><<component دفع غرامة قنوات استقبال خدمة الشكل ( :)3-4شكل ُيمثل هيئة الجزيء البرمجي. 62 االنماط ووسم التصانيف الشائعة Stereotypes لغويا أي شئ يتكرر حدوثه ُيطلق عليه "نمط" ،وعند شيوع نمط معين ،يمكن التعبير عنه برمز معين بدل تعريفه لفظيا .،ويطلق على هذا الرمز مصطلح "وسم" .ويعتبر استخدام الوسم وسيلة شائعة اإلستخدام من قبل البشر عموما .فمثال لو شاهدت رسما كاريكاتوريا في صحيفة أجنبية ،وضمن المشهد الكاريكاتورى شخص يرتدى عقال و غترة على رأسه ،من المؤكد ان ذلك يشير إلى شخصية عربية .ففي الغرب يستخدمون رمز الغترة والعقال للداللة على العرب .في هذه الحالة ُيطلق على الغترة والعقال لفظ وسم stereotypeلنمط شائع .تستغل لغة UMLهذه الخاصية ،عبر توفير مجموعة الوسوم ،أو األنماط الشائعة في الوصف الرمزي لمكونات المخططات المختلفة، مثل التصانيف، و المكونات البرمجية ،و وقائع اإلستخدام وغيرها .فكل تصنيف شائع يوسم بوسم معين مثل الوسم >><<interface والذى يعنى ان التصنيف المعني يمثل شاشة تحاور بين المستخدم والنظام. هناك أيضا نوعان من التصانيف الشائعة stereotypesو التي تستخدم في تبيان عالقة التوريث خاصة بين مكونات وقائع اإلستخدام ،Use Caseهذان التصنيفان يطلق عليهما الوسم >> <<includeوالوسم >> ،<<extendsوالتى سيتم التطرق لها الحقا. 63 شخص يشمل الطالب النظامى والمنتسب مريض طالب موظف الشكل ) :)9-2نموذج الستخدام الهوامش التوضيحية اوالتعليقات ضمن مخطط تصانيف. إيراد الهوامش و التعليقات ضمن المخططات يعتبر تضمين الهوامش والمالحظات التعريفية حول مكونات أي مخطط أم ار مستحسنا ،وذلك لتيسير فهم المكونات التي قد يصاحبها بعض الغموض ،أو تلك المعرضة لسوء الفهم .بالتالى فهوامش لغة ،UMLتقوم بنفس وظيفة أسطر المالحظات ،التي يتم تضمينها في شفرة لغات البرمجة (مثل لغات CوPascal وغيرها) لشرح مقاطع معينة في شفرة البرامج .يتم إيراد الهوامش ضمن مستطيل مظلل أحد زواياه معكوفة وذلك على النحو المبين بالشكل ( .)9-2فمن خالل الشكل ،الحظ الهامش المتعلق بالتصنيف ]طالب[ ،حيث يشرح هذا الهامش من هو المشمول بتعريف التصنيف .ورغم الفائدة الكبيرة إليراد الهوامش ،إال انه ال ينصح باللجوء اليها إال فيما يلزم التنبيه له ،فإيراد العديد من الهوامش بمخططات UMLقد يساهم في زيادة حجمها ومن ثم صعوبة تتبعها. 64 عدد المواد =11 بكالوريوس علم الحاسوب *..0 0 مادة الشكل ( :)01-4نموذج تمثيل قيد تصنيف معين. القيود Constraints تستخدم القيود إليراد أي شروط مصاحبة إلدراج أي عنصر من عناصر مخططات UMLالمختلفة .فمثال لو وضع شرط وجوب اجتياز خمسون مادة للحصول على درجة بكالوريس علم الحاسوب ،عندها يتم إبراز ذلك على النحو المبين بالشكل (.)01-2 مدى قراءة البيانات Visibilityوحمايتها Protection عادة ما تحتوى التصانيف classesعلى بيانات ووظائف تختلف في سماحية الوصول إليها ،وهذا يتمشى مع مفهوم إخفاء البيانات ،الذي ينادى به المفهوم الشيئي .وتصنف مكونات أي كائن objectعلى أنها إما محمية ،protectedأو عامة ،publicأو خاصة .privateالبيانات العامة يمكن الوصول إليها من قبل أي كائن ،له القدرة على استدعاء الكائن المستهدف .أما البيانات المحمية ،فهى 65 ما يتعلق تحديدا بلغة البرمجة الشيئية المختارة ،بينما تمثل البيانات الخاصة تلك التي يمكن فقط الوصول إليها من قبل كائنات تنتمى لنفس جنس التصنيف .classتستخدم UMLالرموز # أو +أو – للداللة على سماحية الوصول لبيانات و وظائف الكائن قيد المعالجة .الجدول التالى يبين استخدام هذه الرموز. جدول :0-4رموز سماحية استغالل بيانات التصانيف سماحية الوصول الرمز # بيانات محمية protected + بيانات عامة public _ بيانات خاصة private 66 أسئلة الفصل الثانى اختر االجابة الصحيحة قرين كل سؤال ؟ -3مصطلح UMLهو اختصار لـ ..... أUnified Molding Language - بUnified Modeling Language - جUnited Modeling Language - دUniversal Modeling Language - ه -جميع االجابات خاطئة. .4تتكون لغة UMLمن ...... أ -مجموعة من القواعد واألشكال التي يتم من خاللها وصف أي نظام معلوماتي قيد البناء. ب -مجموعة من األشكال الهندسية القابلة لترجمتها إلى شفرة برامج بأحدى لغات الحاسوب. ج -صيغ و مفردات وأشكال للتعامل بين محللي النظم المعلوماتية قيد البناء. د -مجموعة من المخططات تشكل جزءامن وثائق النظام المعلوماتي حال االنتهاء من انجازه. ه -جميع االجابات صحيحة. .1تعتبر UMLلغة الوصف .......المستخدمة في وصف النظم البرمجية أ -الوحيدة. ب -األقل شهرة. ج -األشهر. د -األسرع. 67 ه -االقدم .2من أجل تجنب سوء الفهم و سرعة استيعاب نواحي النظام قيد البناء فإن UMLتعتمد إعتمادا أساسيا على إستخدام ......عند وصفها للنظم. أ -مخططات وقائع اإلستخدام .Use-case ب -االختصار. ج -األشكال والمخططات الرسومية. د -النظرية الشيئية. ه -جميع االجابات صحيحة. .1يعود اختصار وبساطة األشكال والرموز المستخدمة في رسم مخطط use caseإلى .... أ -اعتباره المخطط الذي يتم إعداده أوال. ب -استخدامه في حصر المتطلبات. ج -اعتباره وسيلة للتحاور مع الزبائن اللذين غالبا ال يكونون على غير دراية بالمصطلحات التقنية المختلفة. د -انه افضل وسيلة للتعامل مع الزبائن ذوي المتطلبات المتبدلة كل حين. .6النموذج هو ...... أ -عبارة عن مجموعة مخططات هندسية تقوم بوصف وتمثيل النظام من نواحي معينة. ب -وصف سردي يستخدم لشرح نواحي معينة من النظام قيد البناء. ج -وسيلة اتصال بين الزبون والمطور. د -وصف رياضى لوصف النظم المعلوماتية قيد البناء. ه -جميع االجابات خاطئة. 68 ...... .7إستخدام مخططات متعددة لوصف النظم المعلوماتية قيد البناء أ -ال يجب. بُ -ينصح بـ. ج -يجب. د -أحيانا يجب. ه -ال ُينصح. .8تستخدم مخططات وقائع اإلستخدام use caseفي إبراز ........ أ -الوظائف األساسية للنظام بتفصيل كامل. ب -الوظائف األساسية للنظام باختصار. ج -الكائنات األساسية للنظام والعالقات بينها. د -وصف المكونات البرمجية المستخدمة في إنجاز النظام قيد البناء. ه -تبدل حالة الكائنات البرمجية التي يحتويها النظام. .9تستخدم مخططات الحالة Statechart Diagramsفي إبراز ........ أ -الوظائف األساسية للنظام بتفصيل كامل. ب -الوظائف األساسية للنظام باختصار. ج -الكائنات األساسية للنظام والعالقات بينها. د -مجموعة الرسائل messagesبين الكائنات البرمجية المستخدمة في إنجاز النظام قيد البناء. ه -بيانات تبدل حالة الكائنات البرمجية التي يحتويها النظام. .11تستخدم مخططات وصف المهام Activity Diagrams ........ أ -عدد المهام المختلفة التي يقوم بها النظام. 69 في إبراز ب -مجموعة الرسائل messagesالمستخدمة في استدعاء وتنفيذ المهام المختلفة. ج -وصف خطوات تنفيذ أي مهمة من مهام النظام. د -العالقة بين المهام المختلفة للنظام. ه -تبدل حالة الكائنات البرمجية التي يحتويها النظام. .11يستخدم مخطط التصانيف Class Diagramsفي إبراز ........ أُ -بنية تصانيف classالنظام والشفرة المصاحبة لها. ب -المهام الوظيفية التي يدخل في إنجازها التصانيف المعنية للنظام. جُ -بنية التصانيف classesاألساسية للنظام والعالقات بينها. د -مجموعة الرسائل messagesالتي تقوم باستدعاء العمليات المدرجة داخل لكل تصنيف .class ه -تبدل حالة التصانيف البرمجية التي يحتويها النظام. .12تستخدم مخططات التسلسل Sequence Diagramsفي إب ارز ........ أ -تسلسل االحداث التي تمثل متطلبات النظام المختلفة. ب -تسلسل استدعاء الرسائل messagesالمستخدمة في النظام. ج -سلسلة العالقات بين الكائنات البرمجية المختلفة للنظام. د -تسلسل تنفيذ الخطوات الداخلة في إجراء أي خدمة من خدمات النظام. ه -جميع االجابات خاطئة .13يستخدم مخطط الجزيئات/المكونات البرمجية Component diagrams في إبراز ..... أُ -بنية أي مكون برمجي componentمن المكونات البرمجية للنظام. ب -تسلسل استدعاء الرسائل messagesالمستخدمة في النظام. 70 ج -الكائنات البرمجية المختلفة التي يتكون منها أي مكون برمجي componentللنظام. د -تسلسل تنفيذ العمليات الداخلة في إجراء النظام. أي خدمة من خدمات ه -جميع االجابات خاطئة .02تساهم االستعانة باستخدام المكونات/الجزيئات البرمجية componentsفي …… ..قيد البناء أ -إبطاء عملية برمجة النظم المعلوماتية. ب -تسريع برمجة النظم المعلوماتية. ج -تكدس الكائنات داخل كل مكون برمجي. د -كثرة االعطال البرمجية داخل النظم المعلوماتية. ه -جميع االجابات خاطئة. ........ .01نسبة ظهور األخطاء البرمجية في التطبيقات المعتمد في بنائها على إعادة استخدام مكونات برمجية سابقة. أ -تزداد. ب -تنعدم. ج -تقل. د -تندر. ه -أحيانا تزداد. 71 View publication stats