مقدمة:
هندسة البرمجيات هو عبارة عن فرع من علوم الحاسب الآلي
وظهرت أهميته من بداية ظهور أول برامج... زكان يشمل تحليل النظم وهندسة النظم
وغيرها من التخصصات
ولقد ظهر هذا الاسم لأول مرة سنة
مامعنى هندسة؟
كما ورد في بعض الكتب كانت الهندسة عبارة عن حل المشاكل...
لأن المشكلة هي عبارة عن أساس أي عمل
فإذا اردت عمل مشروع فإنه لديك مشكلة وهي كيفية عمل المشروع
لذا ظهرت كلمة مشكلة ومعالجة المشاكل مصاحبة للهندسة
والمهندس هو الذي يحل المشكل بطرقه العلمية المقننة
يتضمن المعنى العام للهندسة في:
تطبيق الرياضيات والعلوم-
تجميع الحلول-
الاتجاه للمستخدم -
نفع المجتمع -
ما معنى برمجيات ؟
نطلق كلمة برنامج على الـ
Program و توثيقاته معا
ونعني بالتوثيقات أي جميع الوثائق التي تأتي مع البرنامج
من "دليل المستخدم" الى " تصميم النظام" الى "طلبات العملاء" الى "النظرة أو الرؤية" وغيرها من الوثائق المصاحبة للبرنامج
الآن ما معنى هندسة البرمجيات ؟
وصلنا الآن الى السؤال الذي يطرح دائما في كل مكان
ولكن مشكلة السؤال هو انه حتى باللغة النجليزية
لا يوجد تعريف شافي وصريح للمصطلح
ولكن نستطيع ان نقول ان هندسة البرمجيات هي:
تطبيق الافكار الهندسية على بناء البرامج...
أو بصورة أخرى:
هي خطوات منضبطة هندسية تهتم بجميع جوانب انتاج البرامج
تعريف IEEE:
هي التطبيق المنظم والمنضبط والكمي لتطوير وتشغيل و صيانة البرامج.
بماذا نهتم ؟
نهتم بكل النظريات و الطرق والادوات الخاصة بتطوير البرامج بطريقة محترفة
مالفرق بين هندسة البرمجيات وعلوم الحاسب الآلي؟
طبعا علوم الحاسب الالي أشمل و أعم
والهندسة البرمجية هي فرع منه
ماهي العملية البرمجة ؟
هي عبارة عن خطوات يعمل بها المهندسون
لينتجوا لنا برنامجا ناجحا
وخطواتها بوجه عام كالاتي:
- المتطلبات ( وتحدد متطلبات النظام او البرنامج )
- التطوير - ويشمل انتاج البرنامج او النظام
- الفحص - ويشمل اختبار المنتج والتاكد من جودته
- الصيانة والارتقاء- ويشمل صيانة البرنامج و قابليته للاستجابة للمتغيرات
ماهي نماذج أو قوالب العمليات الهندسية؟
هي عبارة عن نماذج او قوالب جاهزة
يتخذها المهندس لعمل البرنامج
وهي انواع فمثلا العامة منها:
-نموذج الشلال
- نموذج التطور
- نموذج التجميع واعادة الاستخدام
ما هي فروع هذه الهندسة ؟
فروعها كثيرة....منها
- تصميم الانظمة
- تحليل النظم
- الاختبار والجودة
- هندسة المتطلبات
مصطلحات:
Software Engineering هندسة برامج
Program برنامج
Software برنامج
Engineering هندسة
Software Process العملية البرمجية
Software Process Model نماذج العمليات البرمجية
Evolutionary Model نموذج التطور
Waterfall Model نموذج الشلال
Resuse اعادة الاستخدام
Model نموذج او قالب
Development تطوير
Testing & QA الاختبار والجودة
Requierment المتطلبات
طبعا هذه ليست الا مقدمة
--------------------
تكلفة البرامج
عادة تكون تكلفة النظام او البرنامج أكثر من تكلفة العتاد او الجهاز الذي يعمل عليه الربنامج
وتكون التكلفة على الصيانة اكثر مما يصرف على تطويره
وفي بعض الاحيان يكون صيانة البرنامج تعادل اضعاف ما كلف في تطويره
إذا فهندسة البرمجيات تهتم بانتاج برامج
ذات تكلفة فعالة أي اننا ننتج برامجا
بجودة عالية وباقل تكلفة ممكنة
************************************************** ******
تكلفة هندسة البرمجيات
تقريبا 60% من تكلفة البرنامج تذهب في طور التطوير
و 40% تصرف على الاختبارات والفحص
ومرحلة النشئ أي البناء تكلف اكثر من مراحل التطوير
وعادة التكلفة تختلف من برنامج الى آخر
ويعتمد على نوع النظام المراد تطويره وعلى متطلبات صفات ذلك النظام
مثل الآداء و مقدار اعتمادية البرنامج
ويكون توزيع التكاليف على حسب نوع نموذج التطوير اللذي استخدمناه
************************************************** ******
؟ CASE (Computer-Aided Software Engineering) ماهو الــ
هي عبارة عن أدوات تساعد المهندس على
انجاز اعمالا هندسية تساعد في أتمتة ودعم
عمليات عمل البرامج...
وتنقسم الى قسمين عليا وسفلى.
-تستخدم العليا في المراحل الاولى في عمليات البرامج
مثل جمع المتطلبات وتحليلها
- أما السفلى فتستخدم في المراحل المتقدمة من
عمليات البرامج مثل التطوير والبرمجة والاختبار
************************************************** ******
ماهي صفات البرنامج الجيد ؟
أهم شيء في البرامج ان
يوفي بكل المتطلبات التي طلبها الزبون
سواء كانت المتطلبات في الأداء أم الاعمال التي يؤديها البرنامج
والصفات المهمة في جودة البرنامج هي:
- قابليته للصيانة
فيجب ان يكون البرنامج قابل للتعديلات حسب المتغيرات
المصاحبة له في النظام
- اعتمادية البرنامج
يجب ان يكون البرنامج مصمم
بحيث ان الزبون يستطيع ان يعتمد عليه
وتكون مصداقية النتائج واضحة للمستخدم
و يكون مع البرنامج وثيقه تحدد حدوده ومدى مقدرته بصدق
- الكفاءة
يجب ان لايهدر مصادر النظام بلا فائدة
- قابليته للاستخدام
يجب ان يكون البرنامج قابل للاستخدام من قبل المستخدمين
************************************************** ******
كيف نعمل بطريقة صحيحة؟
- أولا بادارة و تخفيف درجة تعقيد النظام
ويكون بفهمنا الجيد للنظام وتكسيره الى انظمة اصغر بحيث نفهمه كاملا
- ثانيا تحويل الاحتمالات الى خطط
- ثالثا ادارة المتغيرات
ويشمل متغيرات المتطلبات
وكذلك متغيرات النظام
- رابعا التحدث مع الزبون
- خامسا تطبيق هندسة البرامج
هذه نظره عامة ليس الا
وسنتكلم عن كل شيء بالتفصيل لاحقا
والان؟؟؟؟
الآن عندنا معلومات عن هندسة البرامج
وماهي اهتماماتهم
وكيف يمشون ويفكرون هؤلاء المهندسون
الجزء الثالث من المقدمة
سيكون استعراضا للنماذج
وخطوات العمل العامة لعمل
برامج محترفة
منقول للفائدة