You are on page 1of 24

‫تطوير البرمجيات‬

‫تطوير البرمجيات يشترك فيه عدد من األفراد‪ ،‬و كل واحد له دور‪:‬‬ ‫‪‬‬

‫المحلّلون‬ ‫‪‬‬

‫المصمّمون‬ ‫‪‬‬
‫المبرمجون‬ ‫‪‬‬
‫القائمون باالختبار‬ ‫‪‬‬
‫مراقبو الجودة‬ ‫‪‬‬
‫المستفيدون‬ ‫‪‬‬

‫الك ّتاب التقنيون‬ ‫‪‬‬

‫ك ّل هؤالء األفراد يهتمون بجوانب مختلفة من المنظومة‪ ،‬و ك ّل واحد منهم يحتاج‬ ‫‪‬‬
‫إلى مستوى مختلف من التفاصيل‪ .‬على سبيل المثال‪ ،‬المبرمج يحتاج إلى أن يفهم‬
‫التصميم الموضوع للمنظومة من أجل تحويله إلى تعليمات برمجية في مستواها‬
‫ّ‬
‫(الموثق) ينصبّ اهتمامه على سلوك المنظومة‬ ‫األدنى‪ .‬بالمقابل الكاتب التقني‬
‫ككلّ‪ ،‬فيحتاج لفهم كيف يعمل المنتج‪.‬‬
Modern Life Cycles ‫دورات الحياة الحديثة‬

Requirement  
Engineering

Design

Implementation

Test
‫النمذجة ‪The Modeling‬‬
‫يتعايش اإلنسان خالل حياته مع معرفة متنامية يتفاعل مع بعضها ويطور بعضها‪  ‬وكل ذلك‬ ‫‪‬‬
‫ليورثها إلى الجيل الالحق خدمة للمعرفة اإلنسانية وتحقيقا إلغراضه الخاصة‪.‬ومن هنا تم تطوير‬
‫نظم دراسة الظواهر و دعم القرار بأساليب ومنهجيات مختلفة تعتمد على طبيعة البيئة التي‬
‫تعمل فيها هذه النظم وضمن االحتياجات التي تطلبها الجهات المستفيدة من متخذي القرار على‬
‫مختلف المستويات اإلدارية فمنها ما يعتمد على النماذج التحليلية للبيانات المتوفرة في نظم‬
‫المعلومات ومنها ما يعتمد على استنباط المؤشرات والتوجهات من خالل البحث في قواعد‬
‫البيانات الضخمة والتي تشمل سالسل زمنية لتلك البيانات إال انه ومع تنوع هذه النظم فهي‬
‫باألساس تستخدم لمساندة ودعم متخذي القرار في اتخاذ القرار المناسب‪.‬‬

‫استمر اإلنسان في االعتماد على تأمالته فترة طويلة في سبيل البحث عن الحقائق المحيطة به‬ ‫‪‬‬
‫وكانت هذه التأمالت األساس الذي مهد الطريق إلى البحث العلمي ‪ ،‬حيث أنتقل اإلنسان من بحثه‬
‫عن طريق التأمل باالستناد على منهاج المالحظة ثم بدأ باالعتماد على التجربة في العمل كمنهاج‬
‫لبحثه عن الحقيقة إلى أن استطاع أن يتوصل إلى منهاج آخر يستعين به في الكشف عن‬
‫الحقائق ذات العالقة باإلنسان سواء كانت متعلقة بالنواحي ‪ ‬التربوية أو االجتماعية أو‬
‫االقتصادية والذي تمثل في انتهاج األسلوب العلمي ‪ ،‬حيث تطور علم النمذجة ودراسة النظم‬
‫وباألخص جانب اإلحصاء وتطبيقاته عبر سنوات طويلة بجهود ومشاركة كثير من العلماء من‬
‫كافة أنحاء العالم العاملين في حقول وميادين مختلفة تحتاج الحياة إلى تعريف أساليب علمية‬
‫عملية فعالة تساهم في إعداد الخطط الفعالة‪،‬والتي من بينها أسلوب النمذجة‬
‫النمذجة ‪The Modeling‬‬
‫لماذا نقوم بالنمذجة؟‬
‫نقوم ببناء نماذج حتى نتمكن من فهم أي نظام نقوم بتطويره‪,‬وذلك ألن‬ ‫‪‬‬
‫قدرتنا في فهم النظام بكاملة دفعة واحدة محدودة‪,‬‬

‫لدراسة نظام ما نقوم بتقسيمه إلى مراحل و نماذج‪,‬ويعرف النموذج‬ ‫‪‬‬


‫على أنه تبسيط وتجريد للمسائل المعقدة‪,‬حيث يتم حذف كل ما ال‬
‫داعي له بالنسبة لوجهة نظر معينة(وهذا ما يسمى بالتجريد) وإبقاء‬
‫األجزاء المهمة بالنسبة لنفس وجهة النظر‪,‬وتتم الدراسة على هذا‬
‫األساس ‪,‬و يعتمد النموذج على وجهة النظر المأخوذة بعين االعتبار‬
‫ونحتاج ألكثر من نموذج لتحقيق الغاية‬
‫تصنيف النماذج‬

‫‪ ‬تصنف النماذج إلى عدة أنواع يمكن إدراجها في العوائل التالية‪:‬‬


‫‪     .1‬النماذج الرمزية(نماذج الخرائط‪،‬االقتصاد‪.)..،‬‬
‫‪     .2‬النماذج السلوكية‪.‬‬
‫‪     .3‬النماذج الواقعية‪.‬‬
‫‪     .4‬النماذج االحتمالية‪.‬‬
‫‪ ‬و هناك تصنيف ثاني للنماذج يشمل نوعين هما‪:‬‬
‫‪     .1‬النماذج الرياضية‪:Mathematical Models‬تمثل‪  ‬النماذج‬
‫المختصة في صياغة المفاهيم والمواقف والمواضيع‪.‬‬
‫‪     .2‬النماذج المناظرة‪ Analogy Models‬تمثل التعبير عن تناظر‬
‫شيئا في الحقيقة‪.‬‬
‫أهداف النمذجة‬
‫المساعدة على إظهار النظام العام كما سيكون‪,‬من خالل موديل‬ ‫‪.1‬‬
‫ستاتيكي يوضح بنية النظام و موديل ديناميكي يوضح سلوك‬
‫النظام أي اختباره بتطبيق حاالت معينة‪,‬‬
‫الوصول إلى قالب عام يمثل ويوضح عمل النظام‪,‬‬ ‫‪.2‬‬

‫توثيق القرارات التي تتخذ إزاء النظام في مختلف مراحله من‬ ‫‪.3‬‬
‫خالل هذه النماذج‪ ,‬ليصبح من السهل التعرف على تفاصيل النظام‬
‫الحقا على أرض الواقع‬
‫مبادئ النمذجة‬
‫‪ .1‬تحديد وجهة النظر المراد استخدامها لبناء النموذج على أساسها‪,‬‬
‫لتنعكس بالتالي على طريقة الحل‪:‬‬
‫فإذا قمنا ببناء موديل قواعد بيانات سيظهر لدينا مجموعة من المكونات‬
‫والعالقات بينها‪,‬في حال بناء موديل تحليلي سيظهر لدينا خوارزميات‬
‫إضافة إلى تدفق البيانات‪,‬وفي حال بناء موديل على مبدأ غرضيه‬
‫التوجه سينتج عن ذلك مجموعة من الصفوف‬

‫إن أكثر النماذج مثالية هو النموذج األكثر ارتبطا َ بأرض الواقع‬ ‫‪.2‬‬
‫‪,‬أي يشابه الواقع ويمثله بشكل أكبر‪,‬‬

‫عدم االكتفاء بنموذج واحد‪,‬فالنظام يمثل بشكل أفضل من خالل‬ ‫‪.3‬‬


‫مجموعة من النماذج‪.‬‬
‫الحاجة إلى لغة موحدة‬
‫الصناعات األخرى لديها لغات و رموز خاصة بها‪ ،‬و يفهمها كل من‬ ‫‪‬‬
‫له عالقة‪ ‬في حقل اختصاص معين‪.‬‬
‫شكل ‪ 1‬ـ معادلة رياضية للتكامل‬ ‫‪‬‬
‫بالرغم من أن الصورة أعاله هي رسم بسيط جدا ‪ ،‬فإن الرياضيين‬ ‫‪‬‬
‫في كل العالم يدركون و من أول وهلة بأنها تمثل معادلة تكامل ‪ .‬و‬
‫بالرغم من بساطة الرمز‪ ،‬إال أنه يشير إلى موضوع بالغ العمق و‬
‫التعقيد‪  .‬الرمز بسيط‪ ،‬و لكن بالمقابل‪  ،‬كل الرياضيين في العالم‬
‫يمكنهم و بكل وضوح‪ ‬تبادل اآلراء فيما بينهم باستخدامه مع‬
‫مجموعة بسيطة أخرى من الرموز‪ .‬الرياضيون هنا لديهم لغة‬
‫مشتركة‪ .‬كذلك الموسيقيون‪ ،‬و مهندسو االلكترونيات‪ ،‬و الكثير من‬
‫الفروع والمهن األخرى‪.‬‬
‫الحاجة إلى لغة موحدة‬
‫كان مهندسو البرمجيات يفتقرون للغة موحدة‪ .‬بين عامي ‪ 1989‬و ‪ ،1994‬و هي‬ ‫‪‬‬
‫الفترة التي يشار إليها بـ "حروب المناهج"‪ ،‬كان يوجد ما يزيد عن ‪ 50‬لغة نمذجة‬
‫برمجية قيد االستعمال ‪ -‬كل‪ ‬منها تملك رموزها الخاصة!‪  ‬كل لغة تحتوي على‬
‫قواعد تميزها‪ ،‬بينما في نفس الوقت‪ ،‬كل لغة لديها عناصر تتشابه مع تلك التي في‬
‫اللغات األخرى‪.‬و‪ ‬لمزيد من الفوضى‪ ،‬ال توجد لغة متكاملة‪ ،‬بحيث‪ ‬نادرا ما‪ ‬يجد‬
‫القائمون على البرمجيات ما يرضي كامل حاجتهم في لغة واحدة‬
‫في منتصف التسعينيات‪ ،‬برزت ثالث‪ ‬منهجيات‪  ‬لكي تكون األقوى‪ .‬بدأت هذه‬ ‫‪‬‬
‫المنهجيات الثالث في التقارب‪ ،‬كل واحدة منها تحوي على عناصر من‬
‫األخريين‪ .‬كل منهجية تملك نقاط قوة خاصة بها‪:‬‬
‫بوك ‪ Booch‬كانت ممتازة فيما يخص التصميم و التنفيذ‪ .‬لقد عمل "قرادي‬ ‫‪‬‬
‫بوك" ‪ Grady Booch‬بكثافة على لغة آدا ‪ ،Ada‬و كان له دور رئيسي في‬
‫تطوير تقنيات المنحى الكائني (‪ )object oriented‬للغة‪ .‬وبالرغم‪ ‬من قوة‬
‫منهجية بوك إال أن الرموز فيها‪ ‬لم تأخذ القبول الحسن‪.‬‬
‫‪( OMT‬تقنية النمذجة الكائنية ‪)Object Modelling Technique‬‬ ‫‪‬‬
‫كانت األفضل في التحليل و في أنظمة المعلومات ذات البيانات الكثيفة‪.‬‬
‫‪ Object Oriented Software Engineering( OOSE‬هندسة‬ ‫‪‬‬
‫اــلبرمجياتكـائنية اــلمنحى) و تــتميز بــنموذج يــسمىوقائعـ اــالستخداـمـ (‪Use‬‬
‫‪.)Cases‬‬
‫الحاجة إلى لغة موحدة‬
‫‪ ‬في عام ‪ ،1994‬أنظم جيم رامبخ ‪ ،Jim Rumbaugh‬مؤسس‬
‫‪ ،OMT‬و قرادي بوك للعمل في شركة راشيونال (‪Rational‬‬
‫‪ .)Corp‬الغرض من المشاركة كانت من أجل دمج أفكارهما و ص ّبها‬
‫في منهجية‪ ‬موحدة (و كان بالطبع عنوان العمل لهذه المنهجية هي‬
‫"المنهجية الموحدة" ‪.)Unified Method‬مع عام ‪ ،1995‬انضم‬
‫أيضا مبدع ‪ OOSE‬ايفار جاكوبسون ‪ ،Ivar Jacobson‬إلى‬
‫راشيونال‪ ،‬و تم ضم أفكاره في المنهجية الموحدة‪.‬‬
‫‪ ‬هذه المنهجية الموحدة تدعى اليوم لغة النمذجة الموحدة‬
‫(‪.)Unified Modeling Language‬‬
‫مقدمة إلى ‪UML‬‬
‫ما هي ‪ UML‬؟‬
‫الموحدة (‪Unified Modelling‬‬ ‫ّ‬ ‫‪ ‬لغة النمذجة‬
‫‪ ،)Language‬أو (‪ ، )UML‬هي لغة نمذجة‬
‫رسومية تقدم لنا صيغة لوصف العناصر الرئيسية للنظم‬
‫البرمجية‪.‬‬
‫‪ ‬سنقوم باكتشاف النواحي الرئيسية في ‪ ،UML‬بهدف‬
‫توظيف ذلك في مشروعات تطوير البرمجيات‪.‬‬
‫مقدمة إلى ‪UML‬‬
‫‪ UML ‬هيل@@غ@ة ر@سومية ل@@لتعبير عن‪ ‬مشغ@والت(‪)artifacts‬‬
‫ي‬
‫ا@@لتطوير ا@@لبر@مج ‪.‬‬
‫‪ ‬تقدم اللغة رموزا نستخدمها في إنتاج النماذج‪.‬‬
‫‪ ‬تلقى‪ UML ‬تبنيا واسعا في الوسط الصناعي كلغة موحدة‪.‬‬
‫‪ ‬اللغة غنيّة جدا‪ ،‬و تحمل في طيّاتها العديد من‪ ‬جوانب أفضل‬
‫الممارسات في هندسة البرمجيات‪.‬‬
‫‪ ‬تحاول ‪ UML‬أن تق ّدم لغة قويّة التعبير بحيث تمكن المشاركين‬
‫في تصميم النظم االستفادة من مخططاتها‪.‬‬
‫هل ‪ UML‬لغة؟؟؟؟‬
‫‪ ‬يمكن القول على مجموعة تعابير أنها تشكل لغة‪,‬إذا كانت هذه‬
‫التعابير تتكون من ‪:‬مفردات اللغة‪,‬قواعد تربط المفردات ببعضها‪.‬‬

‫‪ ‬بالنسبة ل ‪ UML‬يمكن اعتبار@ها لغة وذلك ألنها تحتوي على‬


‫مجموعة من المفردات مثل ‪ objects ,actors ,classes‬وكذا‬
‫مجموعة من القواعد والروابط التي تربط هذه المفردات ببعضها‬
‫الحقيقة عن !!!!!‪UML‬‬
‫‪ ‬تقدم ‪ UML‬ر@موز مبسطة تستخدم كوسيلة للتعبير عن مختلف‬
‫نماذج العمل البرمجي‪,‬يسهل بواسطتها على ذوي العالقة من‬
‫محللين‪,‬مصممين‪,‬مبرمين و ز@بائن التخاطب في ما بينهم‬
‫وتمرير المعلومات في صيغة نمطية موحدة وموجزة‪,‬تغنيه‬
‫عن الوصف اللغوي المعتاد‪.‬‬
‫‪ ‬تعتبر ‪ UML‬مثل مخططات البناء أو مخططات الدوائر‬
‫الكهربائية واإللكترونية التي يمكن ألي كان في هذا المجال‬
‫فهمها والتعامل معها‪.‬‬
‫‪ ‬بمعنى أن ‪ UML‬ليست منهجية لبناء البرمجيات أي أنها لن‬
‫تر@شدك إلى أفضل الطرق لتصميم البرمجيات وتطوير@ها‪,‬كما‬
‫أنها ال ترتبط بمنهجية محددة إلنشاء البرمجيات‪.‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫تتكون ‪ UML‬لمفهوم المنحى الكائني من ثمانية مخططات رئيسية‬
‫هي‪:‬‬
‫‪ .1‬مخطط واقعة االستخدام ‪Use Case‬‬
‫هي وصف لسلوك النظام من وجهة نظر المستخدم‪ .‬فهي ذات‬
‫فائدة خالل مراحل التحليل و التطوير‪ ،‬و تساعد في فهم‬
‫المتطلبات‪ .‬يكون المخطط سهال لالستيعاب مما يم ّكن كال من‬
‫المطورين (مح ّللون‪ ،‬مص ّممون‪ ،‬مبرـمجون‪ ،‬مختبرون) و‬
‫ّ‬
‫المستفيدين (الزبون) من العمل عليه‪.‬و تعد وقائع االستخدام‬
‫أسلوب قوي من أجل فهم سلوك كامل النظام‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ .2‬مخطط األصناف ‪The Class Diagram‬‬
‫رسم مخططات األصناف جانب أساسي ألي منهج للتصميم‬
‫بالمنحى للكائن‪ ،‬بإمكاننا استخدام مخطط األصناف في مرحلة‬
‫التحليل و كذلك في مرحلة التصميم ‪ -‬سوف نقوم باستعمال‬
‫صيغ مخططات األصناف لرسم خريطة للمفاهيم العامة التي‬
‫يمكن للمستفيد (الزبون) أن يستوعبها و يسمى با النموذج‬
‫المفاهيمي ‪ .Conceptual Model‬وهي باإلضافة إلى‬
‫مخطط وقائع االستخدام‪ ،‬تجعل من النموذج المفاهيمي أداة‬
‫قوية لتحليل المتطلبات‪.‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ .3‬مخططات التعاون ‪The Collaboration Diagrams‬‬
‫إذا احتاج البرنامج للقيام بأي شيء سيكون ذلك بواسطة تعاون‬
‫الكائنات فيما بينها‪.‬و يمكننا رسم مخططات التعاون لوصف‬
‫الكيفية التي تتعاون بها الكائنات فيما بينها بالطريقة التي‬
‫نريدها‪.‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫مخطط التتابع ‪Sequence Diagram‬‬ ‫‪.4‬‬
‫مخطط التتابع في حقيقته له عالقة مباشرة بمخطط التعاون و‬ ‫‪‬‬
‫يقوم بعرض نفس المعلومات‪ ،‬و لكن بشكل يختلف قليال‪.‬‬
‫بعض أدوات نمذجة ‪ ،UML‬مثل برنامج ‪،Rational Rose‬‬ ‫‪‬‬
‫يمكنها توليد مخطط التتابع آليا من مخطط التعاون‪،‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫مخططات الحالة ‪State Diagrams‬‬ ‫‪.5‬‬
‫بعض الكائنات يمكنها في أي وقت محدد أن تكون في‬ ‫‪‬‬
‫حالة ما‪ .‬مثال‪ ،‬يمكن لإلشارة الضوئية أن تكون في إحدى‬
‫الحاالت التالية‪:‬مطفأة‪ ،‬حمرـاء‪ ،‬صفراء‪ ،‬خضراء‬
‫التحوالت بين الحاالت مع ّقد جدا ‪ -‬في‬
‫ّ‬ ‫أحيانا‪ ،‬يكون تعاقب‬ ‫‪‬‬
‫المثال أعاله‪ ،‬ال يمكننا أن ننتقل من حالة "خضرـاء" إلى‬
‫حالة "حمرـاء" (و إال تس ّببنا في حادث!)‪.‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ .6‬مخططات التحزيم‪Package Diagrams‬‬
‫يقسم إلى أجزاء أصغر‬
‫أي نظام ال يكون صغيرا يحتاج إلى أن ّ‬
‫حجما و أسهل للفهم‪ ،‬و تتيح لنا مخططات التحزيم في‬
‫‪ UML‬نمذجة هذه األجزاء بطريقة بسيطة و ف ّعالة‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ .7‬مخططات المكونات ‪Component Diagrams‬‬
‫يتشابه مخطط المكونات مع مخطط التحزيم ‪ -‬فهو يسمج بترميز‬
‫كيفية فصل أو تقسيم نظامنا‪ ،‬و كيف يعتمد كل قالب على آخر‬
‫فيه‪ .‬عموما‪ ،‬ير ّكز مخطط المكونات على المكونات الفعلية‬
‫للبرنامج (الملفات‪ ،‬الملفات الدليليه ‪ ،headers‬مكتبات‬
‫الرـبط‪ ،‬الملفات التنفيذية‪ ،‬الحزم ‪)packages‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ .8‬مخططات التجهيزـ ‪Deployment Diagrams‬‬
‫تقدم لنا ‪ UML‬نموذجا يمكننا من خالله التخطيط لكيف سيتم‬
‫تجهيز برنامجنا‪ .‬مثال‪ ،‬المخطط أعاله يعرض توصيفا‬
‫مبسطا لجهاز حاسوب شخصي‪.‬‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ ‬يو ّفر ‪ UML‬ثمانية نماذج مختلفة لوصف النظام‪ .‬هذه النماذج هي‪:‬‬
‫‪ ‬وقائع االستخدام‪" - Use Cases‬كيف سيتفاعل نظامنا مع العالم‬
‫الخارجي؟"‬
‫‪ ‬مخطط األصناف ‪" - Class Diagram‬ما هي الكائنات التي‬
‫نحتاجها؟ و ما عالقتها؟"‬
‫‪ ‬مخطط التعاون ‪" - Collaboration Diagram‬كيف تتعامل‬
‫الكائنات مع بعض؟"‬
‫‪ ‬مخطط التتابع ‪" - Sequence Diagram‬كيف تتعامل الكائنات‬
‫مع بعض؟"‬
‫مخططات ‪UML‬‬
‫لمفهوم المنحى الكائني ‪Object Orientation‬‬
‫‪ ‬مخطط الحالة ‪" - State Diagram‬ما الحاالت التي يجب أن‬
‫تكون عليها الكائنات؟"‬
‫‪ ‬مخطط التحزيم ‪" -Package Diagram‬كيف سنقوم بقولبة‬
‫عملنا؟"‬
‫‪ ‬مخطط المكونات ‪" - Component Diagram‬كيف ستر@تبط‬
‫مكونات برنامجنا؟"‬
‫‪ ‬مخطط التجهيز@ ‪" - Deployment Diagram‬كيف سيتم تجهيز‬
‫البرنامج؟"‬

You might also like