اتحاد شباب الحيمه
اتحاد شباب الحيمه

اتحاد شباب الحيمه

تنميه وبناء الحيمه مسؤليتنا جميعا
 
الرئيسيةاليوميةمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخولاعضاء
المواضيع الأخيرة
» الشارع السياسي 2011
الثلاثاء فبراير 15, 2011 9:35 am من طرف علي اليعري

» إلى جميع أعضاء المنتدى
الإثنين يناير 17, 2011 6:26 am من طرف خالد

» عيد مبارك وكل عام والجميع بخير
الخميس نوفمبر 11, 2010 1:33 am من طرف علي اليعري

» مناظر من الحيمة الداخلية
الإثنين نوفمبر 08, 2010 7:47 pm من طرف أحمد غازي

» Cellular Telephone Generations
الإثنين نوفمبر 08, 2010 8:31 am من طرف عبد الله اليعري

» اهلا بالكينعي والقاضي اليعري
الثلاثاء نوفمبر 02, 2010 2:55 pm من طرف علي اليعري

» الكهرباء اهمال بلا حدود
الأحد أكتوبر 31, 2010 11:12 am من طرف Moh'd Naif

» الف مبروك على التوظيف
الأحد أكتوبر 24, 2010 9:18 am من طرف علي اليعري

» عفوا اعزائي
الأربعاء أكتوبر 13, 2010 1:56 pm من طرف رشاد اليعري

» فيروس كومبيوتر "يهدد" المنشآت النووية الإيرانية
الأربعاء أكتوبر 13, 2010 1:51 pm من طرف رشاد اليعري

» شلوا لكم صنعاء وانا الحديدة...الرجاء قرآءة الموضوع
الأربعاء أكتوبر 13, 2010 10:25 am من طرف اخو قيس

» مجلة العلوم الامريكيه
الأربعاء أكتوبر 13, 2010 9:34 am من طرف اخو قيس

» شعر عن حب الوطن
الجمعة أكتوبر 01, 2010 10:33 am من طرف amh alyaari

» شعر عائض القرني عن اهل اليمن
الجمعة أكتوبر 01, 2010 10:27 am من طرف amh alyaari

» نتمنى لك الشفاء العاجل يا ابو عاهد
الثلاثاء سبتمبر 28, 2010 8:38 am من طرف علي اليعري

»  أوائل طلاب الحيمة الداخلية في المرحلة الثانوية - القسم العلمي 2009 - 2010
الإثنين سبتمبر 20, 2010 2:28 am من طرف عبد العزيز العبادي

» Rmadhan Kareem
الإثنين أغسطس 23, 2010 6:57 am من طرف Moh'd Naif

» كن صائما حقيقيا غير مزيف
الجمعة أغسطس 20, 2010 5:35 pm من طرف عبد العزيز العبادي

» شهرمبارك عليكم
الجمعة أغسطس 20, 2010 5:23 pm من طرف عبد العزيز العبادي

» برامج الاختراق وكيفية الحماية منها
الثلاثاء أغسطس 10, 2010 9:05 am من طرف عبد الله اليعري

» موقع مفيد جدا في تعليم اللغة الإنجليزية
الثلاثاء أغسطس 10, 2010 7:23 am من طرف Moh'd Naif

» تهنئة خاصة للمهندس محمد نايف
الإثنين أغسطس 09, 2010 5:21 am من طرف عبد العزيز العبادي

» ترحيب حار (من اليمن إلى الهند) للدكتور أحمد غازي
الإثنين أغسطس 09, 2010 5:19 am من طرف عبد العزيز العبادي

» ألف مبروك ( مختار - عدنان - عبدالرزاق)
الإثنين أغسطس 02, 2010 3:26 am من طرف علي اليعري

» نتائج إمتحانات المفاضلة للعام 2010
السبت يوليو 31, 2010 11:30 am من طرف Moh'd Naif

» معلومات في الكهرباء يستفيد منها الجميع
السبت يوليو 31, 2010 11:01 am من طرف Moh'd Naif

» عناوين مجموعة شركات في أبوظبي
الجمعة يوليو 30, 2010 3:15 pm من طرف Moh'd Naif

» ممنوع نشر التلفونات و الإيميلات في المنتديات
الجمعة يوليو 30, 2010 11:08 am من طرف Moh'd Naif

» السوبرمان
الجمعة يوليو 30, 2010 10:46 am من طرف Moh'd Naif

» الحسابات الهندسية العملية
الجمعة يوليو 30, 2010 9:59 am من طرف Moh'd Naif

» إعتذار عن الإنقطاع
الجمعة يوليو 30, 2010 9:43 am من طرف Moh'd Naif

» أين الشعر يا ابو متعب
الأربعاء يوليو 28, 2010 2:10 pm من طرف أبو غزه

» ادعوا كلكم بالشفاء العاجل لعمي علي حسين
الأربعاء يوليو 28, 2010 2:01 pm من طرف أبو غزه

» حمدا لله على سلامة الوصول يادكتور
الأربعاء يوليو 28, 2010 1:51 pm من طرف أبو غزه

» ليش ما ترحبوا بي
الأربعاء يوليو 28, 2010 10:32 am من طرف hamdi

» الغش في الاختبارات في الحيمة
الأربعاء يوليو 28, 2010 10:12 am من طرف hamdi

» قصيده للشاعر عبد الله عبد الوهاب نعمان ( الفضول )
الأربعاء يوليو 28, 2010 4:11 am من طرف عبد العزيز العبادي

» هل انت شخص دائنا أم مدين
الثلاثاء يوليو 27, 2010 5:08 am من طرف عبد العزيز العبادي

» خلق آدم صلوات الله عليه وذريته
الثلاثاء يوليو 27, 2010 4:54 am من طرف عبد العزيز العبادي

» وقفه مع شاعر اليمن الكبير ( البردوني )
الثلاثاء يوليو 27, 2010 4:39 am من طرف عبد العزيز العبادي

»  شخص يهدم المنتدى ولا يحب ان يبنيه
الأحد يوليو 25, 2010 2:29 pm من طرف أحمد غازي

» نتمنى لك الشفاء العاجل
الأحد يوليو 25, 2010 10:53 am من طرف علي اليعري

» مراحيب بعبد السلام العريفي
الأحد يوليو 25, 2010 3:06 am من طرف عبد العزيز العبادي

» كيفية الانسحاب
السبت يوليو 24, 2010 2:42 pm من طرف Superman

» مبروك المتقدمين للكليات العسكرية
الخميس يوليو 22, 2010 10:44 am من طرف علي اليعري

» مهندس النفط والمعادن
الأحد يوليو 18, 2010 9:01 am من طرف محمد عبدالله اليعري

» في العمق
الأحد يوليو 18, 2010 5:07 am من طرف Superman

» هل انت خريج 2009
الأحد يوليو 18, 2010 4:56 am من طرف Superman

» كيف ننسحب من العضوية
الأحد يوليو 18, 2010 4:50 am من طرف Superman

» شكرا سوبرمان
الأحد يوليو 18, 2010 3:36 am من طرف علي اليعري

» منح دبلوم لغة انجليزية
الأحد يوليو 18, 2010 3:17 am من طرف علي اليعري

» مبروووك عدنان الهندسة
السبت يوليو 17, 2010 12:38 pm من طرف Superman

» تعلم معنى الغيبه
السبت يوليو 17, 2010 4:59 am من طرف عبد العزيز العبادي

» بين الجنه والنار
السبت يوليو 17, 2010 4:44 am من طرف عبد العزيز العبادي

» فخامة الرئيس يتفقد مديرية الحيمة الداخلية
السبت يوليو 17, 2010 4:06 am من طرف عبد العزيز العبادي

» كيف تجعل شخصيتك قوية
الجمعة يوليو 16, 2010 11:10 am من طرف عبد العزيز العبادي

» قواعد الحوار مع الاخرين
الجمعة يوليو 16, 2010 10:53 am من طرف عبد العزيز العبادي

» الصدق
الجمعة يوليو 16, 2010 10:46 am من طرف عبد العزيز العبادي

» احذر ان تسأل النساء هذا السؤال المؤلم جدا !!
الخميس يوليو 15, 2010 1:09 am من طرف hamdi

» خلف كل رجل عظيم امرأة....!!!
الخميس يوليو 15, 2010 1:05 am من طرف hamdi

» عبارات وأشعار كروت الأفراح..
الخميس يوليو 15, 2010 12:52 am من طرف hamdi

» الحصول على الكهرباء مجانا الموضوع للفائده وليس للتخريب
الثلاثاء يوليو 13, 2010 12:18 am من طرف Superman

» اهلا بعميد اللغة العربية
الإثنين يوليو 12, 2010 3:46 pm من طرف أحمد غازي

» اهلا بالسياغي
الإثنين يوليو 12, 2010 5:18 am من طرف علي اليعري

» لماذا غلاء المهور
الإثنين يوليو 12, 2010 5:11 am من طرف علي اليعري

» أخالفك الرأي ..... ولكني أحبك
الأحد يوليو 11, 2010 4:48 pm من طرف محمد السياغي

» إسلام عالم ياباني بسبب إكتشاف علمي
الثلاثاء يوليو 06, 2010 6:37 am من طرف رشاد اليعري

» من يعرف الإجابة سيكون من ضمن أذكى أذكياء العالم (2% الأذكياء في العالم)
الثلاثاء يوليو 06, 2010 6:31 am من طرف رشاد اليعري

» أسئله ثقافية للحل
الثلاثاء يوليو 06, 2010 6:12 am من طرف رشاد اليعري

» هاتف جوجل: القصة الكاملة
الثلاثاء يوليو 06, 2010 1:32 am من طرف رشاد اليعري

»  مبروك عبد الرزاق
الأحد يوليو 04, 2010 12:28 pm من طرف علي اليعري

» علماء لهم اسهاماتهم البارزه
الأحد يوليو 04, 2010 12:19 pm من طرف علي اليعري

» فيديو تعليمي في علم الشبكات
الأحد يوليو 04, 2010 10:34 am من طرف عبد الله اليعري

» الى من يريد تحميل الكتب العلميه النسخه 2
السبت يوليو 03, 2010 4:08 am من طرف رشاد اليعري

» قولوا لي الحمد لله على السلامة
السبت يوليو 03, 2010 1:10 am من طرف رشاد اليعري

» هل تعلمون أخوف ما اخاف عليه رسولنا الكريم صلى الله عليه وسلم
الخميس يوليو 01, 2010 12:49 am من طرف محمود الجومري

» رضاء الوالدين
الثلاثاء يونيو 29, 2010 1:20 am من طرف محمود الجومري

» مأساة طلاب صعدة في جامعة صنعاء
السبت يونيو 26, 2010 1:08 pm من طرف الفصيح

» اهلا عبدالقادرالجومري
الأربعاء يونيو 23, 2010 3:14 am من طرف محمود الجومري

» من شعر ابن الفارض
الثلاثاء يونيو 22, 2010 1:09 am من طرف محمود الجومري

» على صفحات الورق
الإثنين يونيو 21, 2010 12:03 pm من طرف الفصيح

» نصائح قيمة
الأحد يونيو 20, 2010 4:49 am من طرف محمد عبدالله اليعري

» افتتاحية من قلب
الأحد يونيو 20, 2010 4:33 am من طرف محمد عبدالله اليعري

» قصة جميله للشيخ احمد بن حنبل - رحمه الله
السبت يونيو 19, 2010 1:00 pm من طرف الفصيح

» Simple Past Tense
السبت يونيو 19, 2010 12:36 pm من طرف الفصيح

» تهنئة خالصة
السبت يونيو 19, 2010 11:56 am من طرف الفصيح

» لن تلوث ايها القلب الطيب
الثلاثاء يونيو 15, 2010 11:28 am من طرف محمد عبدالله اليعري

» اهلا بسفيرنا في ارض الحرمين
الثلاثاء يونيو 15, 2010 10:41 am من طرف محمد عبدالله اليعري

» اهلا بسفيرنا في ارض الحرمين
الثلاثاء يونيو 15, 2010 10:33 am من طرف محمد عبدالله اليعري

» موضوع هام جداَ
الإثنين يونيو 14, 2010 2:08 am من طرف عبد الله اليعري


شاطر | 
 

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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
علي اليعري
المدير العام
المدير العام
avatar

عدد المساهمات : 81
تاريخ التسجيل : 19/01/2010
العمر : 41
الموقع : haymah.mam9.com

مُساهمةموضوع: هندسة البرمجيات   الإثنين مايو 03, 2010 12:11 pm

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

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

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

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

استخدمت هندسة البرمجيات كمفهوم نظري من حين لآخر في أواخر الخمسينات و بداية الستينات من القرن الماضي . أما الاستخدام الرسمي الأول لهذا المصطلح فكان في مؤتمر عقد من قبل اللجنة العلمية في منظمة حلف شمال الأطلسي 1968 حول البرمجيات, وقد أخذ هذا المصطلح بالانتشار منذ ذلك الحين و لاقى اهتماماً متزايداً في نواحٍ مختلفة. عقد المؤتمر لمعالجة مايعرف "أزمة البرمجيات" والتي ظهرت بسبب استخدام الوسائل التقليدية في بناء البرامجيات مما ادى الى ظهور برمجيات تحتاج الى وقت كبير لتطويرها, وكلفة مالية عالية أكثر مما هو مخمن لها وكفاءة ضعيفة في إنجاز الوظائف المطلوبة.

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

البرمجية(Software) شيء غير ملموس إلى حد ما بالمقارنة مع المنتجات الأخرى وهي سلسلة من آلاف أو ملايين الأوامر التي تطلب من الحاسوب إجراء عمليات معينة مثل عرض المعلومات أو إجراء الحسابات أو تخزين البيانات ...

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

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

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

مراحل بناء النظام البرمجي

في هندسة البرمجيات إن بناء النظام البرمجي ليس مجرد كتابة شيفرة (code) وإنما هي عملية إنتاجية لها عدة مراحل أساسية وضرورية للحصول على المنتج وهو البرنامج بأقل كلفة ممكنة وأفضل أداء, يطلق على هذه المراحل اسم دورة حياة النظام البرمجي Software Lifecycle قد يبدو بعضها ليس له علاقة بالبرمجة. وهناك عديد التصورات و النماذج في هندسة البرمجيات تصف عملية إنتاج برنامج و الخطوات اللازمة لذلك. من هذه الخطوات:

كتابة كراس الشروط الخارجي و الداخلي

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

التحليل

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

التصميم

يتم تقسيم البرمجية الى كتل وتعريف العلاقات بين هذه الكتل ثم التفصيل في هذه الكتل و وضع الخوارزميات الملائمة لكل كتلة, في نهاية هذه العملية تكون البرمجية جاهزة لعملية الترميز, كما يتم اختيار لغة أو لغات البرمجة الملائمة لهذا البرنامج.

الترميز

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

الاختبار و التكاملية

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

التوثيق

وهي مرحلة هامة من مراحل بناء النظام البرمجي حيث يتم توثيق البناء الداخلي للبرنامج وذلك بغرض الصيانة والتطوير.

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

وبدون التوثيق قد يصل مصنع البرمجية إلى مرحلة لا يعود بعدها قادراً على متابعة صيانتها وتطويرها مما يزيد الكلفة المادية والزمنية الخاصة بهذه البرمجية إلى حدود غير متوقعة، أو بمعنى آخر الفشل في بناء برمجية ذات جودة عالية ودورة حياة طويلة.

الصيانة و التطوير

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




الفرق بين البرمجة و هندسة البرمجيات

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












ماذا نعني بهندسة البرمجيات؟

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

من يشارك بها؟

ما هي مكونات النظم البرمجية؟

وكيف يتم بنائها؟



مقدمة:


لم يعد خافيا على أي منا أهمية البرمجيات Software في حياتنا اليومية سواء في البيت أو المصنع أو المستشفى أو ... الخ، فنحن نتعامل يوميا مع العديد من الأجهزة والمعدات التي تعتمد في عملها على البرمجيات ومن المهم لنا أن تعمل هذه الأجهزة وبرامجها بالشكل والكفاءة التي نتوقعها منها. لذا فإن هندسة البرمجيات أصبحت اليوم أكثر أهمية من أي وقت مضى.

المرجع :

1- Shari Pfleeger, "Software Engineering - Theory and Practice", 2nd Edition



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


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

بينما المهندس الكيميائي يستخدم النتائج التي توصل إليها الكميائي لحل المشاكل التي يطلب منه إيجاد حل لها.

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

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



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


شكل (1)



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



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

أي أن، هندسة البرمجيات تعنى بتصميم وتطوير برامج ذات جودة عالية.

من يشارك في هذه العملية؟
المشاركون في عملية صناعة البرنامج، عادة ما يندرجون تحت ثلاث مجموعات:

الزبون Customer: وهو الشركة (أو الشخص) الممولة لمشر وع تطوير البرنامج المطلوب

المستخدم User: الشخص (أو مجموعة الاشخاص ) الذي سوف يقوم فعلا باستعمال البرنامج، والتعامل معه مباشرة.

المطور Developer: وهو الشركة (أو الشخص) الذي سوف يقوم بتطوير البرنامج لصالح الزبون.

الشكل التالي يظهر العلاقة بين الفئات الثلاثة السابقة


شكل (2)

مكونات النظام


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

أي نظام هو عبارة عن مجموعة من الكائنات objects والنشاطات activities بالإضافة إلى وصف للعلاقات التي تربط تلك الكائنات والنشاطات معا. مع تعريف قائمة المدخلات المطلوبة والخطوات المتبعة والمخرجات الناتجة لكل نشاط.

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

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

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

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

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


كيف نبي نظام؟

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

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

- 3 بعد موافقة العميل على التصميم يتم العمل على وضع التصاميم التفصيلية لأجزاء المشروع


- 4 كتابة البرنامج
5. اختباره، وإعادة مراجعة المتطلبات التي وضعها العميل للتأكد من تحققها في البرنامج.
- 6 تسليم النظام إلى العميل.
7 - بعد تسلم العميل للنظام قد تظهر بعض المشاكل أو الاخطاء التي لم تظهر خلال عملية الاختبار، والتي تجب على المطور اصلاحها فيما يعرف بصيانة النظام.

_________________________________________









دورة حياة البرنامج أو المشروع في هندسة البرمجيات(1)

من البديهي أن مراحل تطوير أي مشروع بما في ذلك تطوير البرامج لابد إن تتبع إستراتيجية معينة يدار بها المشروع حتى نهايته وهذه الإستراتيجية أو دورة حياة المشروع هي ما نسميه في هندسة البرمجيات ب “. project lifecycle ”
ويوجد عدة نماذج شائعة الاستخدام كدورة حياة لأي مشروع وهي كالأتي:

Waterfall model
Spiral model
Extreme programming model
Iterative Approach

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

أولاً:Waterfall model

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






















شكل رقم (3)

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

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

لكن هذا النموذج يتميز بأنه سهل الإدارة وانه صالح للتطوير البرامج الصغيرة ذات المتطلبات الثابته والواضحه.

ثانياً:Spiral model

أن الفكرة الرئيسية خلف هذا النموذج هي فكرة الدورات.حيث يتكون هذا النموذج من مجموعة من الدورات فكل دورة من هذه الدورات تغطي مجموعة من مراحل تطوير البرنامج.ويتم اختيار عنلصر كل دورة على حسب الاهمية فمثلاً البدء بأهم المتطلبات ثم إعداد المجسمات لهذه المتطلبات لتأكد من صحتها ثم ينتقل فريق تطوير البرنامج الى مرحلة التصميم ثم المراحل التي تليها حتى الانتهاء من هذا الجزء.في الدورة التالية يقوم فريق تطوير البرنامج بتحديد العناصر لهذه الدورة وإنهاءها على أن يتم ربطها بجميع المنتجات السابقة.وتستمر هذه الدورات الى أن ينهي فريق تطوير البرنامج إنتاجه للبرنامج.


















شكل رقم (4)

وهنالك عدة مزايا لهذا النموذج ومنها:
-أن المتطلبات الأساسية التي عرفت في الدورات الأولى سوف تختبر جيداً في كل دورة.
-أن هذا النموذج يوافق طبيعة العمل وخاصة في مرحلة جمع المتطلبات لأنه يبدأ مع الأهم والأكثر عمومية ثم ينتقل الى الكثر تفصيلاً.
-أنه يقبل التغيير والتعديل وذلك لأنه كما ذكرنا سابقاً انه يعطي فرصة اكبر لفهم التفاصيل وان أي تغيير يمكن أن يضاف في الدورات القادمة.
من الواضح أن هذا النموذج صعب الإدارة وخاصةً اذا اخطاء فريق تطوير البرنامج في اختيار عناصر كل دورة.

مرحلة تصميم البرنامج Software Design

قد يظن البعض أن ما يقصد بالتصميم هو شكل البرنامج فقط. لكن هذا جزء بسيط منه.
فماذا يقصد بتصميم البرنامج (Software Design)؟

مرحلة التصميم لبرنامج هي عملية تحليلية لمتطلبات البرنامج لاختيار و بناء هيكل البرنامج و أجزاءه و كيفية ترابطها مع بعضها البعض، ينتج عن ذلك مجموعة من الملفات و النماذج و الرسومات البيانية التي يمكن منها برمجة وكتابة شيفرة البرنامج “بالكامل”.

و تنقسم مرحلة التصميم إلى مراحل عديدة من أهمها:
1 - تصميم البنية أو الهيكل Architectural Design
2 - تصميم نماذج البرنامج باستخدام اللغة الرسومية UML - Unified Modeling Lanuage
3 - تصميم واجهة الاستخدام GUI - Graphical User Interface

وهذا شرح موجز لكل مرحلة كما يلي:

هندسة برمجيات أم علوم حاسب أم هندسة حاسب؟

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

أولا: هندسة الحاسب (Computer Engineering)
تتعامل مع تصميم و تطوير و تشغيل أنظمة التشغيل للأجهزة الرقمية عامة. و الأجهزة الرقمية هي أي جهاز مكون معالج (processor) و ذاكرة (memory) و دائرة كهربائية (electric circuit) ، مثل الكمبيوتر المنزلي أو الجوال ، أو حتى أجهزة ثانوية مثل كرت الشاشة و الشبكة المرتبط بجهاز الكمبيوتر المنزلي.
الفرق الأساسي بين هندسة الحاسب وبين هندسة البرمجيات و علوم الحاسب أنها تركز على حل المشكلات ببرمجة الهاردوير (digital hardware).

ثانيا: علوم الحاسب (Computer Science)

تركز على فهم و تصميم و تطوير البرامج. كما تهتم بالبيانات (data) و بنيتها (data structures)وطرق تخزينها و نقلها و على طرق الحساب (algorithms) و طرق البرمجة و مفاهيم الشبكات و الاتصال و نقل المعلومات.

مجال علوم الحاسب غير متخصص و مركّز كهندسة البرمجيات أو هندسة الحساب فهي مجموعة من العلوم المتخصصة بالحاسب في مجالاتٍ عدة. لذلك هي تتيح مجال أوسع للطالب لبناء تطبيقات في مجالات مختلفة.

ثالثا: هندسة البرمجيات (Software Engineering)

تتعامل مع بناء و صيانة البرامج و أنظمتها. والبرامج هنا هي البرامج الكبيرة أو الضخمة كبرامج إدارة الشركات و المصانع أو أنظمة التشغيل. هندسة البرمجيات أكثر طبيقية و تخصصاً من علوم الحاسب فهي “هندسة” أي تتضمن جمع المعلومات و تحليلها و إيجاد الحلول و تصميمها بطرق علمية ثم البرمجة و إنتاج البرنامج ثم صيانته و تطويره أكثر و أكثر. مع الأخذ في الاعتبار في جميع المراحل السابقة بالتكلفة الإجمالية للبرنامج و ما يلحقه من تطويرات و تغييرات. كما تركز في أمن البرنامج (security) و قوة الاعتماد عليه (reliability). فهي تركز على عميلة بناء برامج ذات جودة عالية جدا (high quality programs) ، من بداية الفكرة إلى المنتج نهائي.

بالإضافة إلى الفرق السابق بين علوم الحاسب و هندسة البرمجيات:
قيل أن”العالِم يبني لكي يتعلم، أما المهندس فإنه يتعلم لكي يبني”.

أرجو أنني وفقت في إيضاح الفرق بين التخصصات الثلاث.

مراحل تطوير البرامج

مراحل تطوير البرامج في هندسة البرمجيات:

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

1- مرحلة جمع المتطلبات للبرنامج.
2- مرحلة التصميم.
3- مرحلة كتابة البرنامج.
4- مرحلة الاختبار.
5- المرحلة النهائية وهي مرحلة تسليم البرنامج وتنصيبه.

وسوف تتناول هذه المقالة مرحلة جمع المتطلبات للبرنامج



مرحلة جمع المتطلبات :

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

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

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

3- تقنية العصف الذهني : وتستخدم هذه التقنية على فريق العمل وأيضاً على المستخدمين.ويتم في هذه التقنية اقتراح أفكار حول البرنامج مع مراعاة انه يحق للجميع اقتراح أفكارهم حتى لو كانت غريبة.
4- استخدام المجسمات والتصاميم الاختبارية : وتستخدم هذه التقنية من قبل فريق العمل لاطلاع الزبون على ماوصل اليه العمل وأخذ آراءه وتستخدم كذلك لاخذ الموافقه من الزبون على أن هذه المتطلبات صحيحة. كما تساعد هذه التقنيه تساعد المستخدمين على التعبير عن متطلباتهم بشكل واضح وملموس. ويستمر عادةً أستخدام هذه التقنية في العديد من مراحل تطوير البرامج.


5- تقنية الاستبيانات : وتستخدم هذه الطريقه عندما يكون بعض الاشخاص المعنيين بأنتاج البرنامج في مكان آخر بإرسال الاستبيانات لهم أو التحدث معهم هاتفياً. وتستخدم هذه الطريقة للاستبيان عن أشياء محددة.

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

- الناتج عن مرحلة جمع المتطلبات:

ينتج عن هذه المرحلة مجموعة من الملفات المكتوبة التي تحتوي بعض الجداول والرسومات التي تحدد المتطلبات بشكل واضح ومباشر.ومن الشروط التي يجب توفرها في هذه الملفات :

1- أن تحتوي جميع المتطلبات وان تكون هذه المتطلبات مكتوبة بشكل واضح ومباشر ودقيق لا يحتمل أي تأويل آخر.

2- أن تكون هذه الملفات محدثه و تحتوي التاريخ لكل تحديث والكاتب لهذه المتطلبات ومصدر هذه المتطلبات.

3- يجب الأخذ بعين الاعتبار أن فريق جمع المتطلبات ليس هو فريق التصميم فلذلك يجب أن تكون المتطلبات مكتوبة بشكل واضح ومفهوم لكي تمكن فريق التصميم من الابتداء في عملية التصميم بالاعتماد على هذه الملفات بدون مساعدة فريق جمع المتطلبات ولذاك فأن أي خطأ أو غموض في هذه الملفات قد يؤدي الى مشاكل ومصاعب في مراحل متقدمة مما يؤدي الى خسارة ماديه غالباً وتأخير في تسليم البرنامج.




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

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

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

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

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

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

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

هندسة البرمجيات ؟
سميت هندسة لأنها تتّبع خطوات محددة لإنشاء برامج على مستوى عالي من الجودة وفق الوقت المحدد والميزانية المحددة.

ذكرت بأن هناك خطوات، ما هي ؟
الخطوات كالتالي:
- مرحلة جمع المتطلبات: وتعني معرفة ماذا يريد العميل بشكل واضح جداً ولا يقبل الالتباس.
- مرحلة التصميم: وهي مرحلة البدء بعمل الرسومات الخاصة بالبرنامج المقترح وهي مجموعة من الرسومات المتعارف عليها بمصطلح UML أو “لغة النماذج الموحدة” Unified Modeling Language بحيث يستطيع أي مبرمج فهمها والبدء بالبرمجة بناءً عليها مباشرة.
- مرحلة كتابة البرنامج: وهي مرحلة تحويل الرسومات الخاصة بالتصميم إلى شيفرة برمجية قابلة للتشغيل.
- مرحلة الاختبار: وهي الخطوة الأخيرة قبل تسليم البرنامج وتحتوي على عدة اختبارات منها ( مدى مطابقته لرغبة العميل - رضى العميل - سهولة الاستخدام - .. وغيرها )
- مرحلة الصيانة ( وهذه المرحلة ليست دائمة وتعتمد على العقد مع العميل ) : وتكون بتطبيق التعديلات الضرورية وفق رغبة العميل وتحسين أداء البرنامج وعمل صيانة دورية له

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

وظيفة مهندس البرمجيات تأتي في الربط ما بين المبرمج والعميل بحيث يقوم مهندس البرمجيات بعمل اللقاءات مع العميل ومحاولة معرفة احتياجاته ومشاكله الحالية وحلها بطريقة مناسبة عن طريق تصميم برامج توافق تطلعات العميل ووفق إمكانياته.

إذن، هل مهندس البرمجيات ليس بمبرمج ؟
على العكس, يجب أن يكون متعمق في البرمجة بشكل كبير جداً لكي يعطي أفضل تصميم للبرنامج الذي يحل مشكلة العميل , وهو ما نقوم به في جامعة البترول حيث ندرس مادتي برمجة إضافية ليست مطلوبة من قسم علوم الحاسب.

الفرق بين مهندس البرمجيات وطالب علوم الحاسوب

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

وجميع هذه الأمور نسبية ولكن ذكرتها وفق ملاحظاتي للزملاء واحتكاكي بهم.
مثال: يوم أمس كان هناك طالب علوم حاسب لديه مشروع مشترك مع زميلي طالب نظم المعلومات الإدارية ويريد تسليم المتطلبات وهو يفهم البرنامج ولكن لا يعرف كيف يعبر أو يوضحه ولكن خلال 10 دقائق وكمهندس برمجيات ساعدته في فهم كيفية نسخ ما في العقل على الورق بعد اجتماع ساعة بينهم قبل حضوري دون نتائج .

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

ذكر لي أحد الدكاترة بأن العالم العربي لم يعد بحاجة طلبة علوم حاسب ولكن بحاجة مهندسي برمجيات، لأن البرامج العربية الحالية غالباً تكون دون دراسة دقيقة وتحوي العديد من المشاكل ولا يوجد برنامج عربي لا يحوي مشاكل. الدكتور عمل سنوات طويلة في شركات برمجة عربية قبل أن يعود ليدرّس في الجامعة

أنالا أنصحك بشيء ولكن بالنسبة لي أرى أن هندسة البرمجيات من أكثر التخصصات متعة وتعطيك صورة من الأعلى للبرمجة والمعلومات وكيفية تسخيرها لما يفيد.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://haymah.mam9.com
 
هندسة البرمجيات
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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