همواره برآورد حجم پروژههای نرمافزاری به صورت کارآمد و مناسب، یکی از چالشیترین مباحث و درعینحال مهمترین فعالیتهای این حوزه بوده است. برنامهریزی و کنترل مناسب پروژه بدون یک برآورد قابلاتکا و دقیق امکانپذیر به نظر نمیرسد. از طرفی صنعت نرمافزار بهصورت کلی هیچگاه تلاش فراگیری برای برآورد صحیح پروژهها و یا حتی استفاده مناسب از آنها نکرده است.
بهطور پیشفرض انتظاری که از پروژههای مهندسی میرود، پیشبینی شستهورفته نحوه انجام کارها، شناسایی قدمهای بعدی یکی پس از دیگری و مسیر صحیح راه است. نحوه کار در حوزههای مهندسی دیرپا، همچون معماری، راه و ساختمان، معدن، صنایع و غیره که اغلب برای دیگر رشتههای مهندسی نوپای پس از خود الگو قرارگرفتهاند، اینگونه انتظارات را تقویت کرده است.
در ادامه سعی شده است خواننده با برخی از قوانین و خط مشیهایی که میتوانند در برآورد صحیحتر پروژه راه گشا باشند، آشنا شود. منبع این یادداشت، کتاب IT Project Estimation – A Practical Guide, Paul Coombs Cambridge University Press, ISBN 0-52153285-X است.
قانون ۱: برآوردهای شما اشتباه خواهند بود!
چگونه میتواند غیرازاین باشد وقتی قرار است آینده را پیشگویی کنید! بهویژه در پروژههای نرمافزاری که عوامل تأثیرگذار بر آنها بسیار زیاد است. بنابراین مدیران، مشتریان یا کارفرمایان هرگز نباید انتظار داشته باشند که تمام برآوردها دقیق و بینقص باشند. اما میتوان با واقعبینی در کار احتمال اشتباه در برآوردها را به حداقل رساند. هرگز نباید در برآوردها بسیار بدبین یا بسیار خوشبین بود. یادآوری این نکته ضروری است که هر دو نوع برآورد خوشبینانه (Underestimation) و بدبینانه (Overestimation) معایبی مانند دست نیافتن به بازار (در حالت بدبینانه) و از دست دادن بازار (در حالت خوشبینانه) را به همراه دارند که در بازار رقابتی پذیرفته نیست.
چه کسی باید برآورد را انجام دهد؟
در بهترین حالت کسی باید برآورد فعالیتهای پروژه را انجام دهد که خود مجری آنهاست. بهعبارتدیگر بهترین پیشبینی را کسی میتواند ارائه کند که دربارهی چگونگی انجام کار اطلاعات کامل و یا در انجام کار مشابه سابقه داشته باشد. بنابراین تربیت و آموزش شخصی در سازمان بهعنوان یک برآورد کنندهی حرفهای در بلندمدت مؤثر نخواهد بود؛ زیرا این شخص بهتدریج با دور شدن از روند اجرای کار، قابلیتهای فنی خود را در برآورد صحیح از دست خواهد داد.
ازاینرو بهترین برآورد کنندهی فعالیتهای یک پروژهی نرمافزاری مدیر یا مدیر فنی پروژه خواهد بود. از سوی دیگر، یک مسئول تماموقت برای ارزیابی برآوردها و تعدیل آنها لازم است تا از طرفی با کنترل برآوردهای کنونی، پروژه را در مسیر درست خود هدایت کند و از سوی دیگر با مستندسازی و نگهداری برآوردها، اطلاعات تاریخچهای معتبری برای برآوردهای بعدی فراهم کند. مسئولیت این شخص کنترل اعتبار برآوردهای انجامشده، کنترل یکپارچگی و هماهنگی این برآوردها با برآوردهای بعدی و قبلی و تأمین تاریخچهای معتبر برای برآوردهای بعدی است.
بهترین زمان برای برآورد پروژه چه موقع است؟
دومین قانون به این سؤال پاسخ خواهد داد.
قانون ۲: حجم پروژه همیشه قابل برآورد است.
درست است که در ابتدای پروژه بسیاری مسائل مانند هدف پروژه، نیازمندیهای غیر کارکردی موردنظر، سکوهای موردنظر، روش مورداستفاده، زبان برنامهنویسی، تعداد آزمایشهای لازم و بسیاری دیگر، مشخص و شفاف نیستند اما همواره عددی قابلارائه است و بهتدریج بهدقت این عدد اضافه خواهد شد.
شیوههای خوب برآورد: به چهار روش میتوان برآورد را انجام داد:
قضاوت افراد باتجربه: استفاده از افراد خبره در ارائهی برآورد فعالیتها.
مقایسه: مقایسه پروژهی موردنظر با سایر پروژههای مشابه.
پایین به بالا: شکستن کار به اجزای کوچکتر، برآورد هریک از اجزا و سپس جمع زدن برآوردها باهم.
محاسبه ریاضی: استفاده از مدلهای محاسباتی برای به دست آوردن برآورد حجم کار. در این روش مقادیری که نشاندهندهی ویژگیهای پروژه هستند، در معادلاتی وارد میشوند که نتیجهی این معادلات برآورد اندازه پروژه در واحد زمان یا هزینه است.
نکته مهم استفاده از ضرایب تعدیل در برآوردها است. هر برآوردی از دو بخش تشکیلشده است: عدد پایه و ضریب تعدیل. برای مثال برآورد ۲۰ روز پایه و ضریب تعدیل ۵۰% برای یک فعالیت به این معنا است که این فعالیت دستکم (در بهترین حالت) در مدت ۲۰ روز انجام خواهد شد و بیشترین زمان لازم برای انجام آن ۳۰ روز خواهد بود. ملاحظات مربوط به خطا و ریسکپذیری در ضریب تعدیل لحاظ خواهد شد و نه در عدد پایه. بهعبارتدیگر یکی از عوامل مؤثر در محاسبه ضریب تعدیل، ریسکهای اجراست.
قانون ۳: هر برآوردی باید ضریب تعدیل داشته باشد.
بهطور منطقی در هر برآورد باید گامهای زیر پیموده شود:
- تهیه فهرستی از فعالیتهایی که باید تخمین زده شوند.
- برآورد هر یک از فعالیتهای فهرست بندی شده.
- جمعکردن تمام آن برآوردها.
- اضافه کردن ضریب تعدیل.
برای انجام برآورد درست ابتدا باید مواردی که نیازمند برآورد هستند مشخص و تعریف شوند. در اکثر مواقع خطا در برآورد نهفقط به علت محاسبات غلط بلکه به علت از قلم افتادن برخی فعالیتها یا ریسکها بروز میکند.
بنابراین به قانون چهارمی نیاز خواهیم داشت…
قانون ۴: تهیهی فهرستی از اقلام نیازمندِ برآورد، بهمراتب مشکلتر از برآورد آنها است.
اقلام نیازمندِ برآورد میتوانند اقدام به خرید یا تولید نرمافزار، مدیریت پروژه، مدیریت فنی، تهیه سختافزار، اخذ گواهینامهها و یا استخدام پیمانکاران یا به عبارت کلیتر، تمام عوامل هزینهبر سیستم باشند. بنابراین آشنایی با پروژه اهمیت زیادی دارد.
قانون ۵:کیفیت برآورد نهایی به آشنایی با پروژه وابستگی زیادی دارد.
فکر میکنید نیاز به شرح بیشتر داریم!؟ 🙂
قانون ۶: هر چه قدر جزئیات اقلام نیازمندِ برآورد را بیشتر کنید، دیرتر به عددی مشخصی میرسید.
اقلام نیازمندِ برآورد باید تا سطح معناداری شکسته شوند. نه آنقدر جزئی باشند که برای برآورد به زمان زیادی نیاز داشته باشند و نه آنقدر کلی که دقت برآورد را کاهش دهند.
بعضی فعالیتهای پشتیبانی که بهطور مستقیم در تولید وارد نمیشوند، در حالت عادی فراموش میشوند و باید دراینباره بسیار دقت کرد. پس از تهیهی فهرست اقلام نیازمند برآورد، نوبت انجام خود برآورد میرسد.
برای انجام برآورد به قوانین دیگری نیازمندیم…
قانون ۷: مفروضات خود را ثبت کنید. با نوشتن مفروضات، دقت و شرایط برآورد معلوم میشود.
مفروضات میتوانند به دستهای خاص از فعالیتها مربوط بوده و یا بر کل پروژه حاکم باشند. مانند دسترسی به منابع در زمانهای مشخص یا ثابت ماندن نیازمندیهای پروژه. حال باید ریسکهای پروژه هم شناسایی شوند تا بتوان ضریب تعدیل را تعریف کرد.
قانون ۸: ضریب برآورد بهصورت نسبی و با توجه به ریسکها تعریف میشود.
اکنون برآورد اقلامی که به همراه مفروضات و ریسکها بهدقت شناسایی و فهرست شدهاند، امکانپذیر است. دراینبین به خاطر داشتن قانون شماره ۹ از اهمیت بالایی برخوردار است…
قانون ۹: هیچ روش جامع و کاملی برای برآورد حجم وجود ندارد.
اگر روش کاملی وجود داشت، همه از آن استفاده میکردند، همهی پروژهها بهموقع انجام میشدند و به مباحث پیچیده نیازی نبود. تمام روشهای موجود، به برآورد کنندهها کمک میکنند تا نسبت به برآوردهای خود اعتماد بیشتری داشته باشند.
یک روش متداول، برآورد حجم بر اساس احساس شخص برآورد کننده است. در این حالت از هیچ مدل ریاضی استفاده نمیشود و شخص برآورد کننده بر اساس برگ خریدهایی مانند اندازهی و پیچیدگی فعالیت، میزان آشنایی با فعالیت و کل پروژه، مهارتها و دانش گروه انجام دهندهی کار و غیره، برآورد را انجام میدهد.
برآورد نسبی بر اساس یک فعالیت پایه، روش دیگر برآورد است. در این روش که محبوبیت خاصی دارد، حجمی شاخص برای یکی از اقلام در نظر گرفتهشده و برآورد سایر فعالیتها در مقایسه با آن تعریف میشود.
برای برآورد حجم پروژه میتوان از مدلهای محاسباتی مانند COCOMO یا FPA و ابزارهایی که بر پایهی این روشها تهیهشدهاند، استفاده کرد.
مرحلهی بعدی، برآورد مدتزمان یا طول پروژه و بهعبارتدیگر برنامهریزی پروژه است.
قانون ۱۰: کسی غیر از برآورد کنندهی ابتدایی باید برآوردهای صورت گرفته را مرور کند.
اگر برای مرور، شخص دیگری با مسئولیت مستقل وجود ندارد، باید ریسکی به سایر ریسکها اضافه شود. درنهایت پس از اجرای پروژه باید برآوردها بهصورت طبقهبندیشده نگهداری شوند تا در صورت نیاز در تحلیلهای بعدی مورداستفاده قرار گیرند.
قانون ۱۱: اطلاعات پروژهی خاتمه یافته باید نگهداری شوند.
همه میدانیم که تجربیات و گزارشها انجام یک پروژه میتواند راهگشای اجرای پروژههای بعدی باشد.
منبع: سهیل صمدزاده مهندسی نرمافزار، ویترین