السلام عليكم،

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

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

مدخل ..

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

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

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

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

ذكرت بأن هناك خطوات، ما هي ؟

الخطوات كالتالي:

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

  • مرحلة التصميم: وهي مرحلة البدء بعمل الرسومات الخاصة بالبرنامج المقترح وهي مجموعة من الرسومات المتعارف عليها بمصطلح UML أو “لغة النماذج الموحدة” Unified Modeling Language بحيث يستطيع أي مبرمج فهمها والبدء بالبرمجة بناءً عليها مباشرة.

  • مرحلة كتابة البرنامج: وهي مرحلة تحويل الرسومات الخاصة بالتصميم إلى شيفرة برمجية قابلة للتشغيل.

  • مرحلة الاختبار: وهي الخطوة الأخيرة قبل تسليم البرنامج وتحتوي على عدة اختبارات منها ( مدى مطابقته لرغبة العميل - رضى العميل - سهولة الاستخدام - .. وغيرها )

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

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

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

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

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

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

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

وجميع هذه الأمور نسبية ولكن ذكرتها وفق ملاحظاتي للزملاء واحتكاكي بهم.

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

انا أريد التخصص فبماذا تنصحني ؟

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

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

  • انتهى الحوار

في أمان الله


هذا الموضوع كتبه [ وليد ] بتاريخ الجمعة, مارس 24th, 2006 في الساعة 1:16 pm في قسم عام.

http://www.swe4arab.net: