هندسة البرمجيات )SOFTWARE ENGINEERING (SE مقدمة عن ھندسة البرمجیات ف ي األربعینات والخمس ینات ظھرت م ا یس مى ال برمجیات أوSoftware وم ع التدرج بدأ ت تظھ ر األنظم ة الت ي تقوم بترتیب وتنظیم أعمال اآلل ة (الكمبيوتر) لتلبي إحتیاجات المستخدم والمقصود بھا ھي أنظمة التشغیل، حیث كان اإلنسان إذا أراد أن یستخدم أي نظام یجب علیه أن یخاطب كل جزء ،ولیس كم ا ھو الیوم ،حیث أص بح الیوم المس تخدم یتعام ل م ع البرامج ذات المستوى العالي ( High Level Languageفهي أقرب إلى فهم البشر ،بحيث ال تتطلب من المبرمج الدخول في تفاصيل قوانين تطبيق أوامر البرمجة ،وال على مستوى عتاد الحاسوب ،وتتميز بسهولة كتابتها وقراءتها وس هولة تعلمها ،وه ي لغات قابل ة للتطوير ،وم ن أمثلتها :مث ل ) Python، Visual Basic ،Delphi ...PHP، C#، Java هندسة البرمجيات تطورت كتاب ة البرمجيات من ذ بدايتها ف ي الستينيات إل ى مهن ة تهت م بأفضل طرق زيادة جودة البرمجيات وكيفي ة إنشائها .والجودة تشير إل ى مدى قابلي ة ال برمجيات للص يانة ،وثباتها ،وس رعتها ،وس هولة إستخدامها ،وقابلية اإلختبار ،وسهولة القراءة ،وحجمها ،وتكلفتها، وأمنها ،وعدد العيوب أ و «األخطاء» ،باإلضاف ة إل ى خص ائص أق ل قابلية للقياس مثل :األناقة ،واإليجاز ،ورضاء العمالء...، باإلضاف ة إل ى مس ائل إدارية أوس ع مث ل حج م الفريق األمث ل، والعملي ة ،وأفض ل طريق ة لتقديم ال برمجيات ف ي الوق ت المحدد وف ي أسرع وقت ممكن ،و«ثقافة» مكان العمل (البيئة) ... هندسة البرمجيات وم ع تطور الحواس یب بدأ ت تظھ ر لغات البرمج ة المختلف ة وأنظم ة التشغیل البس یطة وإس تمر ھذا التطورف ي وتیرة متس ارعة ...إل ى أ ن ظھرت مشكل ة جدیدة س ميت أزم ة ال برامجیات ( )Software Crisisوھي إنخفاض س عر المعدات ( )Hardwareمقاب ل إرتفاع أس عار ال برمجیات ب ل ق د یص ل الحال إل ى أ ن یص یر س عر ال برمجیات أك برمن س عر المعدات. هندسة البرمجيات وم ن األس باب الت ي أدت إل ى إرتفاع س عر ألـ Softwareوبالتال ي ظھور ھذه الأزمة التالي: -1اإلحتفاظ بالحقوق الفكری ة لل برامج م ن قب ل الم برمجین أ و الشركات العامل ة في ھذا المجال. -2السعر المرتفع الذي یضعه المبرمج لنفسه. -3الكم الھائل من البرمجیات الموجودة في سوق العمل والتي ال یحكمھا قانون. -4عدم وجود مھندسي البرمجیات ( )Software Engineerأو ندرتھم في سوق العمل. -5إزدياد إعتماد اإلنس ان عل ى الحاس وب ف ي مختل ف نواح ي الحضارة المدني ة الحديثة. أزمة البرمجيات Software Crisis مصطلح إستخدم مع بدايات نشأة حقل البرمجيات هندسة ،مع إزدياد إعتماد اإلنسان على الحاسوب في مختلف نواحي الحضارة المدنية الحديثة (الحياة) ،كان -وما يزال لحد ما – كان من الصعوبة بمكان كتاب ة شفرة برنام ج بشك ل ص حيح ،بحي ث ينف ذ ك ل المطلوب دون أخطاء ،وذو دق ة عالي ة ينف ذ المطلوب كم ا ه و ،وس هل للقراء ة م ن قب ل الم برمجين اآلخرين ،أ و حت ى الم برمج األص لي الذى كت ب الشفرة ،والتحق ق م ن عم ل ال برنامج وص يانته( .فم ن الممك ن أ ن نعزي ونحم ل أس باب هذه الص عوبة ف ي كتاب ة ال برامج أن ه يعود لطبيع ة ال برمجيات غي ر الملموس ة) فبالتال ي ال يمك ن قياس ها، ولطبيعتها المركبة والمعقدة والمتشعبة ،ولطبيعتها المتغيرة ،وغير ثابتة المتطلبات واألدوات. أزمة البرمجيات Software Crisis أول م ن ص اغ مص طلح «أزم ة ال برمجيات» كان F. L. Bauerف ي المؤتم ر األول لهندس ة ال برمجيات الذي قام ب ه حلف شمال األطلسي -باعتباره من أهم الزبائن والمستخدمين للبرمجيات -سنة 1968م ف ي ألماني ا ،والس بب المباش ر وراء انعقاد هذا المؤتم ر ه و إلقتراح الحلول ألزم ة ال برمجيات الت ي أص بحت ظاهرة شائع ة ،وكان ت مالمحها: التأخر الكبير في تسليم مشاريع البرمجيات (تجازت العديد من • المشاريع الجدول الزمني). التجاوز الكبير للميزانية في مشاريع البرمجيات (تجازت العديد من • المشاريع تكلفة الميزانية المطروحة لها). قلة جودة البرمجيات المسلمة (عدم تلبيتها للمتطلبات). • الصعوبة البالغة في صيانة وتحديث البرمجيات. • أزمة البرمجيات Software Crisis أضرار في الممتلكات نتيجة لعيوب في البرمجيات كاألمن السيئ. • عدم القدرة على توظيف عدد كاف من المبرمجين المؤهلين. • ضياع الوقت والمال والسمعة. • الحياة والموت :يمك ن للعيوب البرمجي ة أ ن تقت ل ،فق د فشل ت بع ض • األنظم ة المضمن ة المس تخدمة ف ي آالت العالج باألشع ة بشك ل كارث ي لدرجة أنها أعطت جرعات إشعاع مميتة للمرضى. وم ع ذل ك ،ال تزال ال برمجيات -وخاص ةً برمجيات الوق ت الحقيق ي ال ُمضمنة -خطرة ومنتشرة ،واألهم أنها ال تحظى بالرضا. أمثلة لبعض عيوب وأخطاء البرمجيات ( )1خطأ أعوام القرن العشرين :1900 ف+ي العام 1992م تلق+ت الس+يدة ماري م+ن والي+ة مينيس+وتا دعوة لإللتحاق بروض++ة أطفال وه++ي تبل++غ م++ن العم++ر 104سنة! مشكلة العام 2000
8 = 1992 - 2000
أمثلة لبعض عيوب وأخطاء البرمجيات ( )2خطأ السنة الكبيسة: ُغرم أح+د المتاج+ر بمبل+غ $1000بس+بب إحتفاظ+ه باللح+م يوما ً إضافيا ً ف++ي 29شباط (ف++براير) 1988م ،ويعود الخط++أ ف++ي ذل++ك إل++ى ال++برنامج الذي أس++تخدم لطباع++ة تاري++خ إنتهاء الص++الحية الذي ل++م يتنب++ه إل++ى أ++ن العام 1988هو سنة كبيسة. قرأ البرنامج أن شهر فبراير 28يوم أمثلة لبعض عيوب وأخطاء البرمجيات ( )3تصميم سيئ للواجهات: ف+ي نيس+ان 1990غادر قطار ف+ي لندن المحط+ة دون أ+ن يكون الس+++ائق عل+++ى متن+++ه ،فق+++د ضغ+++ط الس+++ائق زر اإلنطالق ،لك+ن ال+برنامج كان مص+مما ً بحي+ث ال يتحرك القطار حت+++ى تكون جمي+++ع أبواب+++ه مغلقة .وكان أح+++د األبواب عالقا ً فنزل الس+ائق ليحرره وم+ا إ+ن أغل+ق الباب حتى إنطلق القطار دون سائقه. أمثلة لبعض عيوب وأخطاء البرمجيات ( )4األمن: إرتف+++++ع عدد الحوادث األمني+++++ة الت+++++ي ُأبلِ+++++غ به+++++ا( ( CERT )Computer Emergency Response Teamالمرك+ز الوطن++ي لإلس++تعداد لطواري الحاس++بات والشبكات) م++ن 252 حادثا ً ف++ي العام 1990م إل++ى 21.756حادثا ً ف++ي العام (2000م) وبلغ أكثر من 40000حادثا ً في (2001م). هنالك تزايد بسبب سوء األمنية أمثلة لبعض عيوب وأخطاء البرمجيات ( )5التسليم ضمن المدة: بع++د ( 18شهراً) م++ن التطوي++ر ت++م تس++ليم نظام لشرك++ة تأمي+ن ص+حي ف+ي ويس+كنسون بلغ+ت كلفت+ه 200مليون دوالر ،غي+ر أ+ن النظام ل+م يك+ن يعم+ل بشك+ل ص+حيح! إحتاج تعديل+ه إل+ى دف+ع كلف+ة إضافي+ة وص+لت إل+ى 60 مليون دوالر وإستغرق األمر ثالث سنوات! المالح+ظ أ+ن جمي+ع األخطاء اآلنف+ة الذك+ر نتج+ت ع+ن أخطاء ف+ي البرمج+ة، عال ،+فه+ي وف+ي الحقيق+ة تعت+بر ال+برمجيات مص+نوعات بشري+ة ذات تعقي+د ٍ تقوم بوظائ+ف كثيرة ،ويطل+ب منه+ا أ+ن تحق+ق أهدافا ً ق+د تكون ف+ي كثي+ر م+ن األحيان متعارضة. كم+ا أنه+ا تتأل+ف م+ن مكونات عديدة ومعقدة ف+ي ح+د ذاته+ا ،وأ+ن المشاري+ع البرمجي+ة تتعرض أثناء مراح+ل التطوي+ر لكثي+ر م+ن التغيي+ر ف+ي المتطلبات بسبب تطور اإلحتياجات وتطور السوق. أم+ا م+ن حي+ث التكلف+ة ،فل+و تأملن+ا أس+عار األنظم+ة الحالي+ة ،لوجدن+ا أ+ن أس+عار البرمجيات قد تجاوزت بكثير أسعار التجهيزات. ول+و تابعن+ا عملي+ة التطوي+ر ال+برمجي ع+ن كث+ب ،لالحظن+ا أ+ن التكلف+ة المدفوع+ة ف+ي ص+يانة ال+برمجيات تفوق تكلف+ة بنائه+ا ،حت+ى أ+ن الدراس+ات ق+د بين+ت أ+ن تكلفة الصيانة يمك+ن أ+ن تصل إل+ى عدة أضعاف تكلفة البناء ف+ي األنظم+ة الت+ي تستمر في العمل (تعيش) لسنوات طويلة. فمن الطبيعي إذاً أن نمعن النظر في العلم الذي يعنى ببناء هذه ال برمجيات والذي يسمى هندسة البرمجيات ،وما يحتويه من نظريات ومنهجيات وأدوات للمحترفين. مواصفات مهندس البرمجيات الـSoftware Engineer
-1شھادة متخصصة في مجال الحاسوب.
() Information Technology, Computer Sciences أو أي تخصص حاسوبي. -2خبرة ال تقل عن سنة في مجال التخصص (إنشاء وتصمیم الأنظمة الحاسوبیة). -3التحدیث المستمر لمعلوماتك والمتابعة الدائمة لكل جدید. الفرق بین ألـSoftware و الـComputer Programs ھناك فرق رئیس وھو أ ن ألـ Softwareھي برام ج جاھزة لإلستخدام وأداء المهام وموثقة واإلعتمادیة فیھا تكون عالیة ،أما بالنسبة للبرمجیات فھي برامج تكون معدة من قبل المبرمج ولكنھا لیس ت نھائیة أ ي أنھ ا برام ج مبدئیة ،ویكون الھدف فیھ ا تحقي ق غرض معي ن (بحي ث ال یس تطیع التعام ل معھ ا إال الجهة المعدة والمنتجة لها). م ع العل م أ ن مرحل ة الـ Computers Programsأ و ال برمجیات تكون مرحلیة ومن ثم تتحول الى Softwareفور اإلنتھاء منھا. ما هي البرمجيات Software ویمكننا أن نعرف الـ Softwareأنھا مصطلح عام يطلق على أ ي برنام ج منفرد أومجموع ة م ن األنظم ة البرمجیة المس تقلة والمترابطة مع بعضھا البعض وموثقة.
والمقصود ھنا بالمستقلة :أي لكل برنامج كیانه الخاص.
أما المقصود بالمترابطة :أي أن بینھا قنوات ربط. أنواع البرمجیات Software ھناك نوعان من البرمجیات حسب اإلستخدام: )Generic Programs/1البرامج العامة) وھي البرمجیات التي تكون منتجة ألغراض عامة ویمكن أن یستخدمھا أي شخص وهي طورت لتناسب إحتياجات العديد من الزبائن المختلفين أو أي شرك ة م ن الشركات مث ل معال ج النص وص ...Word،Excelأ ي كام ل البرامج المكتبیة المنتجة من قبل شركة مایكروسوفت وغیرھا من البرامج األخرى. )Bespoke Programs /2البرامج الخاصة) وھي ال برامج المعدة خص یصاً للمس تخدم حیث تكون معدة حس ب مایری د بناء عل ى المتطلبات الت ى ً الزبون أ و الشرك ة الت ي طلب ت ھذا ال برنامج يضعها ،وعادة م ا تكون ذات حج م ص غير مقارن ة م ع ال برامج العام ة اإلس تخدام ،ومتعب ة ف ي نف س الوق ت للم برمج وتكون إیراداتھ ا أق ل م ن البرامج العامة. من خالل ما سبق یمكننا أن نحدد النقاط ألتي یجب على المس تخدم أ ن یقوم بمراعاتھ ا قب ل وبع د وأثناء تص میمه ألح د هذين النوعین من البرمجیات: -1الزمن: Timeونقصد بالزمن ثالث نقاط أساسیة: –تحدید موعد تسلیم النظام. –تحدید الفترة الزمنیة :للمبرمجین إلنتاج ھذا النظام. –تحدید سرعة النظام :أو ما یسمى إستغالل موارد النظام. - 2الجودة: Qualityویمكننا أن ننطر إلى الجودة من ثالث وجھات نظر: –المالك : Customerبالنسبة إلى المالك فإنه یھمه من ناحیة الجودة اآلتي: ( )1تسلیم النظام في الموعد المحدد. ( )2تحقیق اإلعتمادیة واألمنیة واألمان في النظام . Security)& (Reliability & Dependability -نقصد باإلعتمادیة تنفیذ األعمال من دون أخطاء. -الكفاءة (تنفیذ أكبر قدر ممكن من العملیات في أقصر وقت) -قابلیة الصیانة ) )Maintainabilityالمرونة الكافیة للتعدیل في العملیات أو إضافتھا أوتغییر الصالحیات والمستخدمین ..... ب -المستخدم : Userینظر المستخدم إلى جودة النظام من حیث: /1أن یكون مرن وسھل التعلم جید التصمیم . /2اإلعتمادیة . /3الكفاءة . ج -المطور :Engineer Software Or Developer بالنسبة للجودة في نظر مھندس البرامجیات فھو ینظر لھا من اإلتج ِھات اآلتية: جدا. -عامل األمن واألمان یكون عالیاً ً -جودة التصمیم الخارجي .Design -اإلعتمادیة . -الكفاءة . -قابلیة الصیانة. معايير الجودة • كیف یمكنن ا أ ن نحك م عل ى النظام بأن ه نظام جید أ و غیر جید (المعاییر ألتي تحدد جودة النظام): /1قابلیة الصیانة. /2الكفاءة. /3اإلعتمادیة. /4قابلیة اإلستخدام Usabilityونقصد بھا مدى إمكانیة تعلم النظام بسھولة. (وتكون األنظمة متأرجحة ما بین تلك المعاییر بین صعود وھبوط وبالتالي على مدى إمكانیة توفير تلك المعاییر تكون أفضلية األنظمة). ماهو الـ Software Engineering )SE( :
یمكننا أن نعرف ھندسة البرمجیات بأنھا :فرع من فروع المعرفة
والت ي تھت م بإنتاج وص ناعة وتطویرالـ Software (ال برمجیات) بشرط أ ن تكون ذات جودة عالیة وقليل ة التكلف ة وتسلم في الوقت المناسب، أ ي أ ن ھذه المادة یمكنن ا م ن خاللھ ا معرف ة أ ن النظام ذو جودة عالیة أ و منخفض ة وبالتال ي یمك ن أ ن یحدد الس عر ل ه ،وكذل ك اإللتزام بمواعید التس لیم وكیفیة تحدی د الفترة الزمنیة لذل ك وف ق معاییر وضوابط وشروط معینة. الطبقات التقنیة لھندسة البرامجیات (1 - )Toolsونقصد بھا قسمین رئیسیین: – Software بHardware - وال : Softwareیراد بذلك ماھي اللغة البرمجیة ،والتي سميتأ ً إص طالحا بالأدوات والت ي س وف نس تخدمھا ف ي إنشاء النظام بحیث تكون الإعتمادیة على النظام أعلى. ثانیاً Hardware :ويقص د ب ه ھو األدوات ألت ي س وف تس تخدم للنظام من قطع ولوازم أخرى. الطبقات التقنیة لھندسة البرامجیات Methods: -2 وھي الطرق أو الخوارزمیات المختلفة إلنشاء وتصمیم النظام أو البرنامج وكیفیة تدفق البیانات من وجھة نظر المھندس. Development Process -3: وھي الكود البرمجي وهو ما يعرف بالتطویر لأن المھندس یقوم سواءا كان یدوي أم آلي. ً بتطویر النظام الحالي Focus on Quality -4: حیث یج ب عل ى مھندس ال برامجیات التركیز عل ى الجودة ف ي ك ل مم ا س بق بحیث أ ن ك ل طبق ة م ن الطبقات الس ابقة مرتبط ة ومعتمدة عل ى الأخرى. المسؤلیة األخالقیة واإلحترافیة یجب على مھندس البرامجیات الإھتمام بالنقاط التالیة: – 1الخص وصیة و(الس رية) : Confidentialityخص وصیة العمالء الذی ن يت م التعام ل معھ م ،بحیث یج ب عل ي المھندس ین الحفاظ علي أسرارھم ،فعند تصمیم النظام یجب مراعاة ذلك. – 2التخص صیة (المهارة): Competenceال يض ع الشخ ص نفسه في مكان لیس مكانه فیجب علیه تحدید تخصصه للعمیل. - 3الحفاظ على حقوق الملكیة. – 4س وء إس تخدام الحاس وب Misuse Computer :أ ن ال یستخدم الحاسوب إال في الشئ الذي أعد من أجله. األشیاء ألتي تعمل على رفع اإلعتمادیة اإلعتمادیة هي مدى ثقة المنظمة بالنظام ،أما الأشیاء ألتي تعمل على رفع الأعتمادیة فھي: ( Hardware Reliability/1الوثوق بالمعدات) فلو كان لدینا نظام ذو جودة عالیة لكن المعدات كانت ردیئة حتما ً ذلك یؤدي إلى ضعف اإلعتمادية. ( Software Reliability /2الوثوق بالبرمجيات) بالمث ل ل و أ ن المعدات عالیة المس توى وم ن ث م یكون النظام ردئ أ و أ ن تكون قاعدة البیانات الخاصة بالنظام ضعیفة الحمایة فذلك یؤدي إلى ضعف الإعتمادیة في النظام. ( Operator Reliability /3الوثوق بالمشغل) ل و كان المس تخدم ال یجید إس تخدام النظام فق د یقوم بعم ل أشیاء تض ر بالمنظم ة ككل. األنظمة و بیئة العمل الخاصة بھا یقصد بالبیئة بیئة العمل المحیطة بالنظام ،و كذلك البیئة الطبیعیة ،فعندما تكون البیئة الخارجیة أو الطبیعیة سيئة أو غير مناس بة ق د تؤث ر ف ي النطام كان یتاث ر النظام بدرج ة الحرارة العالیة ،أو أن یتفاعل مع الضغط المتزاید في الغرفة مثالً فیقوم بإجراء معین وھكذا ...