هندسه البرمجيات


لميعد خافيا على أي منا أهمية البرمجيات Software في حياتنا اليومية سواء في البيت أوالمصنع أو المستشفى أو … الخ، فنحن نتعامل يوميا مع العديد من الأجهزة والمعداتالتي تعتمد في عملها على البرمجيات ومن المهم لنا أن تعمل هذه الأجهزة وبرامجهابالشكل والكفاءة التي نتوقعها منها. لذا فإن هندسة البرمجيات أصبحت اليوم أكثرأهمية من أي وقت مضى.
المرجع :
1- Shari Pfleeger, “Software Engineering – Theory and Practice”, 2nd Edition

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

وبنفس الفكرة يمكنالنظر إلى علم الحوسبة computer science حيث يكون تركيزنا على الحواسيب ولغاتالبرمجة لدرستها وتطويرها في حد ذاتها.
أو يمكن النظر إليها والتعامل بها علىأنها أدوات نستخدمها عند تصميم وتطوير حل لمشكلة ما تواجهنا أوالآخرين.

مهندس البرمجيات Software Engineer يعتبر أن الكمبيوتر هو أداة لحلالمشاكل problem-solving tool.
وعليه أن يستخدم معلوماته حول الحاسوب وعلمالحوسبة للمساعدة في حل المشكلة التي يطلب منه إيجاد حل لها.

شكل (1)
ولكن ومن المهم أن نتذكر أن عملية كتابة البرامجتعدفنArtبقدر ما هيعلم، لماذا؟

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

 

 

 

%d8%a7%d9%84%d8%b4%d8%b1%d8%b7%d8%a9-%d8%a7%d9%84%d8%a3%d9%85%d9%86-%d8%b4%d8%b1%d8%b7%d8%a9-1560x690_c

 

 

أي أن،هندسة البرمجيات تعنى بتصميم وتطوير برامج ذات جودةعالية.
من يشارك في هذهالعملية؟
المشاركون في عملية صناعة البرنامج، عادة ما يندرجونتحت ثلاث مجموعات:
· الزبون Customer: وهو الشركة (أو الشخص) الممولةلمشر وع تطوير البرنامج المطلوب
· المستخدم User: الشخص (أو مجموعة الاشخاص ) الذيسوف يقوم فعلا باستعمال البرنامج، والتعامل معه مباشرة.
· المطور Developer: وهو الشركة (أو الشخص) الذيسوف يقوم بتطوير البرنامج لصالح الزبون.
الشكل التالي يظهر العلاقة بين الفئات الثلاثةالسابقة
شكل (2)

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

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

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

بهذا يمكن أن نعرف النظام A System علىأنه تجمع من:
· مجموعة من الكائنات entities.
· مجموعة من الانشطة activities.
· وصف للعلاقات بين الكائنات والانشطة Relationship.
· تعريفلحدود النظام boundary.