You are on page 1of 31

‫موضوع النقاش الرابع‬

‫‪Software Design‬‬
‫طرق تصميم البرمجيات‬
‫أساسيات تصميم البرمجيات‬
‫‪ ‬تص ميم ال برمجيات ه و عملي ة ابداع وتطوير واختيار الحلول‬
‫المناس بة وتقدي م وص ف دقي ق لل برامج م ن أج ل تحقيق متطلبات‬
‫الجهة المستفيدة ضمن حدود التقنيات واإلمكانيات المسموح بها‪.‬‬

‫‪ ‬يمكن اعتباره انه وصف تفصيلي لطريقة بناء البرمجيات يوضح‬


‫المفاهيم االساسية ويساعد على اختيار طريقة الحل المناسبة‪.‬‬

‫‪ ‬عبارة عن ادراك وتخطيط أو تطوير أو بناء خطة العمل ‪.‬‬


‫‪ ‬تص ميم ال برمجيات عبارة ع ن تخطي ط ي بين الخص ائص الرئيسية‬
‫للبرنامج المقترح‪.‬‬
‫ت ابع ‪...‬‬
‫التصميم الجيد للبرمجيات هو ذلك التصميم الذي يوازن بين‪-:‬‬
‫‪‬المهمات التي تؤديها البرمجيات‬
‫‪‬مجموعة من المواصفات وهي‪-:‬‬
‫كفاءة البرمجيات‬ ‫‪‬‬
‫امكانية االستخدام المتكرر للبرمجيات‬ ‫‪‬‬
‫قابلية البرمجيات للتحوير والتطوير‬ ‫‪‬‬
‫تكلفة البرمجيات‬ ‫‪‬‬
‫تسليم البرمجيات الى الجهة المستفيدة في الوقت المحدد‬ ‫‪‬‬
‫المرونة في االستخدام‬ ‫‪‬‬
‫سهولة الصيانة‬ ‫‪‬‬
‫ت ابع ‪...‬‬
‫‪‬مدخالت التصميم هي متطلبات الجهة المستفيدة وعلى المصمم‬
‫معرفة المدخالت والمخرجات والمهمات التي تضعها الجهة‬
‫المستفيدة‪.‬‬
‫‪‬يستلزم من المصمم عند تصميم البرمجيات الجيدة معرفة‬
‫التالي‪-:‬‬
‫‪‬أهداف النظام المطلوب تصميمه‬
‫‪‬وظيفة الجهة المستفيدة‬
‫‪‬التغييرات المستقبلية المحتملة‬
‫‪‬أجهزة الحاسوب المتوفرة‬
‫‪‬تكلفة التصميم من حيث الوقت‪ ،‬األموال‪ ،‬الكفاءة‪ ،‬الصيانة‪ ،‬سهولة‬
‫االستخدام‪.‬‬
‫ت ابع ‪...‬‬
‫ان مخرجات هذه المرحل ة س تكون مدخالت للمرحل ة الالحقة‬
‫وتتضمن هذه المخرجات ما يلي‪-:‬‬
‫‪‬تصميماً هيكلي يبين العالقات بين أجزاء البرمجيات‪.‬‬
‫‪‬مواصفات كل جزء من أجزاء البرمجيات المراد بناؤها‬
‫‪‬تصميم للبيانات الجديدة التي يمكن أن يستفيد منها النظام البرمجي‪.‬‬
‫العالقة بين حجم البرنامج وصعوبة التطوير‬
‫كلما كان حجم المشروع‪‬‬
‫كبي اًر كانت الصعوبات‬
‫أكثر‪ .‬ويمكن تقسيم‬
‫المسألة الي مقاطع يتم‬
‫ايجاد الحلول لكل مقطع‬
‫بصورة منفردة‪ .‬وكلما كانت‬
‫مقاطع المسألة مستقلة عن‬
‫بعضها البعض استطعنا‬
‫‪.‬تذليل الصعوبات‬
‫ت ابع ‪...‬‬

‫كلما كانت المقاطع مستقلة‪‬‬


‫عن بعضها البعض فإن‬
‫الصعوبات تتناسب طردياً مع‬
‫‪.‬حجم البرنامج‬
‫ت ابع ‪...‬‬
‫خاصية التماسك(‪ )cohesion‬في المقطع البرمجي ‪:‬هي قابلية المقطع البرمجي‬
‫لتنفيذ مهمة واحدة دون الحاجة الى استدعاء برامج او مقاطع اخرى‪.‬‬
‫‪‬مستويات التماسك‪-:‬‬
‫‪‬التماسك الوظيفي ‪Functional Cohesion‬‬
‫‪‬التماسك المعلوماتي ‪Information Cohesion‬‬
‫‪‬التماسك االتصالي ‪Communicational Cohesion‬‬
‫‪‬تماسك البرامج الفرعية ‪Procedural Cohesion‬‬
‫‪‬التماسك المؤقت ‪Temporal Cohesion‬‬
‫‪‬التماسك المنطقي ‪Logical Cohesion‬‬
‫‪‬التماسك العرضي ‪Coincidental Cohesion‬‬
‫‪‬يعد التماسك الوظيفي والتماسك المعلوماتي هما االقوى بينما التماسك المنطقي‬
‫والتماسك العرضي هما االضعف‪.‬‬
‫ت ابع ‪...‬‬
‫‪‬التماسك العرضي ‪:‬عندما يقوم البرنامج او المقطع البرمجي‬
‫بأداء اكثر من مهمة غير مترابطة‪ .‬يصعب صيانة هذا النوع‬
‫او االستفادة منه في برمجيات اخرى‪ .‬ويمكن تحسينه بتجزئة‬
‫البرنامج الى اجزاء اخرى‪ ,‬وهذا النوع ايضا يعتبر االس وأ وغير‬
‫مقبول على االطالق‪.‬‬
‫‪‬التماسك المنطقي ‪ :‬يعد البرنامج متماسكا منطقيا اذا كان يؤدي‬
‫مجموعة من المهمات المترابطة‪.‬‬
‫‪‬التماسك المؤقت‪ :‬يكون ال برنامج متماسكا بص ورة مؤقتة اذا‬
‫كان يؤدي مجموعة مهام مترابطة من حيث الزمن‪.‬‬
‫ت ابع ‪...‬‬
‫‪‬التماسك االجرائي ‪:‬يعد البرنامج متماسكا فرعيا اذا كان يؤدي‬
‫مجموعة مهام ذات عالقة بالبرنامج الفرعي نفسه‪ ,‬ويعتبر اقوى‬
‫من التماسك المؤقت لعدة اسباب منها‪ :‬ان المهام في البرنامج‬
‫الفرعي ذات طبيعة واحدة بينما في التماسك المؤقت كان عامل‬
‫الوقت هو الذي يجمع بين المهام‪.‬‬
‫‪‬التماس ك االتص الي ‪ :‬يشب ه تماس ك ال برامج الفرعية‪ ,‬يؤدي‬
‫مجموعة مهام ذات عالقة بالبرنامج الفرعي نفسه‪ ,‬باإلضافة‬
‫ال ى ان المهام جميعه ا تتعام ل م ع ال بيانات نفسها‪ .‬ويحدث‬
‫عندما تتضمن الوحدة الوظيفية مهاما عدة تتبادل البيانات فيما‬
‫بينها‪.‬‬
‫‪ ...‬تابع‬
‫• التماسك المعلوماتي ‪ :‬يقال اذا‬
‫كان يؤدي عددا من المهام لكل‬
‫مهمة نقطة بداية خاصة بها‪,‬‬
‫ويصاحبها برنامج مستقل خاص بها‪.‬‬
‫وتستخدم المهام جميعها تركيب‬
‫بيانات واحدا ً‪ .‬وهو تطبيق ألنواع‬
‫البيانات الموجزة ‪Abstract‬‬
‫‪Data Types‬‬
‫• التماسك الوظيفي ‪:‬عندما ينفذ البرنامج مهمة واحدة فقط‪,‬او هدفا واحدا‪,‬فان هذا‬
‫النوع يسمى التماسك الوظيفي‪.‬ويمكن استخدامه في برامج أخرى‪,‬ويعد البرنامج ذو‬
‫التماسك الوظيفي المصمم بصورة جيدة والذي اجتاز االختبارات والذي يشمل على‬
‫المالحظات والتوثيق الشاملين بمثابة االستثمار الحسن للمؤسسة‪.‬‬
‫التصميم على اساس انسياب البيانات‬
‫‪Method (DFD) Data-Flow Diagram‬‬
‫‪‬تعتمد هذه الطريقة على انسياب البيانات خالل المنتج مع العمليات التي‬
‫تجري على هذه البيانات في اثناء انسيابها‪ ,‬ويستخدم عند تصميم برامج‬
‫ذات حجم متوسط او كبير‪.‬‬
‫‪‬يبدأ العمل بطريقة التصميم على اساس انسياب البيانات مع العمليات‬
‫التي تجري عليها‪ .‬وأول خطوة هي بناء مخطط انسياب البيانات‪.‬‬
‫‪‬تعت بر خرائ ط تدف ق ال بيانات م ن الوس ائل المفيدة ف ي توضي ح انسياب‬
‫البيانات‪ ,‬وخرائط تدفق البيانات عبارة عن وسائل مساعدة لتطوير انظمة‬
‫البرمجيات‪.‬‬
‫‪‬تدفق البيانات عبارة عن نموذج يمثل حركة المعلومات من مواضيع معينة‬
‫عبر مجموعة من المعالجات الى مواضع اخرى‪.‬‬
‫ت ابع ‪...‬‬
‫الطرق التي تؤدي الى افضل تصميم‬
‫البدء بدائرة كبيرة واحدة وتقسيمها الى دوائر اصغر‪.‬‬ ‫‪.1‬‬
‫البدء م ن ال بيانات الخارج ة م ن المنت ج وتفحصها‬ ‫‪.2‬‬
‫باالتجاه المعاكس‪.‬‬
‫البدء من البيانات الداخلة الى المنتج وتفحصها باالتجاه‬ ‫‪.3‬‬
‫نحو االمام‪.‬‬
‫الخطوة التالية بعد االنتهاء من تصميم انسياب البيانات‬ ‫‪‬‬
‫فه ي تحويله ا ال ى مخط ط هيكل ي‪,‬والذي يهدف الى‬
‫تحديد اهم العمليات التي تجري على البيانات‪.‬‬
‫التصميم الكينوني‬ ‫‪Object-Oriented Design‬‬
‫‪‬ه و اح د انواع تصميم ال برمجيات الذي ينظ ر ال ى البرمجي ة عل ى انها‬
‫مقسمة الى مجموع ة م ن االجزاء تس مى كينونات‪ ,‬تتعام ل وتتفاع ل مع‬
‫بعضها البعض لتحقيق اهداف البرمجية‪.‬‬
‫‪‬حيث يعتمد هذا التصميم على حاالت منها‪ :‬ان البرمجيات عبارة عن‬
‫مجموعة من الكينونات تتعامل مع بعضها البعض ولكل كيان استقالليته‬
‫وبياناته الخاصة به‪.‬‬
‫‪‬بناء برامج كينونات يستلزم االمر اتباع اربع خطوات منها‪:‬‬
‫‪‬تحديد تركيب الكينون المطلوب‬
‫‪‬تحديد المتغيرات التي يتضمنها كل كيان وتعريف كل متغير‬
‫‪‬تحديد البرامج الفرعية المطلوبة لتنفيذ عمليات الكينون‬
‫‪‬تحدي د اهداف ك ل برنام ج فرع ي وأهمي ة المتغيرات االس اسية وتحديد‬
‫الشروط االولية والنتائج المتوقعة‪.‬‬
‫الركائز األساسية في التصميم الكينوني للبرمجيات‬
‫‪ -1‬الكينون‪ -:‬هو وحدة برمجية لها استقالليتها‪ ،‬وهو تجسيد لشيء واقعي‬
‫يؤدي مهمة محددة يحتوي بياناته الخاصة به التي تتعلق بالشيء الذي‬
‫يجسده‪ ،‬كما يحتوي على العمليات التي يسمح بتنفيذها على تلك البيانات‪.‬‬
‫‪ -2‬العمليات‪ -:‬يتطلب األمر تصميم كينون يحتوي على مجموعة عمليات‬
‫باإلضافة الى اجراءات تساعد المستخدم على تنفيذ مهامه‪.‬‬
‫‪ -3‬االشعارات‪ -:‬المهام التي يقوم بها كل كينون هي بمثابة الخدمات التي‬
‫يقدمها للكينونات األخرى‪.‬‬
‫‪ -4‬برمجة الكينونات‪-:‬‬
‫‪ -5‬مزايا برمجة الكينونات في تصميم البرمجيات‬
‫طرق تصميم المستندة الى البيانات‬
‫‪‬تعتبر من أول الطرق المستخدمة في تصميم البرمجيات وأهمها ويوفر‬
‫وصفًا اجرائيا إلنتاج البرمجيات وهي ليست مخططات انسياب البيانات‬
‫‪ DFD‬فه ي تس تخدم األس لوب المتس لسل أ و الهرم ي لتمثي ل تركيب‬
‫المعلومات في البرمجة‪.‬‬
‫‪‬تشترك هذه الطرق مع طرق التصميم الكينوني في أكثر من صفة‪:‬‬
‫‪‬كالهما يهتم بأنماط وكينونات التطبيقات على أرض الواقع للبرمجية‬
‫‪‬كالهما يعتمد على المعلومات أساساً للتنفيذ‬
‫‪‬كالهما يعتمد تمثيل البيانات لبناء تمثيل مناسب للبرمجية‬
‫‪‬كل منهما يمتلك وسيلة محددة للتصميم وتسلسل البيانات بينما طريقة التصميم‬
‫الكينوني تمتلك الصف ‪Class‬‬
‫‪‬كالهما يطبق فكرة تجريد البيانات ويستخدم مجموعة من العمليات ذات العالقة‬
‫ت ابع ‪...‬‬
‫‪ ...‬ويختلفان بتعريف الكينون في األولى يعتبر بيانات فقط اما الثانية‬
‫بيانات ومعالجة‪.‬‬
‫‪‬طريقة التصميم الكينوني تمتلك مواصفات هامة ال تتوفر بالطريقة األولى‬
‫مثل‪-:‬‬
‫‪ -1‬تصميم جاكسون لتطوير األنظمة‬
‫‪ -2‬التصميم وفق تراكيب البيانات لتطوير األنظمة‬
‫أوالً‪ :‬تصميم جاكسون لتطوير األنظمة‬
‫)‪Jackson System Development (JSD‬‬
‫‪‬تعتبر طريقة متكاملة من التحليل فالتصميم الى التنفيذ والتطبيق‪.‬‬
‫‪‬تم تطويرها في منتصف السبعينيات وتعد نموذجًا لدورة حياة البرمجيات‬
‫في التصميم والبناء‪.‬‬
‫‪‬تستند في عملها في تحليل المتطلبات وتصميم البرمجيات الى المفهوم‬
‫الهندس ي العلم ي م ن حي ث التركي ب والتحدي ث المس تمر والتدرج في‬
‫التصميم من الهام الى الخاص‪.‬‬
‫‪‬ينطلق مصممو هذه الطريقة من فكرة ان مواصفات اي برنامج تعتمد‬
‫على المدخالت والمخرجات فهما اللذان يحددان الشكل العام‪.‬‬
‫خطوات طريقة جاكسون‬
‫‪‬تخطي ط االشكال التركيبي ة لل بيانات‪ :‬ت بين حرك ة ال بيانات من النظام‬
‫كمخرجات والى النظام كمدخالت‪.‬‬
‫‪‬ايجاد شك ل تركي بي واح د لل برنامج وذل ك م ن خالل مجموعة االشكال‬
‫البيانية التركيبية‪.‬‬
‫‪‬تحديد كافة العمليات االساسية التي يستخدمها البرنامج في تنفيذ المهمة‬
‫المطلوبة وتكتب حسب مفهوم لغة البرمجة المستخدمة‪.‬‬
‫‪‬ربط العمليات االساسية بمواقعها المناسبة في الشكل التركيبي للبرنامج‪.‬‬
‫‪‬تحويل تركيبة البرنامج من األشكال التخطيطية الى الشكل االنشائي‬
‫ت ابع ‪...‬‬
‫‪‬األشكال التركيبية في طريقة جاكسون تنقسم الى ثالثة أنواع‪-:‬‬
‫‪ -1‬التتابع‪-:‬‬
‫ت ابع ‪...‬‬
‫•‪ -2‬التكرار ‪-:Iteration‬‬
‫التصميم الواقعي‬Design Real Time
‫ت ابع ‪...‬‬
‫•‪ -3‬االختيار ‪-:Selection‬‬
‫مثال‪ :‬التمثيـل التركيـبي لكتاب باسـتخدام اسلوب‬
‫جاكسون‬
‫محاسن ومساوئ طريقة جاكسون‬
‫‪‬تكون طريقة جاكسون في التصميم جيدة لتعليم أساليب التعامل مع دورة‬
‫حياة النظام وطرق تحويل التصميم الى برامج‬
‫‪‬طريقة جاكسون ال تكون مناسبة للتعامل مع برامج كبيرة وعملية وال يمكن‬
‫اس تخدامها اذا تطل ب األم ر تعدي ل تل ك ال برامج أو اذا تغيرت ظروف‬
‫العمل‪.‬‬
‫ثانيا ‪ :‬التصميم وفق تراكيب البيانات لتطوير االنظمة‬
‫‪Data Structures Systems Development : DSSA‬‬

‫‪‬تستند على مفاهيم اساسية طورها وورنر عام ‪ 1981‬بهدف انتاج طريقة‬
‫شاملة لتحليل البرمجيات وتصميمها‪.‬‬
‫‪‬تتكون من شقين‪ :‬االول يعتني بالمخرجات وواجهة التخاطب واإلجراءات‬
‫البرمجية ويسمى التصميم المنطقي‬
‫‪‬الجزء الثان ي‪ :‬يتب ع االول ويس مى التص ميم الفيزيائ ي‪ ,‬ويعتن ي بجمع‬
‫وتنس يق جمي ع اجزاء البرمجي ة لتحقي ق مواص فات االداء الجي د إو مكانية‬
‫الصيانة وما شابهها من المواصفات لتحقيق الوضع االفضل للبرمجية‪.‬‬
‫‪Design Real Time‬التصميم الواقعي‬
‫‪‬يخضع هذا التصميم لمجموعة قوية من القيوم ويرتبط بشكل قوي بمجال‬
‫المس ألة ويأخ ذ االطار الحقيق ي والزمن ي لعم ل وتنفي ذ البرمجي ة بعين‬
‫االعتبار ‪.‬‬
‫‪‬بسبب خضوع هذا النوع لمجموعة قوية من القيود كان ال بد أن تنتج مثل‬
‫هذه البرمجيات وفي الذهن انها ستنفذ ضمن بيئة متعددة الجوانب مثل‪-:‬‬
‫‪‬معمارية المعدات والبرمجيات معاً‬
‫‪‬مواصفات نظام التشغيل ومتطلبات المسألة التطبيقية نفسها‬
‫‪‬لغة البرمجة المختارة ومواصفات التصميم‬

You might also like