مرحلة تصميم البرنامج Software Design

السلام عليكم،

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

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

فماذا يقصد بتصميم البرنامج (Software Design)؟

مرحلة التصميم لبرنامج هي عملية تحليلية لمتطلبات البرنامج لاختيار و بناء هيكل البرنامج و أجزاءه و كيفية ترابطها مع بعضها البعض، ينتج عن ذلك مجموعة من الملفات و النماذج و الرسومات البيانية التي يمكن منها برمجة وكتابة شيفرة البرنامج “بالكامل”.

و تنقسم مرحلة التصميم إلى مراحل عديدة من أهمها:

1 - تصميم البنية أو الهيكل Architectural Design

2 - تصميم نماذج البرنامج باستخدام اللغة الرسومية UML - Unified Modeling Lanuage

3 - تصميم واجهة الاستخدام GUI - Graphical User Interface

وهذا شرح موجز لكل مرحلة كما يلي:

  • أولا : تصميم البنية أو الهيكل (Architectural Design)

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

مرتبة و تنظيم ترابط هذه الأجزاء مع بعضها البعض. غالبا لا تتطلب هذه مرحلة الابتكار، فهناك أنواع معروفة و محددة من الهياكل. كل ما يُستلزم في هذه المرحلة أو اختيار الهيكل المناسب للبرنامج. يعتمد اختيار الهيكل على نوع البرنامج و على دراسة جوانب آخرى مهمة كالأداء (performance) والحماية و الأمان (security and safty) و سهولة الصيانة (Maintainability).

من الهياكل المستخدمة:

  1. هيكل الخادم-المخدوم (أو الزبون) (Client-Server Architecture)

و يستخدم في البرامج التي تعمل على أكثر من جهاز أو موزعة على شبكة. مثال: متصفح الانترنت.

  1. هيكل الطبقات (Layered Architecture)

ويستخدم في البرامج التي تنقسم إلى أجزاء واضحة (طبقات). و كل طبقة تعتمد على ما تحتها من طبقات.

مثال: برامج تحويل و إرسال البيانات عبر الشبكة. فتحويل البيانات يستلزم مراحل و كل مرحلة تعتبر طبقة.

  1. هيكل التخرين أو المخرن (Repository Architecture)

و يستخدم في البرامج التي تعتمد على قاعدة (أو قواعد) بيانات كبيرة (Database).

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

ثانيا: تصميم النماذج بالـ UML:

وهي أهم المراحل، حيث أنها زبدة التصميم وفيها الجزء الأكبر من التحليل و التفكير و “الابتكار” في عملية التصميم.

لكن ما هي ال UML؟

هي لغة رسومية موحدة و متفق عليها دوليا تُستخدم لرسم نماذج “لأجزاء” البرنامج. هذه النماذج تُستخدم في برمجة البرنامج كاملا. بعبارة آخرى، لايحتاج المبرمج إلى مستندات متطلبات البرنامج “مباشرة”، بل يبرمج البرنامج من هذه الرسوم و النماذج فقط، كالمهندس المعماري الذي لا يحمل في يديه أثناء العمل إلا تخطيطات المبنى.

من أهم نماذج ال UML:

• نموذج دراسة حالة (سمة) من البرنامج (Usecase Diagram)

• نموذج ترابط الأصناف أو الأجزاء (Class Diagram)

• النماذج الديناميكية (Dynamic Diagrams) ، وتنقسم إلى:

  • نموذج الفعالية بين الأجزاء (Activity Diagram)

  • نموذج التعاون أو الاشتراك (بين الأصناف) (Collaboration Diagram)

  • نموذج تسلسل الأحداث (Sequence Diagram)

  • نموذج المراحل (Statechart)

وهذه بعض الأمثلة:

و هناك العديد من النماذج الآخرى. (سنتطرق لشرح مفصل عن ال UML في مقال لاحق).

في نهاية هذه المرحلة الطويلة و المتعبة نكون قد أنتجنا نماذج مفصلة و عديدة عن البرنامج تكون جاهزة لتقديمها للمبرمج.

ثالثا: تصميم واجهة الاستخدام (GUI Design)

واجهة الاستخدام هي واجهة البرنامج التي يتعامل معها المستخدم. وتشمل بالأساس الجزئ المرئي الذي يتكون عادة من نوافذ و أزرار و حقول كتابة و لون الخلفية و لون الخط… الخ.

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

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

مثال على واجهتين مختلفيتن لبرنامج الآلة الحاسبة:

على السريع:

ما مدى تأثير كل واجهه على : سرعة الاستخدام، بساطة المظهر، نوع المستخدم؟ (مبتدئ/خبير)

هل لاحظت مدى الفرق؟ :)

هل هناك فروق في جوانب آخرى؟ ما هي؟ :)

والسلام

مصادر الصور:

صورة 1:

http://pigseye.kennesaw.edu

صورة 2 و 3: www.csci.csusb.edu/dick/samples/uml2.html

صورة 4:

http://trials2.pocketgear.c...

صورة 5:

http://homepage.mac.com/sup...

هذا الموضوع كتبه [ صالح ] بتاريخ الأثنين, أبريل 24th, 2006 في الساعة 6:16 pm في قسم عام.

http://www.swe4arab.net:
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

بعض التعليقات المفيدة التي جاءت مع المقال المستخرج


ALIA قال:

اريد ان اكتب مشروعا بلغة ال(UML) عن الاعلانات (advertising) وليس لدي المعلومات الكافية عن ذلك فهل اجد لديكم المساعدة

وشكرا


صالح قال:

أهلا بك أخي ALIA في موقع هندسة البرمجيات و مشكور على المشاركة

عفواً لم أفهم سؤالك، هل تقصد أن مشروعك هو “برنامج” لعمل (advertising)؟

إذا كان كذلك، فيجب أن تكون ملم بلغة برمجية و يفضل أن تكون لغة كائنية (Object Oriented) حتى يسهل عليك فهم و تحديد ال UML .

في البداية يجب أن تحدد متطلبات البرنامج قبل البدء بالتصميم (ارجع لموضوع أخي وليد “ما هي هندسة البرمجيات ؟” )

بعد ذلك يجب عليك دراسة المتطلبات و انتاج الرسومات على أساسها ابتداءً من تحديد الحالات استخدام البرنامج ورسمها كـ Usecase Diagrams.

وبعدها هناك العديد من المراحل حتى تتكتمل لديك جميع النماذج الخاصة ببرنامجك و أهمها رسومات الكلاسات Class Diagrams التي يعتمد عليها المبرمج بشكل كبير.

سنكتب موضوعاً مفصل عن الUML لكن ليس في الوقت الحالي لظروف الاختبارات (دعواتكم!).

إذا عندك أي استفسار أرجوك لا تتردد من طرحه.