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

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

مرحلة تصميم البرمجيات في دورة حياة تطوير البرمجيات (Software Development Lifecycle) هي المرحلة التي تتضمن ترجمة متطلبات العملاء والمستخدمين إلى نموذج ما يمكن تنفيذه باستخدام لغات البرمجة، وتقسم مرحلة التصميم إلى 3 أنواع، وهي تصميم الواجهة (Interface Design)، وتصميم هيكلي (Architectural Design)، وتصميم تفصيلي (Detailed Design)، وكل منها له دوره في مرحلة التصميم الأساسية.

أجزاء النظام Elements of a System

  • البنيان أو الهيكل (Architecture): هو نموذج نظري يحدد النقاط الأساسية لكلا من، هيكلية البرنامج، وسلوكه (الوظائف)، والرؤى التي يقدمها هذا البرنامج أو النظام، ويمكن استخدام المخططات الهيكلية (Flowcharts) كأداة في تصميم هيكلية الأنظمة المختلفة، ويقوم بها مصممي البرمجيات ذوي الخبرة في الفريق.
  • الوحدات (Modules): كما علمنا أن البرامج الكبيرة لا يمكن كتابتها في مكان واحد، لذلك تقسم هذه البرامج إلى وحدات تدعى modules وهذه الوحدات تقوم ببعض الوظائف المعينة داخل البرنامج أو النظام، ولبناء نظام أو برنامج لابد من جمع هذه الوحدات معا.
  • العناصر (Components): هي المتغيرات والدوال التي تتكون منها الوحدات، فكل وحدة تحتوي بداخلها على مجموعة من الكائنات (Objects)، والدوال (Functions)، والمتغيرات (Variables)، وهياكل البيانات (Data Structures)، والخوازرميات (Algorithms)، وكل هذا يكتب بلغة برمجة واحدة وينفذ بطريقة صحيحة من قبل فرق التطوير وهي أهم مكونات تصميم البرمجيات.
  • الواجهات (Interfaces): هي المكان الذي يمكن للمستخدم التعامل مع النظام أو البرنامج، وهنا تتلاقي وحدات وعناصر النظام لإنتاج شئ ذو قيمة يمكن استخدامه والتفاعل معه للحصول على نتيجة مرضية للعملاء والمستخدمين.
  • البيانات (Data): هنا تدار البيانات الداخلة والخارجة من النظام بشكل دقيق من قبل فرق البيانات داخل الشركة، وتنظيم انسيابية البيانات في النظام.

تصميم الواجهة Interface Design

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

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

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

التصميم الهيكلي Architectural Design

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

يضيف التصميم الهيكلي تفاصيل مهمة تم تجاهلها في تصميم الواجهة، وتترك التفاصيل إلى آخر مرحلة من التصميم، ومن عيوب التصميم الهيكلي:

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

التصميم التفصيلي Detailed Design

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

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

مفاهيم تصميم البرمجيات Software Design Concepts

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

التجريد Abstraction

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

التجميع Modularity

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

النمط أو الأسلوب Pattern

النمط هو طريقة مبسطة لتكرار شئ معين، وفي تصميم البرمجيات تستخدم أنماط التصميم (Design Patterns) في تكرار نموذج معين من التصميم واستخدامه في عدة أجزاء من النظام، وهذا يحل مشكلة تكرار العمليات داخل النظام مما يوفر الوقت والجهد.

إعادة بناء البرنامج Refactoring

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

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

زر الذهاب إلى الأعلى
Translate »
error: ان المحتوى محمي