هندسة البرمجيات (بالإنجليزية: Software engineering) المجال الذي يهتم بتطوير، وتصميم البرمجيات، عالية الجودة آخذة بعين الاعتبار تخصيصات المستخدم، ومتطلباته على جميع المستويات. تهتم هندسة البرمجيات بتكوين البرنامج منذ مراحله الأولى أثناء تحليل المشكلة، ومن ثم التصميم، وكتابة البرنامج حتى القيام بتجريبه، واختباره، وتنصيبه على الأجهزة، والقيام بعملية صيانته. وهي حديثاً يمكن أن تنقسم لقسمين الحوسبة اللينة والحوسبة الصلبة.
مراحل بناء النظام البرمجي
في
هندسة البرمجيات، بناء النظام البرمجي ليس مجرد كتابة شفرة، وإنما هي
عملية إنتاجية لها عدة مراحل أساسية وضرورية للحصول على المنتج، وهو
البرنامج بأقل كلفة ممكنة وأفضل أداء محتمل. يطلق على هذه المراحل اسم دورة حياة النظام البرمجي(Software Lifecycle) التي قد يبدو بعضها ليس له علاقة بالبرمجة.
وهناك الكثير من التصورات والنماذج في هندسة البرمجيات تصف عملية إنتاج
برنامج والخطوات اللازمة لذلك. كما أن هذه الدورة خاضعة للتطوير دائما، حيث
بالإضافة للدورات الكلاسيكية، ظهر مفهوم المنظومة المرنة (Agile Process)
والتي تتخلي عن النموذج الثابت للمنظومة الكلاسيكية في سبيل المزيد من حرية
الحركة للمشروع.
و فيما يلي عرض لإحدى أشهر دورات حياة النظام البرمجي الكلاسيكية وهي دورة الشلال (Waterfall Model):
كتابة وثيقة الشروط الخارجية والداخلية
وثيقة
الشروط الخارجية يتم أخذها من الزبون. تحتوي الوثيقة على متطلبات الزبون
في ما يخص مواصفات البرنامج الذي يجب إنشاؤه. ثم يتم تحليل المتطلبات بشكل
أولي ثم كتابة وثيقة شروط داخلية تحتوي على تفسير المواصفات التي يريدها
الزبون بدقة أكبر، وبطريقة تتماشى مع مصطلحات المبرمجين. قد تكون طلبات
الزبون متعارضة وفي هذه الحالة يتم الرجوع إليه لتنقيح وثيقة الشروط. ثم
يتم تحديد عدد الساعات اللازمة للعمل وحساب التكلفة.
التحليلٍ
في
هذه العملية تجمع المعلومات بدقة ثم تحدد المتطلبات والمهام التي سيقوم
بها البرنامج، وتوصف هذه المهام بدقة تامة، كما تدرس الجدوى المرجوة من
البرنامج، فالمستخدم مثلاً يضع تصوراً للبرنامج ليقوم بعمليات معينة، ومهمة
مهندس البرمجيات في هذه المرحلة هي استخلاص هذه الأفكار وتحديدها؛ لذلك
فهي تتطلب مهارة عالية في التعامل مع الزبائن، وقدرة على التحليل الصحيح.
ينتج في نهاية هذه المرحلة وثيقة تدعى جدول الشروط والمواصفات دينامكاميد
التصميم
تصميم
البرمجيات هي مرحلة من مراحل دورة حياة النظام، تساعدنا في تحديد كيفية حل
المشكلة "كيف سنحل المشكلة؟"، والتخطيط للتوصل إلى حلول للمشكلة، والدخول
في تفاصيل النظام. التصميم يحدد هيكلية وبنية النظام من خلال تجزأة النظام
إلى مجموعة من الأنظمة الفرعية Sub-Systems مما يساهم في السيطرة على
التعقيد في النظام System Complexity ، وتحديد الواجهات ونوافذ المستخدم
User Interfaces ،والمكونات Components ، والوحدات Modules والبيانات
للنظام كي يحقق النظام متطلبات الزبون. ونقوم بمرحلة التصميم باستخدام
المتطلبات التي حددناها في مرحلة التحليل. مرحلة التصميم يتم خلالها إيجاد
التصميم الأمثل لنظام المعلومات الحاسوبي الذي يلبي احتياجات المستخدمين
التي تم توصيفها في مرحلة التحليل. إن عملية التصميم في جوهرها هي عملية حل
مشكلات، أي يجري البحث خلالها عن أفضل الحلول التصميمية لبناء نظم ذات
أهداف محددة.
الترميز(كتابة الكود)
تحول الخوارزميات والمخططات Diagrams التي تم انتاجها في مرحلة التصميم إلى إحدى اللغات البرمجية،
وذلك لانتاج برنامج او نظام قابل للاستخدام من قبل الزبون, يلبي احتياجتة
الموضحة في وثيقة الشروط. خلال هذه المرحلة تتم بعض الاختبارات test على
بعض اجزاء النظام للتاكد من عمله بطريقة صحيحة, علماً ان مرحلة الاختبار
Testing هي مرحلة منفصلة يتم العمل عليها لاحقاً.
الاختبار والتكاملية
تجمع
الكتل مع بعضها ويختبر النظام للتأكد من موافقته لجدول الشروط والمواصفات،
وخاصة إذا كانت الكتل قد كتبت من قبل عدة أعضاء في الفريق.
التوثيق
وهي
مرحلة هامة من مراحل بناء النظام البرمجي حيث يتم توثيق البناء الداخلي
للبرنامج؛ وذلك بغرض الصيانة والتطوير. يفضل عادة أن يترافق التوثيق مع كل
مرحلة من المراحل السابقة واللاحقة، وأن يكون هناك فريق خاص يهتم بعملية
التوثيق لجميع المشاكل والحلول التي يمكن أن تظهر أثناء بناء البرمجية.
وبدون التوثيق قد يصل مصنع البرمجية إلى مرحلة لا يعود بعدها قادراً على
متابعة صيانتها وتطويرها؛ مما يزيد الكلفة المادية والزمنية الخاصة بهذه
البرمجية إلى حدود غير متوقعة، أو بمعنى آخر الفشل في بناء برمجية ذات جودة
عالية ودورة حياة طويلة. وهناك أكثر من طريقة للتوثيق -توثيق المبرمج وهو
ممكن أن يكون بأضافة تعليقات داخل الشفرة البرمجية. -توثيق المحلل بكتابة
مستندات شرح لدورة البرنامج المستندية وخلافة. -توثيق مختبر النظام وفيها
يتم تسجيل نقاط الخلل في البرنامج.
الصيانة والتطوير
إن
هذه المرحلة هي المرحلة الأطول في حياة النظام البرمجي لبقاء النظام
قادراً على مواكبة التطورات والمعدات الحديثة، جزء من هذه المرحلة يكون في
تصحيح الأخطاء، والجزء الآخر يكون في التطوير وإضافة تقنيات جديدة. إن هذه
الخطوات كما نلاحظ مشابهة لخطوات الإنتاج في الهندسيات الأخرى.
شرح أهم مصطلحات التخصص
Compononet تعني مُكون من مُكونات النظام مثلاً الواجِهة أو قاعدة البيانات وغيرها
Interface
وهي عبارة عن ما يُشبه الصف ولكنها تحتوي على عمليات فقط ويجب على كُل من
يرث منها أن يقوم بإعادة كتابة جميع العمليات الموجودة فيها حُكماً ولا
يُمكن أن تحتوي على "مُعطيات أعضاء" Data member.
Monolithic
Application: وهي عبارة عن تطبيق يقوم بِكل ما عليه دون الإعتماد على
تطبيقات أخرى آي يكون كفيلاً ليس بتطبيق مُهمة مُعينة فحسب ولكن أن يقوم
بِكُل خطوة لإتمام هذه المُهمة بمعنى أخر القيام بالمهام التي لا يُمكن
تجزئتها .
بصراحة حاولت هذه المعلومات احضرتها من خلال البحث على
موقع ويكيبيديا ولكني سأحاول أن أقوم بمعرفتها فلرُبما تكون هذه المعلومات
مُفيدة جداً في تصميم البرمجيات وغيابها يُزيد الكثير من الوقت في بناء
المشاريع البرمجية
هذا بالنسبة للمُشاركة الأولى .
بالنسبة لمُشاركة الأخ السينتوري
لكي تكون على صلة بالبرمجة عليك أن تكون مُبرمجاً
هندسة
البرمجيات : تستخدم في عدة حالات عادتاً ما تكون مُتلازمة وهية : المشاريع
الكبيرة أو المُعقدة أو عدد كبير من العاملين على البرمجية
مُهندس البرمجيات قد يكون : مُديراً لمشروع برمجي ، جامع مُتطلبات ، مُحلل للمُتطلبات ، مُصمم برمجيات (البرمجة ليست ضمن التصميم )
وخيار
أن يكون مُهندس البرمجيات مُبرمجا ليس خياراً مطروحاً ولكن على مُهندس
البرمجيات أن يكون مُتقناً لِلغة ما لكي يستطيع أن يضع مُخططات صفوف وأن
يحلل مُتطلبات المُستخدم بدقة وبقوة عالية .
علوم الحاسب : ليس لدي معلومات كثيرة عنها ولكنها لنقل أن مُهندس البرمجيات يستخدم الحاسب و في علوم الحاسب تطور الحاسب نفسه
نصيحة : في حال كُنت تُريد عمل برمجيات قوية ورائعة عليك حسب ما أرى ما يلي :
1- تعلم البرمجة الغرضية التوجه .
2- تعلم مبادئ الـUML.
3- إتقان لُغة برمجة .
أعتقد في حال أنك أتقنت الثلاثة السابقة ستكون مُبرمجاً فذاً إن شاء الله
طبعأً يبقى هذا الكلامُ رأياً
أضف تعليق:
0 comments: