الجمعة، 22 نوفمبر 2019

استراتيجيات تصميم البرمجيات في هندسة البرمجيات Software Engineering Software Design Strategies#

استراتيجيات تصميم البرمجيات في هندسة البرمجيات  Software  Engineering Software Design Strategies# 

استراتيجيات تصميم البرمجيات في هندسة البرمجيات  Software  Engineering Software Design Strategies# 
تصميم البرمجيات هو عمليه لتصور متطلبات البرمجيات في تنفيذ البرمجيات. تصميم البرمجيات ياخذ متطلبات المستخدم كتحديات ويحاول العثور علي الحل الأمثل. في حين يتم تصور البرنامج ، يتم وضع خطه للعثور علي أفضل تصميم ممكن لتنفيذ الحل المقصود.

هناك أنواع متعددة من تصميم البرمجيات. دعوانا ندرسها بإيجاز:

التصميم المنظم Structured Design 

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

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

 يتم ترتيب هذه الوحدات في التسلسل الهرمي.  يتواصلون مع بعضهم البعض.  يتبع التصميم الجيد المنظم دائمًا بعض قواعد التواصل بين الوحدات النمطية المتعددة ، وهي:

 التماسك - تجميع جميع العناصر المرتبطة وظيفيا.

 اقتران - التواصل بين وحدات مختلفة.

 تصميم منظم جيد لديه تماسك عالية وترتيبات اقتران منخفضة.

وظيفة التصميم الموجه

 في التصميم الموجه للوظائف ، يتكون النظام من العديد من الأنظمة الفرعية الأصغر المعروفة بالوظائف.  هذه الوظائف قادرة على أداء مهمة مهمة في النظام.  يعتبر النظام أعلى عرض لجميع الوظائف.

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

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

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

عملية التصميم

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

  التصميم الموجه للكائنات 

 يعمل التصميم الموجه للكائنات حول الكيانات وخصائصها بدلاً من الوظائف المتضمنة في نظام البرنامج.  تركز استراتيجية التصميم هذه على الكيانات وخصائصها.  يدور مفهوم حل البرمجيات بالكامل حول الكيانات المشاركة.

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

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

 Encapsulation - في OOD ، يتم تجميع السمات (متغيرات البيانات) والطرق (العملية على البيانات) معًا باسم encapsulation.  لا يقتصر التغليف على تجميع المعلومات المهمة من كائن معًا فحسب ، بل يقيد أيضًا الوصول إلى البيانات والأساليب من العالم الخارجي.  وهذا ما يسمى إخفاء المعلومات.

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

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

منهجيات تصميم البرمجيات

 فيما يلي طريقتان عامتان لتصميم البرامج:

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

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

 يبدأ التصميم من أعلى إلى أسفل بنموذج عام للنظام ويحافظ على تحديد الجزء الأكثر تحديدًا منه.  عندما تتألف كل المكونات ، يأتي النظام بأكمله إلى حيز الوجود

 يكون التصميم من الأعلى إلى الأسفل أكثر ملاءمة عندما يحتاج تصميم البرنامج إلى التصميم من البداية والتفاصيل المحددة غير معروفة.

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

 تعتبر استراتيجية من أسفل إلى أعلى أكثر ملاءمة عندما يحتاج النظام إلى إنشاء من بعض النظام الحالي ، حيث يمكن استخدام الأوليات الأساسية في النظام الأحدث.

 كلاهما ، من الأعلى إلى الأسفل ومن النهج من القاعدة إلى القمة ليست عملية بشكل فردي.  بدلا من ذلك ، يتم استخدام مزيج جيد من الاثنين معا.

التسميات: