الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محاضرات في هندسة البرامجيات

بدأه Rasool Micro في 19 ديسمبر 2010 · 0 رد · 3,675 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام وعليكم هذه المحاضرة الأولى في هندسة البرامجيات

منقولة من كلية العلوم وكلية التربية ابن الهيثم قسم علوم الحاسبات من جامعة بغداد

البرمجيات software:-

برمجيات الحاسب هو منتج يتم تصميمه وبناءه بوساطة مهندس البرمجيات.

وهو يتضمن التالي:-

1. الإيعازات (برامج الحاسوب) Instructions(computer programs):- عندما تنفذ هذه البرامج أو الإيعازات فإنها تعطينا الوظيفة أو العمل المطلوب.

2. هياكل البيانات Data structures:- تمكن البرامج من معالجة المعلومات بكفاءة.

3. الوثائق Documents :- وتصف عملية واستخدام البرامج.

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

هندسة البرمجيات software engineering :-

يُعرّف هندسة البرمجيات على نحو مختلف باختلاف الناس. ومع ذلك، فالعوامل المشتركة في هذه التعاريف هي أن هندسة البرمجيات تتعلق ببرمجيات الأنظمة، والتي هي:-

1. تبنى بوساطة فريق عمل أفضل من مبرمجين منعزلين.

2. تستخدم المبادئ والقواعد الهندسية في تطوير هذه الأنظمة.

3. تُصنع بجوانب تقنية وغير تقنية.

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

• هندسة البرمجيات software engineering:- هي المهارة التي تُكامل العمليات والطرق والأدوات لتطوير برامج الحاسوب.

مصطلح 'software engineering' قدم أول مرة في أواخر الستينيات. عند تولي مؤتمر لمناقشة ما يسمى ﺑ'software crisis' (أزمة البرمجيات).

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

خصائص البرمجيات software characteristics:-

أن خصائص البرمجيات التي تجعلها مختلفة عن الأشياء الأخرى هي أن الإنسان هو الذي يبنيها (يبرمجها). ولزيادة الفهم عن البرمجيات وهندسة البرمجيات إنه بعد صناعة الهاردوير فأن عمل الإنسان (من تحليل وتصميم وبناء واختبار) هو في الأخير يحول إلى الشكل النهائي الفيزيائي الذي تفهمه الحاسبة.

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

• البرمجيات هي عناصر نظام منطقية أكثر من فيزيائية.

• خصائص البرمجيات تختلف إلى حد بعيد من خصائص قطع الحاسوب (الهاردوير).

وهذه الخصائص هي:-

1. البرمجيات تطور وليس تصنع بالمعنى الكلاسيكي (العادي).

هناك بعض التشابهات والاختلافات الموجودة بين تطوير البرمجيات وتصنيع قطع الحاسوب(الهاردوير):-

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

• كلاهما تُعتمد على الإنسان ولكن العلاقة بين الإنسان والشغل المنجز هو مختلف تماماً.

• كلاهما تتطلب بناء المنتج ولكن الوسائل مختلفة.

• البرمجيات مركزة على الهندسة (أي البرمجة والتصميم):- أي أن هندسة المشاريع (أي برمجة وتصميم المشاريع) لا تدار مثل تصنيع المشاريع.

• (مصنع البرمجيات) مصطلح لا يجعل من تصنيع الهاردوير وتطوير البرمجيات هما متساويين بالمعنى. بالأحرى، مصنع البرمجيات يشير إلى تطوير البرمجيات وليس تصنيعها.

2. البرمجيات لا تُخزن أي لا تُشحن.

3. معظم البرمجيات تبنى (تصمم) حسب حاجة المستخدم أكثر من إنها تّجمع من عناصر أخرى كما هو الحال مع تصنيع الهاردوير.

4. مع أن الصناعة مائلة إلى التجميع فمعظم البرمجيات هي مبنية حسب حاجة المستخدم.

تطبيقات البرمجيات software applications:-

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

المجالات البرمجية الآتية تشير إلى سعة إمكانية تطبيقات البرامج:-

• تطبيقات الأنظمة (system software):- هي مجموعة من البرامج مكتوبة لخدمة البرامج الأخرى، وهي تتصف بما يلي ( تفاعل كبير مع أجزاء الكومبيوتر، استخدام كثير بواسطة مستخدمين متعددين، المعالجة معقدة، هياكل بيانية معقدة، متعددة الواجهات).

كمثال: compiler, editor and file management utilities (هي عمليات معقدة ولكن تُحدد بهياكل معلومات). وتطبيقات الأنظمة الأخرى ( كمثال مكونات الأنظمة التشغيلية، المشغلات، الاتصالات) كلها تُعالج بكميات من البيانات الهائلة.

• البرامج الفورية أو الوقتية الدقيقة (Real-Time software):- وهي البرامج التي تراقب وتحلل وتسيطر على أحداث العالم الخارجي كما تحدث، وهذه الأنظمة يجب أن تستجيب داخلياً إلى مدى معين من الزمن من 1 ملي ثانية إلى 1 دقيقة، وعناصر هذه الأنظمة تتضمن (تجميع البيانات وتحليل المكونات والسيطرة وإخراج البيانات إلى العالم الخارجي).

• تطبيقات الأعمال (Business software):- التعامل مع معلومات الأعمال هو مجال منفرد كبير في البرمجيات. وهذه الأنظمة (كأنظمة جدول الرواتب, دفع واستقبال الحسابات المصرفية، الشحن) متضمنة داخل نظام معلومات الإدارة Management Information System (MIS) وهذا النظام متصل إلى واحد أو أكثر من قاعدة بيانات كبير يحتوي على معلومات عن الأعمال لتسهيل عملياتها واتخاذ قرار بحقها.

• الأنظمة العلمية والهندسية (Engineering and scientific software):- وهي الأنظمة التي تتعامل مع خوارزميات الأرقام (مثال: تطبيقات علم الفلك، التصنيع الآلي، التطبيقات التي تُساعد على التصميم وأنظمة المحاكاة).

• البرمجيات المتضمنة (Embedded software):- وتوجد داخل ذاكرة تسمى بذاكرة القراءة فقط Read only memory ROM وهي تستخدم للسيطرة على المنتجات والأنظمة للمستخدم (المستهلك) والأسواق الصناعية. وهي تنجز وظائف محدودة ومقتصرة (كالسيطرة على لوحة المفاتيح لطباخ المايكرو يف) أو يزود وظيفة مهمة (كالوظائف الرقمية في السيارة كالسيطرة على الوقود وعرض لوحة أجهزة القياس ونظام المكابح وألخ).

• نظام الحاسوب الشخصي (Personal computer software):- (مثال: معالجة النصوص، الجداول، رسوميات الحاسوب، تعدد الوسائط،

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

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

• البرمجيات المبنية على الويب (Web-based software):- صفحات الويب تعرض عن طريق مستعرض وهو البرنامج الذي يقوم بدمج عدة إيعازات قابلة للتنفيذ (كلغة CGI وHTML وPerl وJava) وبيانات (مثل النصوص المتشعبة وتنوع تنسيقات الصوت والمرئيات). في الحقيقة، الشبكة أصبحت حاسبة ضخمة تزود تقريباً بموارد برمجيات كبيرة غير محدودة التي يمكن الوصول إليها بواسطة أي شخص متصل بها.

• الأنظمة الخبيرة/ الشبكات العصبونية الاصطناعية (Expert systems/artificial neural networks):- برمجيات الشبكة العصبونية الاصطناعية مع المنطق المضبب قد فتح إمكانيات وهو نمط التمييز (الإدراك) وقدرات معالجة المعلومات.

• البرمجة الواقعية العملية والأنظمة المتعددة الوسائط تعرض جوهرياً طرق مختلفة لتبادل المعلومات مع المستخدمين.

• الخوارزميات الوراثية تعرض إمكانية البرامج التي تكون داخل الحاسبة بشكل ضخم حاسبات متوارثة.

أزمة البرمجيات (The software crisis):-

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

هذه المشاكل تضم:-

1. كيف نطور البرنامج.

2. كيف ندعم الحجم المتزايد لبرنامج موجود.

3. كيف نتوقع سرعة تواصل متزايد لطلب أكثر من برنامج.

الهندسة الجيدة للبرنامج (Well engineering software):-

الصفات التالية يجب أن يمتلكها أي مهندس برمجيات جيد:-

1. البرنامج يجب أن يكون قابل للصيانة والتعديل.

2. البرنامج يجب أن يكون موثوق من عمله.

3. البرنامج يجب أن يكون فعال وكفؤ.

4. البرنامج يجب أن يقدم واجهة برنامج ملائمة للمستخدم.

أهداف هندسة البرمجيات (The goals of software engineering):-

تسعى هندسة البرمجيات لإنجاز الأهداف التالية:-

1. التكاليف (Costs):- يجب أن تقلص (تقلل) تكاليف عملية التطوير وصيانة البرنامج.

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

3. قابل للنقل (Portability):- برامج الحاسوب ممكن أن تُحمل إلى الحاسبات الأخرى أو الأنظمة الأخرى بدون إعادة كتابة البرنامج من جديد. فالبرنامج يحتاج إلى إعادة ترجمة (re-compiled) لكي من المحتمل أن يعمل البرنامج على الآلة الجديدة وهذا يعتبر قابلية تنقل جيد.

4. الصيانة (Maintenance):- البرنامج يجب أن يكون قابل للصيانة لأن البرنامج هو مادة متغيرة على طول فترة الحياة. ومن المهم أن البرنامج يكتب ويوثّق وهذه الطريقة هي تغييرات ممكن أن تُصنع بدون تكاليف غير ضرورية.

5. الموثوقية (Reliability):- هي قياس عن كيفية البرنامج لتزويد المستخدم بالخدمات المتوقعة، المستوى الملائم للموثوقية هو شي أساسي لأن البرنامج يستخدم من قبل أكثر من مستخدم (في حالة متعدد المستخدمين من ناحية، ومن ناحية أخرى إنجاز النظام لوظائفه حتى عند استخدام الآخرين على نفس النظام).

6. وقت التسليم (Delivery on time):- النوعية العالية للبرنامج يجب أن ينتج ضمن موعد مؤكد.

7. البرنامج يجب أن يعرض واجهة مستخدم ملائمة (The software should offer appropriate user interface):- من الواضح أنه أكثر البرامج لا تكون لها إمكانية كاملة بهذه السهولة لأن الواجهة التي تعرض تجعل من الصعب استخدامها، لهذا فتصميم واجهة المستخدم يأخذ في نظر الاعتبار كفاءات وخلفيات مطلوبة لمستخدمي النظام ويجب أن تكون أنيقة وفقاً لذلك.

المشاكل، والتي يجب أن يواجهها مهندس البرمجيات بجرأة لبلوغ المستوى الأمثل لكل من هذه الأهداف (الصفات).

ترجمة رسول احمد

انتظروني في الاسبوع القادم......

تم تعديل هذه المشاركة بواسطة Rasool Micro في 19 ديسمبر 2010 في 23:29

1

مواضيع مشابهة