مدیریت ریسک در  پروژه های نرم افزاری

قبل از هر صحبتی باید بگم که:دنیای مهندسی نرم افزار هم مثل هر کسب و کار دیگه ای پر از خطرات و ریسک های بالقوه هستش!اما به قول استاد ما (دکتر تنهایی): توی کسب و کار های دیگه، شما نهایتا فرصت کاری پیش روی خودتون رو از دست بدید اما توی دنیای نرم افزار شما نه تنها پروژه رو از دست میدید بلکه اعتبار خودتون یا حتی در موارد خطرناک تر ممکنه به زندان بیوفتید یا چندین برابر هزینه پروژه غرامت پرداخت کنید. پس ریسک های پیش روی یک مدیر پروژه، قطعا ساده نیست!همیشه شرکت هایی که دنبال جاه طلبی هستن با ریسک هایی به مراتب خطرناک تر و پیچیده تر روبرو هستن که باید این ریسک ها رو با کمترین هزینه مدیریت کنن.و خب توی این پست من میخوام در مورد مدیرت ریسک باهاتون گپ بزنم و چیزایی که یاد گرفتم رو بهتون بگم البته با زبان رسمی و حرفای قلمبه سلمبه اما به ساده ترین شکل ممکن...!خوشحال میشم اگه جایی رو غلط غلوط گفتم بهم بگید. (;اگر از مدیران پروژه موفق بپرسیم بهترین توصیه شما برای کسانی که می خواهند کار مدیریت یک پروژه را برعهده بگیرند چیست؟ قطعا می گویند قبل از هر کاری یک برنامه مدیریت ریسک درست و حسابی داشته باشید!ریسک به چه معناست؟ریسک، پیشامدی احتمالی و مخاطره آمیز است که در صورت وقوع، دارای اثرات مثبت یا منفی بر اهداف کسب و کار و یا پروژه می باشد. در هر زمان و مکان این مخاطرات محتمل هستند و هیچ محدودیتی یا ملاحظه ای در رخداد آنها وجود ندارد.البته ریسک به طور مطلق همیشه به معنای از دست دادن نیست. در تئوری بازی و سرمایه‌گذاری ریسک تنها یک مقیاس برای ناسازگاری نتایج پیش‌آمده است. بیمه یک مثال کلاسیک از سرمایه‌گذاری است که ریسک تولید می‌کند. خریداران مبلغی را به عنوان ضمانت می‌پردازند تا از آنها در برابر از دست دادن کالایشان محافظت شود یا مثلا ریسک شرکت در لاتاری‌ها و خریدن بلیت‌های بخت‌آزمایی است.مدیریت ریسکمدیریت ریسک فرآیند پیش بینی ، ارزیابی ، شناسایی، برنامه ریزی و پیمایش خطرات بالقوه و فعال است که می تواند بر پروژه یا کسب و کار شما تأثیر بگذارد. حال این تاثیر یا مثبت است یا منفی.مدیریت ریسک، از طریق پذیرش، انتقال و یا کاهش عوامل ریسک منفی یا تهدیدات و ارتقای محرک های ریسک مثبت یا فرصت ها انجام می شود. اثربخشی مدیریت ریسک نیز با تحلیل مدیریت این عوامل و کنترل انحراف از برنامه های پیش بینی شده برای مدیریت این فرصت ها و تهدیدات صورت می پذیرد.در واقع ارزیابی مدیریت ریسک همه چیز را بررسی می کند ، از خطرات مالی ، خطرات قانونی ، خطرات ایمنی محصول ، عدم اطمینان اقتصادی ، حوادث یا بلایا و موارد دیگر.توجه داشته باشید که نقطه مقابل مدیریت ریسک، ویرانی است!ویرانی هایی مثل: خرابی کانال پاناما، یا خطای معروف Y2K یا مثلا خطای ازکار افتادن شبکه AT&T یا خطای بیمارستان St. Mary’s Mercy و...تهدیدهای مدیریت نشده و عدم مدیریت صحیح ریسک های منفی، می توانند منجر به عوامل چالش آفرین دیگری مانند تاخیر، هزینه های اضافی، قصور و نقص در عملکرد محصولات و خدمات کسب و کار و یا پروژه و در بدترین حالت آن نیز باعث از دست رفتن اعتبار یا آسیب های جانی و مالی شود و از طرفی مدیریت صحیح ریسک های مثبت هم مزایای زیادی از جمله صرفا جویی در هزینه و زمان و همچنین عملکرد درست محصول که در نتیجه سبب افزایش اعتبار شرکت در بازار می شود.نکته مهم در مدیریت ریسک این است که اطمینان حاصل کنید که شما صرفاً از اشتباهات خود درس نمی گیرید بلکه آماده اید که هنگام وقوع مخاطرات به موقع به آنها رسیدگی کنید.بنابراین ، مدیران از برنامه های پروژه ، جدول زمانی و بودجه برای کاهش آنچه ما "ریسک اجرایی" می نامیم استفاده می کنند. این بدان معنی نیست که فعالیت های تعیین شده به درستی انجام می شوند. چرا که، آنها اغلب از دو خطر مهم دیگر غافل می شوند:مورد اول “white space risk” که ناشی از این واقعیت است که برخی از فعالیت های مورد نیاز از قبل شناسایی نخواهند شد ، و باعث ایجاد شکاف هایی در برنامه پروژه می شود.مورد دوم: “integration risk” که به این معنی است که فعالیتهای متفاوت در پایان جمع نخواهند شد. بنابراین ، تیم های پروژه می توانند وظایف خود را بی عیب و نقص ، به موقع و با بودجه انجام دهند ، اما با این وجود پروژه کلی هنوز نمی تواند نتایج مورد نظر را ارائه دهد.از جمله خطرات دیگر میتوان موارد زیر را نام برد:استفاده از فناوری پیشرفته و در بعضی موارد، در پروژه های توسعه نرم افزار ، خطرات پیش بینی نشده بسیاری را به دنبال دارد. برای تکمیل یک پروژه پیچیده توسعه نرم افزار در موارد برنامه ریزی شده ، خطر پروژه باید به خوبی درک شده و در عین حال کاهش یابد. همچنین جنبه های جزئی پروژه های توسعه نرم افزار می تواند تحت تأثیر خطرات قرار گیرد ، که در نهایت می تواند منجر به شکست پروژه شود. به عنوان مثال ، توسعه دهنده ای ممکن است درخواست تعطیلات یا مرخصی استعلاجی کند ، در صورتی که هیچ کس نتواند وظیفه او را بر عهده بگیردکه در این صورت، موفقیت پروژه را تهدید می کند. یا در حالت دیگر ، برآورد هزینه از ابتدا کاملاً اشتباه بوده است زیرا معماری سیستم برای همگام شدن با بارگذاری صفحه وب مشتری به یک نسخه سخت افزاری اضافی نیاز دارد. علاوه بر این ، خطرات احتمالی دیگر به دلیل عدم وجود سیاست پشتیبان گیری یا سیاست امنیتی می تواند رخ دهد.مناطق اصلی موثر بر ریسکبه طور رسمی ، خطر را می توان به عنوان متغیرهای پروژه توصیف کرد که موفقیت فرآیند را مشخص می کنند. خطر در این مورد ، احتمال متحمل شدن ضرر است که تأثیر آن را بر روی پروژه توصیف می کند ، به عنوان مثال کیفیت پایین نرم افزار ، یوزر فرندلی نبودن، افزایش هزینه ، مقیاس ناپذیر ، یک راه حل سخت مشکل عمومی که نیاز به بازنویسی نرم افزار اصلی دارد ، تکمیل تأخیر دارد. به همین دلیل مدیریت ریسک باید یک قسمت اساسی در یک پروژه توسعه نرم افزار باشد.برای بیشتر پروژه های توسعه نرم افزار ، ما می توانیم پنج حوزه اصلی تأثیر ریسک را تعریف کنیم:اجتناب از خطر در طول پروژه های توسعهبا استفاده از تکنیک های مختلف ، تغییر الزامات یا برنامه های پروژه می توان از خطرات متعددی به طور کامل جلوگیری کرد. خطر را می توان محدود کرد تا محدوده تأثیر ریسک فقط در قسمت کوچکی از توسعه نرم افزار تأثیر بگذارد یا فقط درصد کمی از مشتریانی را که از محصول استفاده می کنند تحت تأثیر قرار دهد. یک مثال استفاده از به اصطلاح "خط مشی بازگشت" است. این بدان معناست که اگر پس از استقرار مشکلی پیش آمده باشد ، حتی قبل از اینکه مشتری تحت تأثیر خطا قرار گیرد ، انتشار خطرات می تواند لغو شود. این استراتژی می تواند هنگام استفاده از انتشار در خارج از ساعات کاری (به عنوان مثال در شب) اعمال شود. با این وجود ، خطرات زیادی وجود دارد که نمی توان از آنها جلوگیری کرد یا آنها را محدود کرد. در این موارد ، خطر باید کاهش یابد یا کنترل شود. برخی از خطرات در طول یک پروژه را می توان با ایجاد یک اثبات مفهوم (POC) و نمونه های اولیه نرم افزار کاهش داد تا آزمایش کند که چه خطری می تواند بر روی آن قسمت از نرم افزار تأثیر بگذارد و چقدر احتمال دارد در حین تولید تحقق یابد.خطر را می توان در مراحل مختلف چرخه عمر نرم افزار شناسایی و برطرف کرد. با این وجود ، شناسایی خطرات در اسرع وقت و رفع سریع آنها ضروری است زیرا هزینه های مربوطه می تواند بسیار زیاد باشد.مدیریت ریسک نرم افزارروند مدیریت ریسک باید با شناسایی ریسک آغاز شود. هدف از شناسایی ریسک کشف کلیه عواملی است که می توانند منجر به شکست پروژه شوند. عوامل احتمالی ممکن است مربوط به فناوری و زبان نرم افزاری مورد استفاده در پروژه ، فرآیند توسعه نرم افزار (Scrum ، Kanban ، Waterfall ، RURP و غیره) یا عوامل سازمانی باشد. این مناطق باید رصد و ارزیابی شود تا کلیه خطرات احتمالی مورد استفاده قرار گیرد.مرحله دوم فرایند مدیریت ریسک نرم افزار ارزیابی سطح قرار گرفتن در معرض هر ریسک و اولویت بندی آنها بر اساس تاثیری است که بر روی پروژه دارند. به اندازه کافی واضح ، خطر با تأثیر مخرب باید قبل از خطر با تأثیر کم ارزیابی شود.مرحله بعدی کاهش خطر است. کاهش خطر ، تلاشی است برای جلوگیری یا جلوگیری از عواقب تحقق خطر. سه راهکار اصلی برای کاهش خطر وجود دارد:جلوگیری از خطرکاهش خطرانتقال خطربهترین راه برای جلوگیری از خطر، سازماندهی کامل پروژه توسعه نرم افزار است ، که گاهی اوقات غیرممکن است. کاهش ریسک دومین روش بهترین و مربوط به از پیش برنامه ریزی کردن پروژه توسعه نرم افزار است. این امر به کاهش احتمال وقوع ، معرفی انعطاف پذیری نرم افزار ، نظارت بر عملکرد نرم افزار و سایر استراتژی ها کمک می کند. انتقال ریسک را می توان به عنوان یک استراتژی سازماندهی مجدد پروژه توصیف کرد. هدف این است که خطر را به مناطقی هدایت کنیم که آسیب کمتری داشته باشد.آخرین مرحله در روند مدیریت ریسک نتیجه گیری ریسک است. این مرحله بعد از تعریف برنامه کاهش خطر برداشته می شود و در تمام اقدامات مورد نیاز برای جلوگیری از خطر یا اقداماتی که پس از تحقق خطر لازم است ، شامل می شود. اقدامات انجام شده در مرحله نظارت و گزارش باید در برنامه احتمالی تعریف شود. در برنامه احتمالی باید اقداماتی را توصیف کرد که با تحقق یک خطر ، انجام می شود.نتیجه گیری پارامتری از بحثمدیریت ریسک بخشی ضروری از هر پروژه موفق توسعه نرم افزار است.مدیریت ریسک بخشی ضروری از هر پروژه موفق توسعه نرم افزار است.بسیار توصیه می شود که کار را از قبل انجام دهید ، لیست کنید ، دسته بندی کنید و برای هر مشکل احتمالی یک برنامه عملیاتی ایجاد کنید.همچنین باید به خاطر داشته باشید که هیچ وقت هیچ چیز سنگ تمام نمی شود و شرایط ممکن است به سرعت در پروژه نرم افزاری شما تغییر کند. اطمینان حاصل کنید که خطرات را مرتباً ارزیابی مجدد می کنید تا همیشه از تأثیر احتمالی و عواقب آن آگاه باشید.آخرین (نه مهمترین) بخش، برقراری ارتباط آزاد بین اعضای تیم خود و بین شما و پیمانکار خود است.باتشکر از شما (:نوشته شده توسط: علی آخی‍‍‍‍‍‍‍‍‍