السبت، أكتوبر 02، 2010

هندسة البرمجيات أو الSoftware Engineering

 بالنسبة لهندسة البرمجيات، فالاعتقاد الشائع أن هندسة البرمجيات أو الSoftware Engineering عبارة عن كتابة برامج الكمبيوتر أو البرمجة. بينما البرمجة هي إحدى مكونات هندسة البرمجيات.
و هذه المكونات هي:
- Project Managment: إدارة مشاريع.
- User Documentation: إعداد ملفات المستخدمين.
- Software Design: تصميم البرنامج.
- Software Specification: تحديد متطلبات البرنامج.
- User Interface Design: تصميم واجهة المستخدم.
- Hardware Consideration: تحديد المستلزمات من المكونات الصلبة التي تتناسب مع عمل البرنامج.
- Programing: كتابة البرنامج و هو عبارة عن كود يتكون من عدد من الأوامر.
- Testing: مرحلة اختبار البرنامج و التأكد من صحة تشغيله و خلوه من الأخطاء.
إن هندسة البرمجيات تقارب إلى حد كبير هندسة إدارة النظم، حيث تتم العمليات في هندسة البرمجيات على عدد من الخطوات و المراحل:
1- المرحلة الأولى تبدأ بمكالمة هاتفية:
حيث يتصل العميل و يبدأ بعرض مشكلته، فمثلا يحتاج نظام حماية لشركته، أو نظام صرف آلي لبنك، أو ممكن أن يكون صاحب مكتبة أو متجر و يريد تغير نظام البيع و الشراء أو العرض ليتم بشكل آلي.
2-Requirments Analysis:
في هذه المرحلة يتقابل العميل مع المهندس لمعرفة تفاصيل أكثر عن البرنامج الذي يريده و الشروط التي يجب توافرها، في هذه الحالة يمكن لمهندس البرمجيات معرفة كل تلك التفاصيل من خلال طرح مجموعة من الأسئلة المتخصصة لمعرفة كافة احتياجات المشروع.
3-Specifications:
في هذه المرحلة يعقد اجتماع مع فريق العمل، حيث يتم شرح المشكلة من جميع جوانبها لفهمها فهما تاما، و فتح مجال النقاش و تحديد الطريقة المثلى لإعداده بحيث تتناسب مع الميزانية المحددة و فترة الإعداد. كذلك يتم في هذه المرحلة كتابة العقد بين شركة البرمجيات و العميل.
4-Design:
بعد توزيع المهام على المختصين من فريق العمل، يقوم المصممون في هذه المرحلة بتحديد و رسم مخطط التصميم الذي يتناسب مع المتطلبات المتفق عليها سابقا. فهناك العديد من القوالب و النماذج يتم التصميم على أساسها، فتصنف بعضها على حسب تحليل البيانات و عرضها، و البعض على حسب التسلسل الزمني أو الفترة الزمنية المحددة، وأخرى على حسب بيئة التصميم و غيرها.
5-Implementation (أو التطبيق):
حيث يتم ترجمة التصميم في المرحلة السابقة إلى عمل فعال و منتج باستخدام إحدى لغات البرمجة المناسبة لبرمجة النظام على أيدي مبرمجين، و اختباره قبل التسليم.