upsilonitUpsilonIT
ما به استارت آپ ها و SME ها کمک می کنیم تا نرم افزارهای مهم را بسازند. / p>
آیا تخمین پروژه نرم افزار می تواند تا حد ممکن واقع بینانه باشد؟ این مقاله شما را در چگونگی رویکرد ما در UpsilonIT به روند تخمین راهنمایی می کند. ما همچنین برخی از تکنیک های عملی و نکات مفید در مورد دقیق تر و مقاوم بودن آن را به اشتراک خواهیم گذاشت.
چرا تخمین مرحله اساسی هر پروژه نرم افزاری است؟
بسیاری از پروژه های نرم افزاری برون سپاری شکست می خورند زیرا تخمین آنها قابل اعتماد نیست. عدم موفقیت به این معنی است که سازنده ضرب الاجل را رعایت نکرده است ، بودجه بیشتری را تحمل نکرده است و یا آنچه را که انتظار می رفت تحویل نداده است. مطالعه ای که توسط مک کینزی انجام شد نشان داد که 66٪ از پروژه های نرم افزاری بیش از حد هزینه شده اند. یک سوم آنها فراتر از برنامه تخمین زده شده است و تقریباً 20٪ آنها از مزایای وعده داده شده کوتاه ترند.
گاهی اوقات به نظر می رسد که روند تخمین می تواند به طور قابل توجهی هزینه پیش -فاز توسعه اما درک این امر بسیار مهم است: منابعی که در مرحله اولیه پروژه صرف شده سرمایه گذاری خوبی در نتیجه است. هرچه برآورد دقیق تری انجام شود ، نتیجه رضایت مشتری بیشتر خواهد بود. به همین دلیل است که برآورد صحیح بخشی مهم در رویه های مدیریت پروژه است و واقعاً ارزش آن را دارد.
ارزیابی پروژه چیست؟
برآورد پروژه فرآیند محاسبه و پیش بینی هزینه های لازم برای تحقق موفقیت آمیز آن. در توسعه نرم افزار ، تخمین ها حاکی از پیش بینی در مورد واقعی ترین مقیاس تلاش هایی است که باید برای تولید یک محصول نرم افزاری انجام شود. این اطلاعات به شما امکان می دهد مبلغی را که باید در پروژه سرمایه گذاری شود ، تعداد متخصصانی را که می خواهند روی آنها کار کنند ، و در نهایت ، زمان لازم برای همه اینها را توصیف کنید.
برآورد دقیق: پیچیده اما وظیفه مهم
از آنجا که تخمین ها بر اساس دانش و فرضیات ناقص و ناقص در مورد آینده است ، همه آنها از عدم اطمینان برخوردارند. چیزی به عنوان برآورد دقیق و تک ارزش وجود ندارد.
رویکرد سنتی “آبشار” حاکی از آن است که قبل از شروع فرایند تخمین ، کلیه مشخصات پروژه نرم افزار باید از قبل ارائه شود. اما اکنون ، همه چابک هستند. ذینفعان می خواهند بلافاصله پس از آماده سازی شرایط مختصر شروع و سپس ویژگی های جدید را به معنای واقعی کلمه در حال حرکت اضافه کنند. MVP ها (حداقل محصولات قابل تحمل) به سرعت آزاد می شوند ، بازخورد به دست می آید و بهبودها بصورت تکراری انجام می شود. در آن شرایط ، برنامه ریزی و تخمین می تواند چالش برانگیز باشد. بنابراین س weالی که می خواهیم به آن پاسخ دهیم این است ، “چگونه می توانیم همه این عدم قطعیت ها را بپوشانیم و تخمین را تا حد ممکن واقع بینانه کنیم؟” روند برآورد پروژه نرم افزار در UpsilonIT و نکاتی را به ما کمک کنید که به ما کمک می کند تا دقیق تر و قوی تر شود.
فرایند تخمین: نحوه اجرای آن در UpsilonIT
بیایید به کل فرایند تحلیل و برآورد پروژه در UpsilonIT نگاه کنید – از لحظه کشف انتظارات مشتری تا ارائه محاسبه نهایی پروژه.
1. آماده سازی
ما همیشه با کاوش در چالش های اصلی مشتری شروع می کنیم تا تصویر روشنی از اهداف تجاری و توسعه آنها ترسیم کنیم. جمع آوری هرچه بیشتر اطلاعات در مورد پروژه آینده مهم است. دو منبع اصلی برای دستیابی به آن وجود دارد: >
- اسناد و داده های ارائه شده توسط مشتری: مشخصات ، ماکت ها ، فریم های سیم ، موارد استفاده ، داستان های کاربر ، مشخصات نرم افزار و غیره
همه این به ما کمک می کند تا هزینه ساخت محصول مشتری را دقیق تر برآورد کنیم. هرچه اطلاعات بیشتری در این مرحله به دست ما برسد ، تخمین ما نیز دقیق تر خواهد بود. در اینجا لیستی از مواردی که ما معمولاً سعی می کنیم در همان ابتدا روشن کنیم وجود دارد:
- دردی که برای مشتریان خود حل می کنید چیست؟
- < li> ویژگی های اصلی محصول چیست؟
- محصول بر اساس چه سیستم عامل هایی (وب ، موبایل ، پشتی) ساخته می شود؟
- چه اجزای موجود یا سیستم دیگری از قبل دارید؟
- آیا می توانید موارد اصلی استفاده از برنامه جدید را توصیف کنید؟
- آیا می توانید عملکرد محصول آینده را در اولویت قرار دهید؟
- آیا پشته فنی خاصی دارید که باید برای این پروژه استفاده شود؟ بازه زمانی پیش بینی شده شما برای پروژه چیست؟
- بودجه پیش بینی شده شما برای این پروژه چقدر است؟
هنگامی که ما مطمئن باشید که چیزی از دست نرفته و ما مطابق انتظارات مشتری هستیم ، به مرحله بعدی می رویم: جمع آوری تیم.
2. جمع آوری زمان مناسب
پس از جمع آوری تمام اطلاعات ، ما متخصصانی را جمع می کنیم که بیشترین صلاحیت را در حوزه مربوطه دارند. تیم مسئول تخمین پروژه معمولاً از متخصصان سطح بالا تشکیل شده و شامل:
- توسعه دهنده ارشد عقب انداز
- ارشد ارشد- توسعه دهنده نهایی
- سایر متخصصان در صورت درخواست: مدیر پروژه ، طراح UX / UI ، متخصص کیفیت ، نویسنده فنی و دیگران.
در اکثر موارد ، متخصصانی که تخمین می زنند متعاقباً عضوی از تیم توسعه پروژه می شوند. معیارهای کلیدی برای انتخاب اعضای آن تیم عبارتند از:
- تخصص حرفه ای: تجربه مربوط به کار با فن آوری های خاص و پروژه های مشابه.
- توانایی برای شروع پروژه در اسرع وقت
- عوامل دیگر: حضور در منطقه زمانی مشتری ، اشتغال کامل یا نیمه وقت ، مهارت زبان و غیره ul>
نکته حرفه ای: جمع آوری تیم مناسب یکی از حساس ترین سوالات در زمینه برون سپاری نرم افزار است. مشتری می خواهد اطمینان حاصل شود که ماهرترین متخصصان با تخصص مربوط به پروژه اختصاص می یابند. که کیفیت مورد انتظار و تحویل بدون دردسر محصول نهایی را تضمین می کند. همچنین ، مشتریان می خواهند در تخمین ها ، “چهره های واقعی” نه فقط “توسعه دهندگان ارشد جلویی” انتزاعی را مشاهده کنند ، از جمله برای اینکه بیشتر بدانند در تماس کنفرانسی با چه کسی صحبت می کنند. به همین دلیل است که هر برآورد انجام شده توسط UpsilonIT با سندی از قالب CV همراه با اطلاعات کلیدی در مورد هر یک از اعضای تیم ، از جمله وی همراه است:
- ماتریس مهارت
- تاریخچه پروژه
- اطلاعات شخصی
در این مرحله ، اعضای تیم چندین جلسه برای بحث در مورد نیازهای پروژه ، تبادل نظرات خود و ایده های طوفان فکری تشکیل دادند. اگر برخی از جزئیات نیاز به توضیح بیشتری داشته باشند ، ممکن است بحث ها با جلسات تحقیق جایگزین شود. در پایان مرحله تحقیق و تجزیه و تحلیل ، تیم ما محصولات قابل ارائه زیر را به مشتریان بالقوه ارائه می دهد:- طراحی و ساخت زیرساخت در سطح بالا
- پشته فنی توصیه شده
- ماکت ها و فریم های سیم (در صورت عدم ارائه توسط مشتری)
- خرابی مورد نظر تیم
- جدول زمانی خشن
> <2h> . تعریف محدوده و اندازه پروژه
مرحله بعدی فرآیند تخمین ما ایجاد دامنه کار است که نیازهای نرم افزاری را پوشش می دهد. در UpsilonIT ، ما از ساختار خرابی کار (WBS) استفاده می کنیم که هر مرحله از توسعه نرم افزار را با کارهای مرتبط تجسم می کند.
برای رسیدن به هدف پروژه ، آن را به نقاط عطفی تقسیم می کنیم ، که خراب است. در UpsilonIT ، ما یک نقطه عطف به عنوان یک نشانگر تعریف می کنیم که نشان دهنده یک دستاورد یا یک قابل تحویل است ، به عنوان مثال ، تکمیل یک کار بزرگ یا رسیدن به یک مرحله در یک پروژه. برای اکثر پروژه ها ، موارد مهم زیر را مشخص می کنیم:
- مرحله کشف: تجزیه و تحلیل اسناد ، انتخاب ابزارهای نرم افزاری شخص ثالث ، تصمیم گیری در مورد یکپارچه سازی های احتمالی ، آماده سازی فریم های سیم (در صورت عدم ارائه توسط مشتری) ، و غیره
- مرحله طراحی: کار مشترک با صاحب محصول که می تواند شامل کارگاه های تم طراحی ، طراحی هویت نام تجاری ، طراحی UX و UI ، نمونه سازی و غیره باشد.
- مرحله راه اندازی پروژه: راه اندازی زیرساخت ها ، استقرار محیط ها ، پیکربندی امنیت و غیره
- مرحله توسعه: توسعه عملکرد مبتنی بر داستان های کاربر (و همچنین وظایف گروه بندی شده در نقاط عطف). این می تواند شامل احراز هویت کاربر ، پیام رسانی ، ادغام پرداخت ، نقشه برداری ، پخش ویدئو ، گزارش دهی و غیره باشد.
- مرحله آزمایش: تست عملکرد ، تست قابلیت استفاده ، آزمایش پذیرش کاربر (UAT).
- مرحله تحویل: انتقال اسناد و مدارک و مالکیت معنوی ، استقرار و اجرای راه حل ، از جمله انتشار در بازارها ، آموزش ، ارائه محصول در صورت لزوم و موارد دیگر.
در عمل چگونه کار می کند؟ در اینجا می توانید یک نمونه از چگونگی استفاده از یک پلت فرم دیجیتال سلامتی و سلامتی را به نقاط عطف و داستان های کاربر مشاهده کنید.
س isال مهم دیگر این است که تصمیم بگیرید که آیا یک راه حل کلید در دست ساخته اید یا از حداقل محصول قابل تحمل (MVP) شروع می کنید. در حدود 80٪ از شرکتهای نوپا و کوچک و متوسطی که با آنها کار کردیم ابتدا MVP داشتند. با توجه به تجربه ما ، ما توصیه می کنیم با ایجاد MVP قبل از محصول نهایی ، عملکردهای غیر اصلی را نادیده بگیریم ، خصوصاً اگر:- الزامات پروژه مشخص نشده باشد
- < li> تناسب بازار محصول هنوز معتبر نیست
- ویژگی ها باید به سرعت اضافه و آزمایش شوند
- بودجه محدود است –
نکته طرفدار: هنگام تعریف دامنه پروژه ، تجسم همه موارد لازم برای انجام کار ، سازماندهی وظایف در چندین سطح ، و این عناصر را به صورت گرافیکی نمایش می دهد. برای این منظور ، ما از پلت فرم Miro استفاده می کنیم. با کمک میرو ، ساختار سلسله مراتبی پروژه را توسعه می دهیم که نظارت بر یک پروژه پیچیده را آسان تر می کند و مطمئن می شویم که هر کاری انجام می شود.
هنگام ایجاد WBS برای یک پروژه آینده ، ما چهار اصل اساسی را دنبال می کنیم:- سلسله مراتب: هر “کودک” در نمودار دارای یک رابطه سلسله مراتبی با وظیفه اصلی خود است. < / li>
قانون 100٪: هر سطح نمودار باید 100٪ سطح “والد” را تشکیل دهد و حداقل باید دو عنصر “فرزند” داشته باشد.
عناصر متقابل متمایز: هر عنصر در هر سطح باید از یکدیگر جدا باشد – هیچگونه همپوشانی بین محصولات قابل تحویل یا کار وجود ندارد.
نتیجه -محور: تصویر گرافیکی باید بر نتایج r تمرکز کند بیش از فعالیتهای لازم برای تولید آنها.
5. برآورد پروژه با استفاده از روش PERT
پس از انجام تفکیک دامنه دقیق ، ما شروع به ایجاد تخمین دقیق تر با استفاده از روش PERT (روش ارزیابی و بررسی برنامه) می کنیم. ما با استفاده از تخمین مورد خوشبینانه ، تخمین بدبینانه و احتمالاً تخمین مورد در این روش ، برآورد هزینه واقعی را محاسبه می کنیم. روش های مختلفی برای تفسیر اعداد بسته به اینکه چگونه می خواهیم خطرات احتمالی را وزن کنیم وجود دارد ، اما در بیشتر موارد ، ما از این فرمول استفاده می کنیم: )) / 6 = برآورد مورد انتظار
اجازه دهید مثالی را در نظر بگیریم تا ببینیم این فرمول ها چگونه کار می کنند. بگذارید فرض کنیم باید زمان مورد انتظار سفر را برای تحویل محموله از نقطه “A” به “B” محاسبه کنیم. 3 سناریو مختلف می تواند وجود داشته باشد:
سناریوی خوش بینانه: جاده ها از ازدحام ترافیک عاری هستند و در سیگنال های راهنمایی و رانندگی توقف وجود نخواهد داشت.
سناریوی بدبینانه: تنگناهای ترافیکی شدیدی ایجاد می شود (ممکن است به دلیل یک حادثه بزرگ باشد) ، یا برخی از توقف های برنامه ریزی نشده وجود خواهد داشت (ممکن است به دلیل خرابی وسیله نقلیه باشد) .
به احتمال زیاد سناریو: شرایط عادی ترافیک وجود دارد.
بگذارید فرض کنیم 3 برآورد ما (خوش بینانه ، بدبینانه و به احتمال زیاد) به ترتیب 450 دقیقه ، 2250 دقیقه و 900 دقیقه بود. با قرار دادن این مقادیر در فرمول ها ، به دست می آوریم:
زمان پیش بینی شده برای سفر = (450 + 2250 + 4 x 900)) / 6 = 1050 دقیقه
این اساساً به این معنی است که ، در بیشتر موارد ، زمان سفر مورد انتظار 1050 دقیقه طول می کشد.
چگونه می تواند در یک برآورد واقعی پروژه به نظر برسد؟ بیایید توضیح دهیم که چگونه کار اعتبارات (بانک) و ادعای جایزه را با استفاده از روش PERT برای یک برنامه ورزشی اجتماعی تخمین زدیم.
سناریوی خوش بینانه: 7 روز (شامل 7 روز برای back-end و 6 روز برای پیشرفت front-end. هر دو تیم همزمان کار می کنند).
سناریوی بدبینانه: 14 روز (شامل 14 روز برای پیشرفت و 12 روز برای پیشرفت جلویی).
محتمل ترین سناریو: 11 روز (شامل 11 روز برای پایان و 10 روز برای توسعه جلویی).
برآورد پیش بینی شده: (7 + 14 + (4 11 11)) / 6 = 10.83 روز برخی عدم اطمینان و خطر در کارها. روش PERT می تواند بسیار وقت گیر باشد ، اما می تواند درجه بالایی از دقت را ارائه دهد.
6. ساخت جدول زمانی
پس از تعیین زمان کلی مورد نیاز برای هر کار و مرحله مهم ، جدول زمانی پروژه را می سازیم. ما وظایف را از انتها به انتها ترسیم می کنیم ، طول آنها را متناسب با زمان اختصاص داده شده تنظیم می کنیم و نقاط عطف را اضافه می کنیم. ما همه را به یک جدول زمانی جامع و با تاریخ های تحویل پیش بینی شده ارائه می دهیم. به خصوص داشتن چنین تجسمی در پروژه هایی که چندین تیم به طور همزمان در چندین مرحله کار می کنند ، بسیار مفید است.
= ” نمودار جدول زمانی کل پروژه را شکل می دهد ، که مشخص می کند کدام کارها در کدام مرحله باید انجام شود و کدام منابع باید در طول مسیر دخیل باشند. همچنین به ما امکان می دهد نسبت زمان اختصاص یافته به هر کار یا مرحله مهم پروژه را به سرعت ببینیم و تفسیری بصری از نحوه اجرای مرحله به مرحله پروژه ارائه می دهد.7. محاسبه هزینه ها
پس از تخمین تعداد ساعات کار مورد نیاز برای تکمیل محدوده تعریف شده ، نوبت به قیمت گذاری پروژه می رسد. ما کل هزینه پروژه را با ضرب تعداد ساعات کاری انسان (تخمین زده شده با استفاده از روش PERT) در نرخ های محاسبه می کنیم. برای سهولت محاسبه ، بیایید فرضیات زیر را ارائه دهیم:
- یک ساعت در ساعت = کار در یک ساعت تلاش بی وقفه توسط یک متخصص به پایان رسیده است.
- < li> یک روز = یک روز کاری استاندارد 8 ساعته.
در پروژه های IT ، نرخ ساعتی بسته به دسته حرفه ای متخصص متغیر است ، که توسط وی تعریف می شود قابلیت های شغلی ، سطح ارشدیت ، منحصر به فرد بودن مهارت ها و غیره. البته هزینه آن برای یک ساعت برنامه نویسان ارشد یکسان نیست. بنابراین ، هنگام محاسبه هزینه پروژه ، در نظر می گیریم که ضرب هزینه باید با نرخ ساعتی هر گروه حرفه ای فاکتور بندی شود:
هزینه کل = (RH1 x H1) +… + (RHn x Hn)
در این فرمول ، RH1 برابر است با نرخ ساعتی گروه حرفه ای شماره 1 ، و H1 تعداد کل ساعات تخمین زده شده توسط دسته حرفه ای شماره 1.
در عمل چگونه کار می کند؟ به عنوان مثال ، ما یک پروژه نرم افزاری را تخمین زدیم و شماره های زیر را بدست آوردیم:
پروژه: 50×180 + 40×150 + 30×60 = 16800 $
8 خواهد بود. چه چیزی بعدی است؟
با جمع کردن همه موارد و محاسبات خود ، ما شخصاً آن را با مشتری در میان می گذاریم ، و تخمین خود را به جای ارسال فقط یک شماره بدون زمینه ، توضیح می دهیم. ما جلسه ای را ترتیب می دهیم و ردیف به ردیف سند را با آنها مرور می کنیم. این به ما امکان می دهد در مورد هر سوالی که ممکن است در طول مسیر پیش آمده باشد بحث کنیم. اگر مشخص شود که این پروژه در محدودیت های مشتری قابل انجام نیست ، می توانیم به اولویت بندی عملکرد کمک کرده و با تولید حداقل محصول مناسب (MVP) یا حتی اثبات مفهوم (PoC) شروع کنیم. ما سعی می کنیم هر زمان که ممکن باشد این نوع تفکر خارج از چارچوب را در تخمین های خود بگنجانیم تا در هر مرحله از همکاری خود ارزش افزوده داشته باشیم. > برآورد مستعد خطا است. پیچیدگی کلی فقط در مرحله اجرا کاملاً مشهود می شود. در شرایط عدم اطمینان و کمبود اطلاعات ، وسوسه ارائه تعداد کمتری برای پیشی گرفتن از رقابت وجود دارد. اما این بدان معنا نیست که قیمت نهایی محصول شما کمتر خواهد بود. این فقط ممکن است به معنای استرس بیشتر ، هزینه های پیش بینی نشده بیشتر در طول مسیر و در نتیجه نارضایتی شما باشد. و این قطعاً نحوه ساخت محصولات عالی نیست.
هدف ما پیش بینی هرچه بیشتر نزدیک است. البته برخی از موارد می توانند تغییر کنند ، خصوصاً اگر پروژه ای به طور غیرمنتظره تکامل یابد یا مشتری در حین توسعه ایده های جدیدی پیدا کند. اما در بیشتر موارد ، وقتی تخمین می زنیم ، به آن پایبند می مانیم.
بهترین راه برای فهمیدن این موضوع ، مشارکت با ما است. شما می توانید فرایندهای ما را دنبال کنید ، نظرات خود را با توسعه دهندگان ما در میان بگذارید و از رویکرد شفاف ارتباطات و کیفیت ما لذت ببرید. ما خوشحال خواهیم شد که تمام تلاش خود را برای تحقق ایده های شما انجام دهیم.
UpsilonIT را در Hacker Noon دنبال کنید تا آخرین دانش فنی ، بهترین شیوه های توسعه نرم افزار و مطالعات موردی بصیرت آمیز از صنعت کارشناسان بخاطر بسپارید: پسندیدن ها و نظرات شما برای پست های بعدی ما سوخت هستند!