بخشی از مقاله
بررسي مدل هاي مديريت ريسک پروژه هاي نرم افزاري
چکيده
با توجه به گسترش روز افزون استفاده از سيتم هاي نرم افزاري در تمام زمينه ها و نرخ شکست پروژه هاي نرم افزاري ، مديريت پروژه هاي نرم افزاري در توليد و توسعه نرم افزار امري مهم و ضروري به شمار مي آيد وقتي که پيچيدگي و اندازه پروژه ها افزايش مي يابد ، مديريت نرم افزار مشکل تر ميشود . در اين پروژه ها مديريت ريسک حياتي است که در تمام دوره حيات نرم افزار نقش پر رنگي در موفقيت پروژه ايفا مي کند و مدلهاي مختلفي براي مديريت ريسک پروژه نرم افزاري وجود دارد . در اين مقاله ابتدا به تعريف ريسک و مديريت ريسک پروژه هاي نرم افزاري پرداخته شده و سپس برخي از مدل هاي مهم مديريت ريسک نرم افزاري و ارزيابي مدل ها تشريح شده است ، در ادامه نتيجه مقايسه و ارزيابي مدل ها ارائه گرديده است .
واژه هاي کليدي: طبقه بندي ريسک نرم افزاري ، مدلهاي مديريت ريسک نرم افزاري ، مديريت ريسک نرم افزاري.
مقدمه
دنياي نرم افزار با وجود امکانات بي نظيري که براي سهولت وتسريع فرآيندهاي پيچيده به ارمغان آورده ، هنوز با مشکلات عديده اي مواجه است . شکست هاي نرم افزاري منجر به زيان هاي بسيار بزرگي شده است و همچنان اين خطرات وجود دارند . در گزارشي در سال ١٩٩٤ از گروه Standish نشان داده شده که ١٦% پروژه ها مطابق زمانبندي و بودجه پيش بيني شده به پايان رسيدند و ٥٣% آنها به چالش کشيده شدند و با صرف بودجه اي بيش از بودجه پيش بيني شده و با اهدافي کمتر از اهداف اصلي کامل شدند و ٣١% پروژه ها نيمه کاره رها شدند . گزارش ٢٠٠١،آنها نشان دادند که درصد پروژه هاي موفق ٢٨% بوده که موفقيت کمي به شمار مي آيد ، به همين منظور مطالعاتي در زمينه عوامل موفقيت يا شکست پروژه هاي نرم افزاري صورت گرفت .
مهندسي نرم افزار با هدف کاهش پيچيدگي هاي نرم افزار و تصحيح روند اجراي توسعه پروژه ، فرآيند ها را به فاز هاي مختلفي تقسيم مي نمايد که در بين اين فاز ها ، ميتوان به حوزه مديريت ريسک ها اشاره نمود.
با پرداختن به مقوله مديريت ريسک ها به طور قابل توجهي مي توان نتايج پروژه هاي نرم افزاري را بهبود بخشيد و با توجه به اينکه در ايران در زمينه مديريت ريسک پروژه هاي نرم افزاري کاري صورت نگرفته است و شرکت هاي توليد نرم افزار بيشتر از مدلهاي بين المللي استفاده مي کنند ، در اين مقاله به بررسي و ارزيابي اين مدلها مي پردازيم .
اين مقاله در قسمت اول به تعاريف موجود در زمينه ريسک ها و مديريت ريسک نرم افزاري مي پردازد . در قسمت دوم طبقه بندي هاي موجود در اين زمينه مطالعه خواهد شد در قسمت سوم به معرفي برخي از مدلهاي مديريت ريسک مي پردازيم و در قسمت چهارم ارزيابي مدلهاي مديريت ريسک مطالعه خواهد شد ودر قسمت نهايي نحوه کاربرد واستفاده مديران پروژه از مدلهاي مديريت ريسک در پروژه هاي نرم افزاري آورده شده است .
١ - مديريت ريسک پروژه هاي نرم افزاري
١-١- تعريف ريسک
تعاريف گوناگوني براي ريسک وجود دارد . از جمله ريسک تابع احتمال منابع تهديد يک آسيب پذيري خاص و تأثيراين عوامل در سازمان است .در سيستم هاي فناوري اطلاعات ريسک را مي توان اينترنت ،سرورها ،برنامه
هاي مخرب ويا حتي لغزش امنيت فيزيکي دانست .[٩]ريسک احتمال از دست دادن است . تابعي از احتمال بروز عوامل جانبي و اثرات آن؛ تأثير در مشکلات مالي ،تأ خير زماني و از دست رفتن عملکرد و اهداف نشان مي
دهد. با توجه به منابع موجودريسک آغاز مشکلي است که به احتمال قوي درهر نقطه داده شده هر فاز ، نتوان به اهداف پيش بيني شده دست يافت .[١]
در تعريف ديگر : ريسک يک رويداد غير قطعي است که در صورت وقوع تاثير مثبت يا منفي بر روي حداقل يکي از اهداف پروژه ( زمان ، هزينه ، محدوده ، کيفيت ) مي گذارد .به ريسک هاي مثبت ، فرصت و به ريسک هاي منفي تهديد مي گويند.[٤]
رايج ترين تعريف از ريسک در پروژه هاي نرم افزاري درمعرض عوامل خاص قرار گرفتن است که تهديدي براي دستيابي به نتايج مورد انتظار از يک پروژه مي باشد . بر اين اساس ، ريسک در پروژه هاي نرم افزاري بصورت احتمال تعريف شده است . ريسک تاثير يک رويداد روي پروژه است R=P*I . ، که R در معرض ريسک قرار گرفتن است ، P احتمال نامطلوب رويدادي است که تحقق خواهد يافت و I تاثير يا هزينه اضافي در صورت وقوع ريسک است .[٢]
با توجه به تعاريف مربوط به ريسک نرم افزار ، اين تعاريف داراي دو ويژگي مشترک هستند:
عدم قطعيت : يعني ريسک ممکن است اتفاق بيافتد يا نيافتد.
ضايعات : يعني اگر ريسک به وقوع به پيوندد حتما ضايعاتي در بر خواهد داشت .
١-٢- تعريف مديريت ريسک
مفاهيم زيادي در مورد مديريت ريسک نرم افزار وجود دارد که در اين بخش به بعضي از آنها اشاره مي کنيم :
دراغلب تحقيقات مديريت ريسک را کنترل ريسک هايي دانسته اند که احتمال وقوع دارند .اين کنترل درتمام مدت زمان توسعه پروژه نرم افزاري،بايد وجود داشته باشد .حتي در دوران نگهداري نرم افزارنيز نظارت هايي جهت کنترل ريسک ها وجود دارد. [٣]
راهنماي دانش مديريت پروژه [PMBOK]مديريت ريسک پروژه را چنين تعريف مي کند:
فرايند سيستماتيک شناسايي ، تجزيه و تحليل وپاسخگويي به ريسک هاي پروژه است .اين فرايند شامل به حداکثر رساندن احتمال واثرات رويدادهاي مثبت و به حداقل رساندن احتمال و اثرات رويدادهاي منفي است .
درتعريفي ديگر،مديريت ريسک پروژههاي نرم افزاري به عنوان مجموعه اي از اصول و شيوه هاي شناسايي ، تعريف ، تجزيه و تحليل و برخورد با عوامل ريسک به منظور بهبود شانس دستيابي به نتايج موفقيت آميزپروژه و يا
اجتناب ازشکست پروژه است .[٣]
مديريت ريسک نرم افزاري،يک محيط منظم براي تصميم گيري فعال که همواره مواردي را که به سمت اشتباه مي روند را ارزيابي مي کند؛ ريسک هايي که براي مقابله مهم هستند تعيين مي کند واقداماتي را براي آن ريسک ها پياده سازي مي کند .
٢- طبقه بندي ريسک هاي نرم افزاري
يکي ازمهمترين فعاليت هاي مديريت ريسک، طبقه بندي ريسک ها است که براساس اصولي انجام مي گيرد. يک روش علمي طبقه بندي بر اساس ويژگي ها است ، طوري که ريسک هاي مشابه و داراي صفات يکسان در يک دسته قرار مي گيرند.[٣]
طبقه بندي ديگري نيزمي توان براي ريسک ها درنظرگرفت ، شامل :
تجاري ،مالي ، پروژه ،فرايند ،برنامه ريزي منابع ،تکنيکي ،سازماني ،حقوقي ، همکار ، پيمانکار ،کشور ،محصول و کيفيت .[٤]
ريسک هاي نرم افزاري مي توانند دروني يا بيروني باشند.[٤] ريسک هاي دروني ازعوامل دروني سازمان مي آيند ومديريت پروژه بايد برتمام ريسک هاي دروني کنترل داشته باشد و ريسک هاي بيروني ازعوامل خارجي سازمان مي آيند وکنترل ريسک هاي بيروني سخت است . ريسک هاي نرم افزاري مي توانند به ريسک هاي پروژه
،ريسک فرايند و ريسک هاي محصول طبقه بندي شوند. اين طبقه بندي سيستم مي تواند براي ريسک هاي دروني به آساني به کار رود.
ريسک هاي پروژه نرم افزاري ازطريق مطالعات و تجربيات در پروژه ها بدست آمده اند واين ريسک ها برروي نيازمندي ها، زمان بندي ،هزينه ،کيفيت و کسب و کارتأثير مي گذارند.
٣- مدل هاي مديريت ريسک نرم افزار
مدل هاي فرايند مديريت ، مراحل کار را براي مديريت ريسک فراهم مي کنند.فعاليت هاي ويژه اي براي
مديريت ريسک پروژه هاي نرم افزاري لازم است واکثر مدل ها شامل مجموعه اي مشابه از مراحل فرايند: استراتژي ريسک ، شناسايي ريسک، تحليل ريسک ، پاسخ ريسک و کنترل ريسک است .
مدل ها اين فعاليت را مشخص مي کنند و بايد به ترتيب وبه طور مؤثر ريسک را مديريت کنند که در زير به برخي
از آنها اشاره مي کنيم :
٣-١- مدل spiral (تئوري بري بوهم )
اولين مدل جهت مديريت ريسک ، مدل Spiral (شکل ١) است که مديريت ريسک را در تمامي مراحل
چرخه حيات نرم افزار در نظر مي گيرد. اين مدل توسط بري بوهم در سال ١٩٨٨ به صورت رسمي منتشر شد، بنا
بر نظر بوهم ،مديريت ريسک فرايندي شامل دو فاز اصلي است ؛فاز اول تخمين ريسک و فاز دوم کنترل ريسک است . تخمين ريسک شامل : شناسايي ريسک ،تحليل ريسک واولويت بندي ريسک است .کنترل ريسک نيز
شامل :برنامه ريزي مديريت ريسک،برنامه ريزي نظارت ريسک واقدامات اصلاحي مي باشد.[٢,٣]
شکل ١ : مدل بري بوهم
٣-٢- مدل مديريت ريسک SEI
اين مدل بوسيله ي مؤسسه مهندسي نرم افزار(SEI) توسعه داده شده است و شامل پنج فاز مجزا : شناسايي ، تحليل ، برنامه ريزي پاسخ ، رديابي و کنترل است که با يک سري عمليات انتقال ريسک مرتبط مي باشد ( شکل ٢ ) [٥]
شناسايي : در اين مرحله ريسک هاي تاثير گذار روي پروژه را شناسايي مي کنيم . بايد محيطي ايجاد کنيم که ذينفعان پروژه از قبيل حاميان پروژه ، مدير پروژه ، اعضاي تيم پروژه و حتي در برخي مواقع مشتريان در شناسايي ريسک ها مشارکت داشته باشند و اقدام به شناسايي ريسک ها نمايند.
تحليل : در اين مرحله درباره ريسک ها تصميم گيري مي شود که تحليل شامل بررسي ، اولويت بندي و انتخاب مهم ترين ريسک هاست . تيم ارزيابي ريسک نرم افزار نتيجه هر ريسک شناخته شده را روي هزينه ، زمانبندي ، کارايي و کيفيت محصول تحليل مي کند .[٥]
برنامه ريزي پاسخ : در اين مرحله با توجه به اطلاعات ريسک ، تصميمات و اقداماتي را براي حال و آينده اتخاذ مي کنيم . برنامه ريزي شامل توسعه اقدامات براي رسيدگي به ريسک هاي فردي ، اقدمات اولويت بندي ريسک
و ايجاد يک برنامه براي مديريت ريسک است .
رديابي : نظارت بر وضعيت هايي از ريسک است و اقداماتي جهت کاهش ريسک ها مي باشد.
کنترل : فرآيند هاي کنترل ، برنامه هاي عملياتي ريسک است و فعاليت هاي کنترل ريسک از قبيل تصحيح تغييرات طرح ها ، پاسخ به رويدادهاي تهيه کننده و بهبود فرآينده هاي مديريت ريسک است که در برنامه مديريت ريسک مستند مي شود .[٥]
تمام عملکرد مديريت ريسک با يکديگر مرتبط هستند . بدون ارتباط مؤثر فعاليت ها ، هيچ رويکرد مديريت
ريسک نمي تواند دوام بياورد .
شکل ٢ : مدل SEI
٣-٣- مدلSoft risk
Keshlaf&Hasim ( ٢٠٠٠) مدل هايي را که به ابزار مديريت ريسک کمک مي کنند گسترش دادند . مهم ترين ويژگي اين مدل تمرکز بر روي ريسک بالاست . ريسک ها را ذخيره مي کند و راههاي موثر جهت مديريت اين ريسک ها را پيدا مي کند [٣]. همچنين بطور موثر ضرر ريسک ها را کاهش مي دهد . اين مدل ، مديريت ريسک نرم افزار را در پروژه هاي در حال پيشرفت تضمين مي کند . همانطور که در (شکل ٣ ) نشان داده شده ، مدل به عنوان يک فرآيند ٨ مرحله اي در مراحل اوليه پروژه استفاده مي شود . هنگامي که همه ريسک هاي جديد در سراسر پروژه شناسايي شدند ، يک فرآيند ٥ مرحله ايي داخلي به منظور بهبود تخمين هاي اوليه و قضاوت هاي متداول مورد استفاده قرار مي گيرد[١٠].
شکل ٣ : مدل Soft risk
٣-٤- مدل (CMMI)
Software Capability Maturity Model Integration
درزمينه هاي فرآيند مديريت ريسک، CMMIتوسط موسسه مهندسي نرم افزار (SEI) در CMM توسعه يافته است ، و در جهان معيارهاي ارزيابي بلوغ قابليت نرم افزار را ترويج داده است . به طور عمده به عنوان راهنمايي جهت بهبود فرآيند توسعه نرم افزار و ارزيابي توانايي توسعه نرم افزار استفاده مي شود . فرآيند مديريت ريسک در سطح ٣ ،CMMIيک مرحله مهم در حوزه فرآيند تعريف کرده است [٥].
CMMIيک فرآيند مديريت ريسک مداوم است براي شناسايي عوامل بالقوه که مي تواند اهداف کليدي برنامه ريزي فعاليت ها و پاسخ به ريسک ها و در صورت لزوم براي اجراي اين فعاليت ها ، کاهش عوارض جانبي و در نهايت دستيابي به اهداف زماني بکار رود . مديريت ريسکCMMIدستيابي به سه هدف را بطور واضح شرح داده است ، با تحقق هر هدف مجموعه اي از فعاليت ها کامل مي شود .[٧]
هسته ي اصلي مدل کتابخانه ي ريسک است ، و هر فعاليت براي رسيدن به اهداف مختلف به روز شده آن در کتابخانه ي ريسک موجود است . فعاليت هايي که به توسعه و نگهداري استراتژي هاي مديريت ريسک و ريسک متصل به پايگاه داده يک تعامل دو طرفه است ، يعني پايگاه داده ريسک بوسيله جمع آوري اطلاعات با فعاليت هاي مربوطه از ورودي قبلي کار مي کند . ( شکل ٤ )