مدیریت پروژه نرم افزاری
مدیریت پروژه شامل طرح ریزی، پایش و کنترل افراد، فرآیند و وقایعی است که در طی توسعه نرم افزار اتفاق می افتند. در یک تیم نرم افزاری، تمامی افراد نقش مدیریتی دارند اما حوزه فعالیتهای مدیریتی هر فرد براساس نقشش در پروژه متفاوت است. معمولا به علت اینکه نرم افزار پیچیده و ساخت آن مسئولیتی بلند مدت است نیاز به مدیریت دارد. مدیران باید بر چهار بخش مدیریتی که اصطلاحا به آنها چهار P گفته میشود تمرکز کنند : افراد، محصول، فرآیند، و پروژه.
طرح پروژه، مستندی است که این چهار P را بصورتی تعیین میکند تا استحصال محصول نرم افزاری ای مقرون به صرفه و با کیفیت را تضمین کند. تنها راهی که برای تضمین موثر بودن یک طرح پروژه وجود دارد این است که بررسی کنیم آیا محصولی با کیفیت بالا، به موقع و تحت بودجه مقرر ایجاد شده است یا خیر.
طیف مدیریت
بصورت خلاصه، در هر کدام از چهار بعد مدیریت پروژه؛ اعمال زیر انجام میگیرد:
► افراد : استخدام، انتخاب، مدیریت کارایی، آموزش، پاداش، توسعه شغلی، سازمان، طراحی کار، توسعه تیمی – فرهنگی.
► محصول : اهداف محصول، حوزه، راه حل های جایگزین، سبک سنگین کردن محدودیتها.
► فرآیند : فعالیتهای چارچوبی مملو از وظایف، نقاط مهم، محصولات کاری، نقاط تضمین کیفیت.
► پروژه : طرح ریزی، پایش، کنترل.
توضیح در ادامه مطلب
افراد
مدیران بر این عقیده اند که افراد، مهمترین بخش در پیشبرد اهداف هستند. استانداردی به نام PM – CMM وجود دارد که هدف از آن، افزایش آمادگی سازمانهای نرم افزاری برای برعهده گرفتن برنامه های پیچیده به وسیله کمک در جذب، پرورش، تقرب، استقرار و حفظ استعداد مورد نیاز جهت بهبود توانمندی توسعه نرم افزار است.
در کل افراد دخیل در یک پروزه نرم افزاری شامل مدیران ارشد، مدیران پروژه، نیروهای فنی، مشتریان و کاربران نهایی میشود که به این اشخاص ذی نفعان سیستم نیز میگویند. راهبر تیم یکی از نقش های مهم است که باید دارای مشخصات و توانمندیهای فوق باشد: انگیزه، سازماندهی، ایده هایی برای نوآوری، حل مساله، شخصیت مدیریتی، موفقیت، تاثیرگذاری و ساخت تیم.
محصول
محصول آن چیزی است که میخواهیم بسازیم. محصول در ابتدای پروژه باید مورد بازبینی قرار گیرد تا بتوان از آن تخمین های مورد نیاز را استخراج کرد. در حداقل حالت، حوزه پروژه باید تعیین گردد تا بتوان تخمین های فوق را به دست آورد.
حوزه پروژه (Scope) : اولین فعالیت مدیریتی پروژه نرم افزاری، تعیین حوزه نرم افزاری است. حوزه را میتوان با پاسخ به سوالات زیر تعریف کرد:
► زمینه : نرم افزار چگونه در سیستم بزرگتری قرار میگیرد؟
► اهداف اطلاعات ورودی – خروجی : چه داده های قابل مشاهده ای بعنوان ورودی برای نرم افزار نیاز است و چه داده های قابل مشاهده ای را به بعنوان خروجی برای مشتری تولید میکند؟
► عملیات و کارایی : چه عملیاتی و با چه میزانی کارایی نیازمندیم تا ورودی به خروجی تبدیل شود؟
تجزیه مساله : فعالیتی است که در هسته مهندسی تحویل نیازمندی ها قرار میگیرد. گاهی این فعالیت با نام های بخش بندی یا تفصیل مساله نیز خوانده میشود. در حین فعالیت بازه بندی پروژه تلاشی برای تجزیه کامل مساله صورت نمیگیرد اما تجزیه در دو بخش اساسی انجام میشود:
► عملیاتی که باید تحویل شود.
► فرآیندی که برای تحویل نرم افزار استفاده میشود. برای تقسیم بندی معمولا از روش تقسیم و غلبه استفاده میشود.
فرآیند
فعالیت های چارچوبی که از خصیصه های یک فرآیند نرم افزاری هستند در هر پروژه نرم افزاری قابل اعمال هستند اما مساله این است که چه مدل فرآیندی را انتخاب کنیم که برای نرم افزاری که قرار است توسط تیم پروژه مهندسی شود مناسب باشد. وقتی مدل فرآیند انتخاب شد تیم براساس فعالیتهای چارچوبی فرآیند، یک طرح اولیه از پروژه ایجاد میکند و پس از آن تجزیه فرآیند شروع میشود.
پروژه
برای مدیریت موفق یک پروژه نرم افزاری، باید آنچه را که ممکن است دچار مشکل گردد به درستی درک کرد. راهکارهایی که میتوانند از ایجاد مشکل در یک پروژه نرم افزاری جلوگیری کنند عبارتنداز:
► درست شروع کردن : با تلاش زیاد در جهت فهم مساله و ایجاد اهداف و انتظارات واقع گرایانه برای تمام افراد دخیل در پروژه باید بتوان از مشکلات جلوگیری کرد.
► حفظ یکپارچگی و پیشرفت : پروژه نباید به عدم یکپارچگی منتهی شود. مدیر پروژه باید گردش پرسنل را به حداقل کاهش دهد. تیم باید در هر کاری به کیفیت تمرکز کند و مدیریت ارشد باید هر کاری را که ممکن است انجام دهد تا از سر راه تیم کنار برود.
► پیگیری پیشرفت : برای یک پروژه نرم افزاری پیشرفت رهگیری میشود بدین صوت که محصولات کاری که تولید و تایید میگردد مورد شمارش و ارزیابی قرار میگیرد.
► اتخاذ تصمیم هوشمندانه : هر موقع که نیاز شد از نرم افزارها یا قطعات نرم افزاری تجاری آماده استفاده گردد.
► انجام تحلیل کالبد شکافی : ایجاد مکانیزمی برای استخراج درس هایی که از یک پروژه میگیریم.