پنجشنبه, ۳۰ فروردین, ۱۴۰۳ / 18 April, 2024
مجله ویستا


برآورد اندازه‌ پروژه‌های نرم‌افزاری


برآورد اندازه‌ پروژه‌های نرم‌افزاری
صنعت نرم‌افزار در سال‌های اخیر شکوفایی قابل توجهی داشته و به سمت "دست‌یابی" روش‌مند به اهداف و "مهندسی" در حرکت بوده است. مدیریت پروژه‌های نرم‌افزاری و محیطی که این پروژه‌ها در آن اجرا می‌شوند، نیازمند دانش مجرد است؛ حقایقی که از طریق مشاهده و اندازه‌گیری به دست می‌آیند.Tom DeMarco در این باره می‌گوید: "آن‌چه را که قابل اندازه‌گیری نیست، نمی‌توان کنترل و مدیریت کرد."
● برآورد اندازه‌ی پروژه به ۳ دلیل عمده، ضروری به نظر می‌رسد:
۱) به منظور تعدیل پروژه: مقایسه‌ی هزینه و سود پروژه و ارزیابی‌های "اگر –آن‌گاهی" برای انتخاب بین گزینه‌های کارکردی، محیطی و تکنیکی مختلف.
۲ ) به عنوان بخش جدا نشدنی نظم مهندسی نرم‌افزار. در پروژه‌های تولید نرم‌افزار بر خلاف سایر پروژه‌ها (برای مثال پروژه‌های ساختمانی) در هر زمان از کار ممکن است که اجزای بنیادین پروژه تغییر کند، در نتیجه باید روشی برای کنترل این تغییرات و اثرات آن‌ها وجود داشته باشد. به گونه‌ای که در نهایت این تغییرات به شکست پروژه منجر نشوند.
۳) بهبود فرآیندهای تولید نرم‌افزار و ارزیابی تاثیرهای بهبود فرآیند بر کیفیت محصول.
● آیا پروژه‌های نرم‌افزاری، مشابه سایر پروژه‌ها قابل تخمین هستند؟
▪ مطابق نظر [۱]Paul Coombs دوازده قانون کور ولی بدیهی در تخمین وجود دارد، اولین و مهم‌ترین این قانون‌ها، به شرح زیر است:
۱) قانون ۱: تخمین‌های شما اشتباه خواهند بود.
چه‌گونه می‌تواند غیر از این باشد وقتی شما قرار است آینده را پیش‌گویی کنید! به ویژه در پروژه‌های نرم‌افزاری که عوامل تاثیرگذار بر آن‌ها بسیار زیاد است. بنابراین مدیران، مشتریان یا کارفرمایان هرگز نباید انتظار داشته باشند که تمام برآوردها دقیق و بی‌نقص باشند.
اما می‌توان با واقع‌بینی در کار احتمال اشتباه در برآوردها را به حداقل رساند. هرگز نباید در برآوردها بسیار بدبین یا بسیار خوش‌بین بود. یادآوری این نکته ضروری است که هر دونوع تخمین خوش‌بینانه (Under Estimation) و بدبینانه (Over Estimation) معایبی مانند دست‌ نیافتن به بازار (در حالت بدبینانه) و از دست دادن بازار (در حالت خوش بینانه) را به همراه دارند که در در بازار رقابتی پذیرفته نیست.
▪ چه کسی باید تخمین را انجام دهد؟
در بهترین حالت کسی باید تخمین فعالیت‌های پروژه را انجام دهد که خود مجری آن‌هاست. به عبارت دیگر بهترین برآورد را کسی انجام می‌دهد که درباره‌ی چه‌گونگی انجام کار اطلاعات کامل و یا در انجام کار مشابه سابقه داشته باشد، بنابراین تعیین و آموزش شخصی به عنوان تخمین‌زننده‌ی حرفه‌ای در بلند مدت موثر نخواهد بود؛ زیرا این شخص به تدریج با دور شدن از روند اجرای کار، قابلیت‌های فنی خود را در تخمین از دست خواهد داد.
از این رو بهترین تخمین‌زننده‌ی فعالیت‌های یک پروژه‌ی نرم‌افزاری مدیر یا مدیر فنی پروژه خواهد بود. از سوی دیگر، یک مسوول تمام‌وقت برای ارزیابی تخمین‌ها و تعدیل آن‌ها لازم است. تا از یک سو با کنترل برآوردهای کنونی پروژه را در مسیر درست خود هدایت کند و از سوی دیگر با مستند سازی و نگه‌داری برآوردها، اطلاعات تاریخچه‌ای معتبری برای تخمین‌های بعدی فراهم کند. مسوولیت این شخص کنترل اعتبار تخمین‌های انجام شده، کنترل یکپارچگی و هماهنگی این تخمین‌ها با تخمین‌های بعدی و قبلی و تامین اطلاعات تاریخچه‌ای معتبر برای تخمین‌های بعدی است.
بهترین زمان برای تخمین پروژه چه موقعی است؟
دومین قانون تخمین به این سوال پاسخ خواهد داد:
۲) قانون ۲: اندازه‌ی پروژه در هر زمان قابل تخمین است.
درست است که در ابتدای پروژه بسیاری مسایل مانند هدف پروژه، نیازمندی‌های غیر کارکردی مورد نظر، Platform مورد نظر، روش مورد استفاده، زبان برنامه نویسی ،تعداد آزمایش‌های لازم و ... مشخص و شفاف نیستند اما همواره عددی قابل ارایه است و به تدریج به دقت این عدد اضافه خواهد شد.
▪ تکنیک‌های تخمین:
به چهار روش می‌توان تخمین را انجام داد:
۱) قضاوت افراد با تجربه: استفاده از افراد خبره در ارایه‌ی تخمین فعالیت‌ها.
۲) مقایسه: مقایسه پروژه‌ی مورد نظر با سایر پروژه‌های مشابه.
۳) پایین به بالا: شکستن کار به اجزای کوچک‌تر، تخمین هریک از اجزا و سپس جمع زدن تخمین‌ها با هم.
۴) محاسبه ریاضی: استفاده از مدل‌های محاسباتی برای به دست آوردن برآورد اندازه‌ی کار. در این روش مقادیری که نشان دهنده‌ی ویژگی‌های پروژه هستند، در معادلاتی وارد می‌شوند که نتیجه‌ی این معادلات تخمین اندازه پروژه در قالب زمان یا هزینه است.
نکته مهم استفاده از ضرایب تعدیل در تخمین‌هاست. هر تخمینی از دو بخش تشکیل شده است؛ عدد پایه و ضریب تعدیل. برای مثال تخمین پایه‌ی ۲۰ روز و ضریب تعدیل ۵۰% برای یک فعالیت؛ به این معناست که این فعالیت دست پایین (در بهترین حالت) در مدت ۲۰ روز انجام خواهد شد و بیش‌ترین زمان لازم برای انجام آن ۳۰ روز خواهد بود. مقوله‌ی "ریسک" در ضریب تعدیل لحاظ خواهد شد، نه در عدد پایه. به عبارت دیگر یکی از عوامل موثر در تعریف ضریب تعدیل، ریسک‌های اجراست.
۳) قانون ۳: هر تخمینی باید ضریب تعدیل داشته باشد.
به طور منطقی در هر تخمین باید گام‌های زیر پیموده شود:
۱) تهیه فهرستی از فعالیت‌هایی که باید تخمین زده شوند.
۲) تخمین هر یک از فعالیت‌های فهرست‌بندی شده.
۳) جمع کردن تمام آن تخمین‌ها.
۴) اضافه کردن ضریب تعدیل.
برای انجام تخمین درست ابتدا باید مواردی که نیازمند تخمین هستند مشخص و تعریف شوند. ریسک تخمین نه فقط اشکال در محاسبه تخمین است بلکه در اکثر مواقع اشکال در تخمین به علت فراموش کردن تخمین بعضی فعالیت ها یا ریسک هاست. بنابراین:
۴) قانون ۴: تهیه‌ی فهرستی از اقلام نیازمند تخمین به مراتب مشکل‌تر از تخمین آن‌هاست.
اقلام نیازمند تخمین می‌توانند نرم‌افزار، مدیریت پروژه، مدیریت فنی، سخت‌افزار، گواهی‌نامه‌ها و پیمان‌کاران یا به عبارت دیگر تمام عوامل هزینه‌ی سیستم باشند. بنابراین آشنایی با پروژه اهمیت زیادی دارد.
۵) قانون ۵:کیفیت تخمین به آشنایی با پروژه مورد نظر وابستگی زیادی دارد.
۶) قانون۶: هر چه‌قدر جزییات اقلام نیازمند تخمین را بیش‌تر کنید، دیرتر به عدد مشخص تخمین می‌رسید.
اقلام نیازمند تخمین باید تا سطح معناداری شکسته شوند. نه آن‌قدر جزیی باشند که برای تخمین به زمان زیادی نیاز داشته باشند و نه آن‌قدر کلی که دقت تخمین را کاهش دهند.
بعضی فعالیت‌های پشتیبانی که به طور مستقیم در تولید وارد نمی‌شوند، در حالت عادی فراموش می‌شوند و باید در این باره بسیار دقت کرد.
پس از تهیه‌ی فهرست اقلام نیازمند تخمین نوبت انجام تخمین است. برای انجام عمل تخمین ابتدا:
۷) قانون ۷: مفروضات خود را ثبت کنید.
با نوشتن مفروضات لحاظ شده، دقت و شرایط تخمین معلوم می‌شود. مفروضات می‌توانند به دسته‌ای خاص از فعالیت‌ها مربوط و یا در کل پروژه حاکم باشند، مانند دست‌رسی به منابع در زمان‌های مشخص یا ثبات نیازمندی‌های مورد نظر پروژه.
حال باید ریسک‌های پروژه هم تعریف شوند تا بتوان ضریب تعدیل را تعریف کرد.
۸) قانون ۸: ضریب تخمین به صورت نسبتی با استفاده از ریسک‌ها تعریف می‌شود.
اکنون تخمین اقلامی که به همراه مفروضات و ریسک‌ها به دقت شناسایی و فهرست شده‌اند، امکان‌پذیر است. به خاطر داشتن این نکته بسیار ضروری است که:
۹) قانون ۹: هیچ روش کامل و جامعی وجود ندارد.
اگر روش کاملی وجود داشت، همه از آن استفاده می‌کردند، همه‌ی پروژه‌ها به موقع انجام می‌شدند و به مباحث پیچیده نیازی نبود. تمام روش‌های موجود، به تخمین زننده‌ها کمک می‌کنند تا نسبت به تخمین‌های خود اعتماد بیش‌تری داشته باشند.
یک روش متداول، تخمین براساس احساس تخمین‌زننده است. در این حالت از هیچ مدل ریاضی استفاده نمی‌شود و تخمین‌زننده براساس فاکتورهایی مانند اندازه‌ی فعالیت، پیچیدگی فعالیت، میزان آشنایی با فعالیت مورد نظر و کل پروژه، مهارت‌ها و دانش تیم انجام دهنده‌ی کار و ... عمل تخمین را انجام می‌دهد.
تخمین براساس یک فعالیت پایه‌ی روش دیگر تخمین است. در این روش زمانی مشخص برای نوع خاصی از فعالیت در نظر گرفته می‌شود و تخمین اندازه‌ی سایر فعالیت‌ها در مقایسه با آن فعالیت تعریف می‌شود.
برای تخمین اندازه‌ی پروژه می‌توان از مدل‌های محاسباتی مانند Function Point Analysis ,COCOMO و ابزارهایی که بر پایه‌ی این روش‌ها تهیه شده‌اند، استفاده کرد.
مرحله‌ی بعدی تخمین مدت زمان یا طول پروژه و به عبارت دیگر برنامه‌ریزی پروژه است.
۱۲۰) قانون ۱۰: طول پروژه به ماه باید بزرگ‌تر از متوسط تعداد افراد تیم باشد.
براساس تخمین هر یک از فعالیت‌ها و به همراه سایر تکنیک‌های برنامه‌ریزی، پروژه‌ی زمان‌بندی پروژه تهیه می‌شود.
قبل از ارسال تخمین‌ها برای مرور، باید یکپارچگی و هم‌خوانی آن‌ها با یکدیگر دوباره کنترل و از درستی آن‌ها اطمینان حاصل شود.
۱۱) قانون ۱۱: کسی غیر از تخمین‌زننده‌ی اول باید تخمین‌ها را مرور کند.
اگر برای مرور شخص دیگری با مسوولیت مستقل وجود ندارد، باید ریسکی به سایر ریسک‌ها اضافه شود.
در نهایت پس از اجرای پروژه باید تخمین‌ها نگه‌داری شوند تا در تحلیل‌های بعدی مورد استفاده قرار گیرند.
۱۲) قانون ۱۲: اطلاعات پروژه‌ی خاتمه یافته باید نگه‌داری شوند.
به عبارت دیگر گزارش انجام یک پروژه می‌تواند راه‌گشای اجرای پروژه‌های بعدی باشد.
منبع: همکاران سیستم
این مقاله به طور عمده از کتاب - IT Project Estimation-A Practical Guide to the Costing of Software اقتباس شده است و سعی بر ارائه کلیاتی از تجربه و توصیه یک برآورد کننده حرفه ای، دارد.
[۱] - IT Project Estimation-A practical Guide to the Costing of Software
منبع : شرکت نرم‌افزاری ایده‌تک


همچنین مشاهده کنید