إدارة المشاريع البرمجية
إدارة المشاريع البرمجية (Software Project Management) هي مجموعة من الطرق والأساليب التي تخطط عملية
سريان المشاريع البرمجية، وتساهم هذه الأساليب في تخطيط المشاريع، وطريقة تنفيذها، والتحكم فيها من خلال
مدير المشروع (Project Manager)، وفي هذا المقال سوف نناقش أسباب الإحتياج لإدارة المشروعات في صناعة
البرمجيات، وأهداف إدارة المشاريع البرمجية، وعيوب هذا الأسلوب.
لماذا نحتاج إلى إدارة المشاريع البرمجية؟
كما نعلم جميعا أن البرنامج هو شيء غير مادي وغير ملموس، وصناعة البرمجيات بشكل عام هي من الأعمال الجديدة
في عالم إدارة الأعمال ويوجد قلة خبرة كبيرة في بناء المنتجات البرمجية، كما تتم صناعة البرمجيات لتحقيق مطالب
العملاء وتلبيتها بشكل صحيح، ومع قلة الخبرة في هذه الصناعة تزداد سرعة تغير الأدوات والتقنيات المستخدمة في
هذا المجال يوما تلو الآخر، لهذا قد لا تناسب الأدوات والتقنيات المستخدمة في بناء منتج ما في تنفيذ منتج آخر يقوم
على استخدام تقنيات وأدوات أخرى، لذا وجود هذه القيود التجارية تزيد من خطورة صناعة تطوير البرمجيات وبالتالي لابد
من وجود طريقة لإدارة مشاريع البرمجيات بكفاءة، لتنفيذ أفضل منتج يمكن تسليمه للعميل، وأيضا الحفاظ على ميزانية العميل واستخدام أدوات وخبرات تناسب الميزانية بدون الزيادة فيها، وتسليم المنتج في الوقت المحدد، وبالتالي وجود
إدارة المشاريع مهم في صناعة البرمجيات بسبب ربط متطلبات العملاء مع محدودية الميزانية والوقت وتقديم حلول
مناسبة في هذا الجزء.
أنواع إدارة المشاريع البرمجية Types of Software Project Management
إدارة النزاعات Conflict Management
إدارة النزاعات هي عملية تقييد الصفات والسمات السلبية التي تنشأ نتيجة النقاشات الحادة وتبديل هذه السمات
السلبية بأخرى إيجابية تساهم في الاستفادة من النقاش دونا عن النزاع فقط، ومن أهداف إدارة النزاعات تحسين
جودة التعلم ونتائج الفرق داخل الشركة، مثل: الأداء والكفاءة، وبالفعل تساهم إدارة النزاعات في زيادة نتائج الفرق
وتغيير ملحوظ في مستوى النقاشات.
إدارة المخاطر Risk Management
إدارة المخاطر جزء في إدارة المشاريع البرمجية، وهي عملية تحليل وتحديد لجميع المخاطر التي تهدد بناء المنتج، ويتبع عملية التحليل تنفيذ الحلول
والتي تتضمن استخدام الموارد بشكل اقتصادي ومتزامن يساهم في تقليل المخاطر، والسيطرة على التأثيرات
المحتملة لهذه المخاطر على جودة المنتج واستخدام أكبر قدر من الفرص المتاحة لتخطي الأزمة.
إدارة المتطلبات Requirements Management
تتضمن إدارة المتطلبات التحليل الجيد لمتطلبات العميل في عملية جمع المتطلبات (Requirements Gathering)، ثم
إعطاء الأولوية للمتطلبات الأكثر أهمية بناء على بعض المعايير للتنفيذ الفوري، ثم إدارة معايير الجودة والتوثيق لتلك
المتطلبات لجمعها في مكان واحد بشكل منظم، ثم تستمر العملية بالإشراف على التغييرات المطلوبة والتواصل المستمر
مع أصحاب المصلحة (Stakeholders) المحتملين في هذه العملية، وهذه العملية مستمرة ومتكررة طوال مرحلة إدارة المشاريع البرمجية.
إدارة التغيير Change Management
إدارة التغيير هو نهج منظم من إدارة المشاريع البرمجية والتي نتعامل فيه مع تغير أو تحول أهداف الشركة، أو تغير
العمليات المتبعة داخل المؤسسة، أو التقنيات المستخدمة في بناء المنتجات، والهدف من هذه العملية هو تنفيذ
مجموعة من الإستراتيجيات لإحداث تغيير حقيقي وجوهري في هذه الأمور، وأيضا السيطرة على التغيير، كما تساهم
هذه المرحلة، وفي مساعدة الأشخاص داخل الشركة على التأقلم مع التغييرات الجديدة.
إدارة إعدادات البرنامج Software Configuration Management
تتابع هذه العملية جميع التغييرات والعمليات التي تحدث في البرنامج المراد تسليمه للعميل، وهي جزء من عمليات
إدارة المشاريع، وجزء أساسي من مجال متعدد التخصصات وهو إدارة الإعدادات (Configuration Management)، والذي يتضمن بعض التخصصات الأخرى، مثل: التحكم في التداول (Revision Control)، وتدشين الخطوط الأساسية (Inauguration of Baselines).
إدارة الإطلاق Release Management
من أهم العمليات في إدارة المشاريع وتعمل على التخطيط لإطلاق أول نسخة من المنتج المراد إطلاقه، وتحديد موعد الانطلاق، وهي من العمليات التكرارية المستمرة في كل إطلاق جديد، ويتضمن كل إطلاق جديد بعض المميزات المضافة وبعض المشاكل المحلولة، وتتأكد إدارة الإطلاق أن المؤسسة تسلم العملاء مجموعة من المميزات والخدمات الجديدة التي تساهم في رفع كفاءة الخدمات الحالية والتكامل معها بدون التأثير عليها.
أوجه تركيز إدارة المشاريع البرمجية
التخطيط Planning
في بداية إدارة المشاريع البرمجية يقوم مدير المشروع بوضع مخطط كامل للمشروع المراد العمل عليه، ويوضح هذا المخطط جميع التفاصيل والتي تتضمن: هدف المشروع، والموارد المستخدمة، والوقت المحدد، والتقنيات المطلوبة، والاستراتيجيات، وطريقة التواصل، وطرق اختبار المنتج، وخطوات الصيانة المتبعة، وتعمل إدارة المشاريع البرمجية في معالجة هذا الجزء بشكل مفصل.
القيادة Leading
من أهم مسؤوليات مدير مشروع إدارة المشاريع البرمجية هو جمع فرق تطوير في الشركة وإدارة كل من المهندسين والمطورين، والمصممين، وعلماء البيانات، ومهندسين البيانات، لذا لابد أن يكون مدير مشروع البرمجيات لديه مهارات التواصل الفعال، ومهارات التواصل الشخصي، ومهارات القيادة بالطبع، والاهتمام بمبادئ إدارة المشاريع البرمجية يساهم في فعالية القيام بهذه المسؤوليات.
التنفيذ Execution
لها دور كبير في هذه الحالة، حيث يستطيع المسؤول عن المشروع في حالة المعرفة الجيدة بمنهجيات النموذج الرشيق (Agile Model)، فسوف يقدر على التأكد من تمام كل مرحلة بنجاح، مع قياس أداء وتقدم كل مرحلة، والمتابعة المستمرة لقياس نتائج الفرق وكيف تعمل الفرق وتتعاون مع بعضها، ثم تقديم تقارير توضح هذه المقاييس بشكل مفصل.
إدارة الوقت Time Management
من مهام مدير مشروع البرمجيات الالتزام بالجدول الزمني المحدد لتسليم المشروع، وهذا قد يكون صعبا نوعا ما في
حالة إدارة المشاريع، لأن التغيير في عقد الاتفاق الخاص بالمشروع هو أمر لابد منه، لضمان تقدم المشروع
في حالة التغييرات المفاجئة أو العقبات الطارئة، لذا مديري المشاريع البرمجية لابد أن يكونوا على دراية بإدارة المخاطر والأزمات واتخاذ التدابير اللازمة لها.
الميزانية Budget
كطبيعة عمل المديرين في جميع الأماكن، يقوم مديري مشاريع البرمجيات بتقديم ميزانية المشروع والالتزام بها قدر
الإمكان، وتنظيم الإنفاق، وإعادة تخصيص هذه الأموال في حالة الاحتياج، كما تساعد إدارة المشاريع البرمجية في تعليم
إدارة أموال المشاريع لتجنب الوقوع في أزمة مالية خلال المشروع.
الصيانة Maintenance
تساهم في تنفيذ الاختبارات المستمرة على المنتج، للبحث عن المشاكل والأعطال مبكرا،
وتصميم المنتج النهائي بشكل يناسب متطلبات العميل وبقاء المشروع على المسار الصحيح كما خطط له في
مرحلة التخطيط، ويتأكد مدير المشروع بنفسه من الاختبارات وتحليل المنتج وتعديله حسب الحاجة.
سلبيات إدارة المشاريع البرمجية
زيادة التكلفة High Cost
تتطلب مشاريع البرمجيات العديد من الأدوات، مثل أدوات إدارة المشاريع، والبرامج والخدمات الأخرى، لذا لابد من التفكير
في تكلفة هذه الأدوات، وأسباب الحاجة إليها، وعدد المستخدمين من الفرق المختلفة، كما قد تحتاج إلى تدريب
بعض الأشخاص الغير مؤهلين لاستخدام هذه الأدوات، والذي يتطلب المزيد من الوقت والمال.
زيادة التعقيد Complexity Increased
وهي عملية متعددة المراحل ومعقدة جدا، وللأسف نرى الكثير من مديري مشاريع البرمجيات
الذي يعقدون الأمور ويبالغون في بعض الأمور، وهذا يسبب تشتت وإرتباك بين فرق التطوير والتصميم للمشروع، مما يؤثر على النتائج بالسلب وتأخير التسليم.
إدارة المشاريع البرمجية هي أمر لابد منه في صناعة البرمجيات، ولكن تستخدم في حالة لديك أشخاص قادرين على تولي هذه المهمة الصعبة وتنفيذ أفضل منتج يمكن تقديمه للعميل ويساهم في نجاح المشروع.