عرض مشاركة واحدة
قديم 14-10-2007, 12:58   رقم المشاركة : 1 (permalink)
معلومات العضو
alwali
عضو جديد
 
إحصائية العضو








alwali غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
alwali is on a distinguished road

 

 

Thumbs up Introduction About Software Engineering

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

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

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


ما معنى برمجيات ؟
نطلق كلمة برنامج على الـ
Program و توثيقاته معا
ونعني بالتوثيقات أي جميع الوثائق التي تأتي مع البرنامج
من "دليل المستخدم" الى " تصميم النظام" الى "طلبات العملاء" الى "النظرة أو الرؤية" وغيرها من الوثائق المصاحبة للبرنامج


الآن ما معنى هندسة البرمجيات ؟
وصلنا الآن الى السؤال الذي يطرح دائما في كل مكان
ولكن مشكلة السؤال هو انه حتى باللغة النجليزية
لا يوجد تعريف شافي وصريح للمصطلح
ولكن نستطيع ان نقول ان هندسة البرمجيات هي:
تطبيق الافكار الهندسية على بناء البرامج...

أو بصورة أخرى:
هي خطوات منضبطة هندسية تهتم بجميع جوانب انتاج البرامج

تعريف IEEE:
هي التطبيق المنظم والمنضبط والكمي لتطوير وتشغيل و صيانة البرامج.


بماذا نهتم ؟
نهتم بكل النظريات و الطرق والادوات الخاصة بتطوير البرامج بطريقة محترفة

مالفرق بين هندسة البرمجيات وعلوم الحاسب الآلي؟
طبعا علوم الحاسب الالي أشمل و أعم
والهندسة البرمجية هي فرع منه


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

ماهي نماذج أو قوالب العمليات الهندسية؟
هي عبارة عن نماذج او قوالب جاهزة
يتخذها المهندس لعمل البرنامج
وهي انواع فمثلا العامة منها:
-نموذج الشلال
- نموذج التطور
- نموذج التجميع واعادة الاستخدام

ما هي فروع هذه الهندسة ؟
فروعها كثيرة....منها
- تصميم الانظمة
- تحليل النظم
- الاختبار والجودة
- هندسة المتطلبات


مصطلحات:
Software Engineering هندسة برامج
Program برنامج
Software برنامج
Engineering هندسة
Software Process العملية البرمجية
Software Process Model نماذج العمليات البرمجية
Evolutionary Model نموذج التطور
Waterfall Model نموذج الشلال
Resuse اعادة الاستخدام
Model نموذج او قالب
Development تطوير
Testing & QA الاختبار والجودة
Requierment المتطلبات
مقدمة في هندسة البرمجيات 2

تكلفة البرامج
عادة تكون تكلفة النظام او البرنامج أكثر من تكلفة العتاد او الجهاز الذي يعمل عليه الربنامج
وتكون التكلفة على الصيانة اكثر مما يصرف على تطويره
وفي بعض الاحيان يكون صيانة البرنامج تعادل اضعاف ما كلف في تطويره
إذا فهندسة البرمجيات تهتم بانتاج برامج
ذات تكلفة فعالة أي اننا ننتج برامجا
بجودة عالية وباقل تكلفة ممكنة
************************************************** ******
تكلفة هندسة البرمجيات
تقريبا 60% من تكلفة البرنامج تذهب في طور التطوير
و 40% تصرف على الاختبارات والفحص
ومرحلة النشئ أي البناء تكلف اكثر من مراحل التطوير
وعادة التكلفة تختلف من برنامج الى آخر
ويعتمد على نوع النظام المراد تطويره وعلى متطلبات صفات ذلك النظام
مثل الآداء و مقدار اعتمادية البرنامج
ويكون توزيع التكاليف على حسب نوع نموذج التطوير اللذي استخدمناه
************************************************** ******
؟ CASE (Computer-Aided Software Engineering) ماهو الــ
هي عبارة عن أدوات تساعد المهندس على
انجاز اعمالا هندسية تساعد في أتمتة ودعم
عمليات عمل البرامج...
وتنقسم الى قسمين عليا وسفلى.
-تستخدم العليا في المراحل الاولى في عمليات البرامج
مثل جمع المتطلبات وتحليلها
- أما السفلى فتستخدم في المراحل المتقدمة من
عمليات البرامج مثل التطوير والبرمجة والاختبار
************************************************** ******

ماهي صفات البرنامج الجيد ؟
أهم شيء في البرامج ان
يوفي بكل المتطلبات التي طلبها الزبون
سواء كانت المتطلبات في الأداء أم الاعمال التي يؤديها البرنامج
والصفات المهمة في جودة البرنامج هي:
- قابليته للصيانة
فيجب ان يكون البرنامج قابل للتعديلات حسب المتغيرات
المصاحبة له في النظام
- اعتمادية البرنامج
يجب ان يكون البرنامج مصمم
بحيث ان الزبون يستطيع ان يعتمد عليه
وتكون مصداقية النتائج واضحة للمستخدم
و يكون مع البرنامج وثيقه تحدد حدوده ومدى مقدرته بصدق
- الكفاءة
يجب ان لايهدر مصادر النظام بلا فائدة
- قابليته للاستخدام
يجب ان يكون البرنامج قابل للاستخدام من قبل المستخدمين
************************************************** ******

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

هذه نظره عامة ليس الا
وسنتكلم عن كل شيء بالتفصيل لاحقا


والان؟؟؟؟
الآن عندنا معلومات عن هندسة البرامج
وماهي اهتماماتهم
وكيف يمشون ويفكرون هؤلاء المهندسون
الجزء الثالث من المقدمة
سيكون استعراضا للنماذج
وخطوات العمل العامة لعمل
برامج محترفة
مقدمة في هندسة البرامج - الجزء الثالث


نماذج الهندسة البرمجية
سنتكلم عن 4 اشياء مهمة
- دورات الحياة
- لغات النماذج
- العمليات
- الطرق


أولا: دورات حياة المنتج

وهو عبارة عن نموذج. هذا النموذج ينظم سلسة العمليات والنشاطات
في بناء مشروع البرنامج
وهو يعتبر نظرة عامة على جدول المشروع.

النموذج الهندسي
هذا النموذج يتكون من:
- مرحلة الاكتشاف
- مرحلة الاختراع
- مرحلة البناء
وهذه المراحل تتداخل حسب نوع الهندسة
وبما اننا في هندسة البرامج
فستكون المراحل المهمة كمايلي:

- مرحلة المتطلبات
- مرحلة التخصيص
- التصميم العالي أو العام
- مرحلة التصميم السفلي
- التطبيق
- التجميع
-الاختبار
- التسليم

وسوف نتكلم الان عن كل مرحلة بشيء من التفصيل
وكل مرحلة لها مطورين ومختصين وشهادات ومحترفين
وهذا لن تجده الا في الحياة العملية
وليست في النظريات

- مرحلة المتطلبات
وهي أهم مرحلة على الاطلاق
فبدونها المشروع لن ينجح ابدا وهناك عدة شركات تتخصص
في جمع هذه المتطلبات ومن ثم تخصيصها
وللمعلومية ان جميع المتطلبات يؤثر كثيرا في سير المشروع
وبدونها لن يكون المشروع جيدا
ولكي نبسط الموضوع اليكم هذا المثال
" جاء عدد من الموظفين الى الادارة وقالوا نحتاج الى وسيلة مواصلات
واخبروا المهندسون بذلك فقام احد المهندسين ليثبت المشاكل التي تنتج عن
عدم الدقة في جمع المتطلبات
وطلب من احد المبرمجين ان يرسم ما فهم على ورقة
وكرر الطلب نفسه مع أحد المظفين وكذلك مع أحد الاداريين
العبرة تكمن في ان الاداري رسم على الورقة صورة لدراجة هوائية
والمبرمج رسم عربة تجرها خيول
والموظف رسم سيارة"

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

- مرحلة التخصيص
عودة الى المراحل... مع مرحلة المتطلبات
يليها مرحلة التخصيص وهي تحليل واستخلاص
المتطلبات وتصنيفها وتوثيقها وعمل وثيقة مشهورة تعرف
بوثيقة المشروع وتسمى ايضا وثيقة تخصيص متطلبات البرنامج
Software Requierment Specification ( SRS)


- مرحلتا التصميم العالي والسفلي
وهنا يتم رسم وتخطيط
كيف يكون شكل المشروع
ويكون التصميم العالي عاما قدر الامكان ويبين فيه
كيف يتكامل المشروع مع الانظمة الاخرى
وكيف يكون شكله العام.
اما التصميم السفلي فيعنى بالتعمق قليلا في
المشروع فيحدد كيف تتكامل المكونات مع بعضها البعض
ويصف الحركات وسيرورة النظام

- مرحلة التطبيق
وهذه المرحلة هي المرحلة المشهورة عنا نحن
معشر المبرمجين
فالناس لا يعرفون غير اننا نبرمج
فهذه المرحلة عبارة عن ترجمة كل المراحل السابقة
الى كود بلغة او عدة لغات وتطبيقها
على الكومبيوتر

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

- مرحلة التسليم
وهنا يتم تسليم البرنامج الى الزبون
و يشمل تركيب البرامج ايضا وتقديم
دليل المستخدم

هنا تطرح عادة اسئلة مهمة
وهو هل يجب ان نتبع جميع هذه المراحل؟
وهل هذه المراحل هي الوحيدة ؟
هذه المراحل طويلة فهل نستطيع عمل أكثر من مرحلة في نفس الوقت ؟
واذا كان ذلك هلهناك سير معين في ترتيب هذه المراحل ؟

الاجابة عن هذه الاسئلة سوف يكون في
نماذج دورات الحياة
وهي مجموعة من النماذج
تسير بطريقة معينة وتوزع عليها هذه المراحل

هذا سيكون موضوعنا في الجزء الرابع
alwali غير متواجد حالياً   رد مع اقتباس