مدیریت پروژه نرمافزاری
مدیریت پروژه نرمافزاری (به انگلیسی: Software Project Management) هنر و دانش برنامهریزی و رهبری پروژههای نرمافزاری است.[1] مدیریت پروژه نرمافزاری شاخهای از مدیریت پروژه است که با دانش تولید نرمافزار درهم آمیختهاست و در حقیقت زیرمجموعه مهندسی نرمافزار به شمار میرود.
تاریخچه
تاریخچه مدیریت پروژههای نرمافزاری با تاریخچه تولید نرمافزار در هم آمیختهاست. نرمافزارها در آغاز برای مقاصد خاص یا راهاندازی سختافزارها نوشته میشد. اما با معرفی مفهوم برنامهنویسی شیءگرا در سال ۱۹۶۰ (میلادی) برنامهنویسی با این رویکرد مورد استقبال شرکتهای توسعه نرمافزار قرار گرفت و در دهههای ۱۹۷۰ و ۱۹۸۰ روند تولید و توسعه نرمافزار رشد سریعی را تجربه کرد.
در این زمان، شرکتهای تولیدکننده نرمافزار تلاش میکردند تا با استفاده از روشهای کلاسیک مدیریتی، پروژههای نرمافزاری را رهبری کنند. اما به زودی و با کند شدن سرعت تولید نرمافزار و بروز مشکلات جدی در آزمایش و نیز تغییرات بهوجودآمده در نیازمندیهای مشتریان مشخص شد که روشهای سنتی مدیریت پروژه برای رهبری تیمهای نرمافزاری مناسب نیست. تحلیل و بررسی پروژههای نرمافزاری شکست خورده، عوامل زیر را به عنوان مهمترین دلایل شکست آنها مشخص کرد:[2][3][4]
- عدم بیان روشن اهداف پروژه
- برآورد نادرست از منابع مورد نیاز پروژه
- تعریف نادرست نیازمندیها
- گزارشدهی ضعیف روند پروژه
- استفاده از فناوریهای نابالغ
- عدم توانایی در کنترل پیچیدگیهای پروژه
- روشهای توسعه غیر استاندارد
- مدیریت پروژه ضعیف
- سیاستهای ذینفعان
- فشارهای مربوط به جنبههای تجاری پروژه
سه مورد نخست در فهرست بالا نشان میدهد که عدم بیان روشن و بدون ابهام نیازمندیهای نرمافزاری توسط مشتریان منجر به اشتباه در هدفگذاری و تخصیص منابع مورد نیاز پروژه میشود.[5]
برنامهریزی، پایش و کنترل پروژه
هدف از برنامهریزی پروژه نرمافزاری، مشخص نمودن محدوده (Scope) پروژه، تخمین حجم کاری مورد نیاز، تعيين گامهاي لازم جهت رسيدن به اهداف و در نتیجه تدوین یک برنامه زمانبندی جهت اجرای پروژه است.
برنامهریزی پروژه با شناسایی نیازمندیهای موضوع پروژه، آغاز میشود. پس از آن، طرح اجرایی پروژه برای تشریح وظایف سطوح مدیریت عالی و میانی تدوین میشود. نظارت بر پروژه و کنترل آن بر اساس معیارهای مهندسی نرمافزار تضمین میکند که روند اجرای وظایف در تیمها و تخصیص منابع به آنها بر اساس طرح اجرایی پروژه انجام پذیرد و مدیر پروژه در صورت مشاهده عدم تطابق در روند اجرا، اقدامات اصلاحی را به عمل آورد.
Issue
در مهندسی نرمافزار، Issue (مشکل) بخشی از کار است که در صورت حل (مانند رفع یک اشکال نرمافزاری (باگ)، مستندسازی یک کامپوننت یا تحلیل نیازمندی تازه)، عملکرد سامانه نرمافزاری بهبود مییاد. issueها معمولاً بر پایه پارامتر میزان شدت یا میزان اهمیت دستهبندی میشوند. این دستهبندی معمولاً به صورت زیر است:
- بحرانی: مشکلات یا کارهای تعریفشده در این دسته مواردی هستند که در شیوه عملکرد سامانه تأثیر حیاتی دارند و عدم پاسخگویی به آنها ممکن است باعث به خطر افتادن سامانه شود.
- میانی: مشکلات و موارد این دسته در رده دوم اهمیت در زمانبندی اجرا و پاسخگویی قرار میگیرند.
- پایین: مواردی که در این دسته قرار میگیرند از سطح اهمیت پایینتری نسبت به دو دسته قبلی قرار میگیرند. باید توجه داشت که انباشته شدن و عدم پاسخگویی به موارد کماهمیت ممکن است سامانه را با یک خطر بحرانی مواجه کند.
در بسیاری از شرکتهای نرمافزاری وظیفه استخراج و دستهبندی مشکلات نرمافزاری بر عهده تیم یا مسئول تضمین کیفیت است.
پانویس
- Stellman, Andrew; Greene, Jennifer (2005). Applied Software Project Management. O'Reilly Media. ISBN 978-0-596-00948-9. Archived from the original on 2015-02-09.
- "Why Software Fails" بایگانیشده در ۲۱ دسامبر ۲۰۱۱ توسط Wayback Machine, in IEEE Spectrum
- Producing Open Source Software: How to Run a Successful Free Software Project (e-book, freely downloadable), by Karl Fogel
- Robert Frese and Vicki Sauter, "Improving your odds for software project success," IEEE Engineering Management Review, Vol. 42, No. 4, Fourth Quarter, Dec 2014
- IEEE بایگانیشده در ۲۰ نوامبر ۲۰۱۱ توسط Wayback Machine magazine article "Why Software Fails"
منابع
- مشارکتکنندگان ویکیپدیا. «Software project management». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۲۲ اکتبر ۲۰۱۱.