عناوين



 اخبار


برگزیده


امنيت


مقاله


گزارش و گفتگو


ياداشت


اخبار شرکتها


همايشها



فراخوانها و آئين نامه ها


عکس و ویدئو

 
  خدمات



نسخه موبایل



خروجی پیامک



خروجی RSS



عضویت در خبرنامه ها

 

راهنما
تبليغات


 

سفارش آگهی
مقاله
یکشنبه، 9 اسفندماه 1383

03:40 PM

February 27, 2005


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

نویسنده: بیتا باقرى
ناشر: همکاران سیستم


این مقاله به طور عمده از كتاب - IT Project Estimation-A Practical Guide to the Costing of Software اقتباس شده است و سعى بر ارائه كلیاتى از تجربه و توصیه یك برآورد كننده حرفه اى، دارد.



صنعت نرم‌افزار در سال‌هاى اخیر شكوفایى قابل توجهى داشته و به سمت "دست‌یابى" روش‌مند به اهداف و "مهندسى" در حركت بوده است. مدیریت پروژه‌هاى نرم‌افزارى و محیطى كه این پروژه‌ها در آن اجرا مى‌شوند، نیازمند دانش مجرد است؛ حقایقى كه از طریق مشاهده و اندازه‌گیرى به دست مى‌آیند.Tom DeMarco در این باره مى‌گوید: "آن‌چه را كه قابل اندازه‌گیرى نیست، نمى‌توان كنترل و مدیریت كرد."


برآورد اندازه‌ى پروژه به 3 دلیل عمده، ضرورى به نظر مى‌رسد:


1- به منظور تعدیل پروژه: مقایسه‌ى هزینه و سود پروژه و ارزیابى‌هاى "اگر –آن‌گاهى" براى انتخاب بین گزینه‌هاى كاركردى، محیطى و تكنیكى مختلف.


2- به عنوان بخش جدا نشدنى نظم مهندسى نرم‌افزار. در پروژه‌هاى تولید نرم‌افزار بر خلاف سایر پروژه‌ها (براى مثال پروژه‌هاى ساختمانى) در هر زمان از كار ممكن است كه اجزاى بنیادین پروژه تغییر كند، در نتیجه باید روشى براى كنترل این تغییرات و اثرات آن‌ها وجود داشته باشد. به گونه‌اى كه در نهایت این تغییرات به شكست پروژه منجر نشوند.


3- بهبود فرآیندهاى تولید نرم‌افزار و ارزیابى تاثیرهاى بهبود فرآیند بر كیفیت محصول.



آیا پروژه‌هاى نرم‌افزارى، مشابه سایر پروژه‌ها قابل تخمین هستند؟


مطابق نظر [1]Paul Coombs دوازده قانون كور ولى بدیهى در تخمین وجود دارد، اولین و مهم‌ترین این قانون‌ها، به شرح زیر است:


 


قانون 1: تخمین‌هاى شما اشتباه خواهند بود.


چه‌گونه مى‌تواند غیر از این باشد وقتى شما قرار است آینده را پیش‌گویى كنید! به ویژه در پروژه‌هاى نرم‌افزارى كه عوامل تاثیرگذار بر آن‌ها بسیار زیاد است. بنابراین مدیران، مشتریان یا كارفرمایان هرگز نباید انتظار داشته باشند كه تمام برآوردها دقیق و بى‌نقص باشند.


اما مى‌توان با واقع‌بینى در كار احتمال اشتباه در برآوردها را به حداقل رساند. هرگز نباید در برآوردها بسیار بدبین یا بسیار خوش‌بین بود. یادآورى این نكته ضرورى است كه هر دونوع تخمین خوش‌بینانه (Under Estimation) و بدبینانه (Over Estimation) معایبى مانند دست‌ نیافتن به بازار (در حالت بدبینانه) و از دست دادن بازار (در حالت خوش بینانه) را به همراه دارند كه در در بازار رقابتى پذیرفته نیست.


 


چه كسى باید تخمین را انجام دهد؟


در بهترین حالت كسى باید تخمین فعالیت‌هاى پروژه را انجام دهد كه خود مجرى آن‌هاست. به عبارت دیگر بهترین برآورد را كسى انجام مى‌دهد كه درباره‌ى چه‌گونگى انجام كار اطلاعات كامل و یا در انجام كار مشابه سابقه داشته باشد، بنابراین تعیین و آموزش شخصى به عنوان تخمین‌زننده‌ى حرفه‌اى در بلند مدت موثر نخواهد بود؛ زیرا این شخص به تدریج با دور شدن از روند اجراى كار، قابلیت‌هاى فنى خود را در تخمین از دست خواهد داد.


از این رو بهترین تخمین‌زننده‌ى فعالیت‌هاى یك پروژه‌ى نرم‌افزارى مدیر یا مدیر فنى پروژه خواهد بود. از سوى دیگر، یك مسوول تمام‌وقت براى ارزیابى تخمین‌ها و تعدیل آن‌ها لازم است. تا از یك سو با كنترل برآوردهاى كنونى پروژه را در مسیر درست خود هدایت كند و از سوى دیگر با مستند سازى و نگه‌دارى برآوردها، اطلاعات تاریخچه‌اى معتبرى براى تخمین‌هاى بعدى فراهم كند. مسوولیت این شخص كنترل اعتبار تخمین‌هاى انجام شده، كنترل یكپارچگى و هماهنگى این تخمین‌ها با تخمین‌هاى بعدى و قبلى و تامین اطلاعات تاریخچه‌اى معتبر براى تخمین‌هاى بعدى است.


بهترین زمان براى تخمین پروژه چه موقعى است؟


دومین قانون تخمین به این سوال پاسخ خواهد داد:


 


قانون 2: اندازه‌ى پروژه در هر زمان قابل تخمین است.


درست است كه در ابتداى پروژه بسیارى مسایل مانند هدف پروژه، نیازمندى‌هاى غیر كاركردى مورد نظر، Platform مورد نظر، روش مورد استفاده، زبان برنامه نویسى ،تعداد آزمایش‌هاى لازم و ... مشخص و شفاف نیستند اما همواره عددى قابل ارایه است و به تدریج به دقت این عدد اضافه خواهد شد.



تكنیك‌هاى تخمین:


به چهار روش مى‌توان تخمین را انجام داد:


1- قضاوت افراد با تجربه: استفاده از افراد خبره در ارایه‌ى تخمین فعالیت‌ها.


2- مقایسه: مقایسه پروژه‌ى مورد نظر با سایر پروژه‌هاى مشابه.


3- پایین به بالا: شكستن كار به اجزاى كوچك‌تر، تخمین هریك از اجزا و سپس جمع زدن تخمین‌ها با هم.


4- محاسبه ریاضى: استفاده از مدل‌هاى محاسباتى براى به دست آوردن برآورد اندازه‌ى كار. در این روش مقادیرى كه نشان دهنده‌ى ویژگى‌هاى پروژه هستند، در معادلاتى وارد مى‌شوند كه نتیجه‌ى این معادلات تخمین اندازه پروژه در قالب زمان یا هزینه است.



نكته مهم استفاده از ضرایب تعدیل در تخمین‌هاست. هر تخمینى از دو بخش تشكیل شده است؛ عدد پایه و ضریب تعدیل. براى مثال تخمین پایه‌ى 20 روز و ضریب تعدیل 50% براى یك فعالیت؛ به این معناست كه این فعالیت دست پایین (در بهترین حالت) در مدت 20 روز انجام خواهد شد و بیش‌ترین زمان لازم براى انجام آن 30 روز خواهد بود. مقوله‌ى "ریسك" در ضریب تعدیل لحاظ خواهد شد، نه در عدد پایه. به عبارت دیگر یكى از عوامل موثر در تعریف ضریب تعدیل، ریسك‌هاى اجراست.



قانون 3: هر تخمینى باید ضریب تعدیل داشته باشد.


به طور منطقى در هر تخمین باید گام‌هاى زیر پیموده شود:


1- تهیه فهرستى از فعالیت‌هایى كه باید تخمین زده شوند.


2- تخمین هر یك از فعالیت‌هاى فهرست‌بندى شده.


3- جمع كردن تمام آن تخمین‌ها.


4- اضافه كردن ضریب تعدیل.


براى انجام تخمین درست ابتدا باید مواردى كه نیازمند تخمین هستند مشخص و تعریف شوند. ریسك تخمین نه فقط اشكال در محاسبه تخمین است بلكه در اكثر مواقع اشكال در تخمین به علت فراموش كردن تخمین بعضى فعالیت ها یا ریسك هاست. بنابراین:


 


قانون 4: تهیه‌ى فهرستى از اقلام نیازمند تخمین به مراتب مشكل‌تر از تخمین آن‌هاست.


اقلام نیازمند تخمین مى‌توانند نرم‌افزار، مدیریت پروژه، مدیریت فنى، سخت‌افزار، گواهى‌نامه‌ها و پیمان‌كاران یا به عبارت دیگر تمام عوامل هزینه‌ى سیستم باشند. بنابراین آشنایى با پروژه اهمیت زیادى دارد.


قانون 5:كیفیت تخمین به آشنایى با پروژه مورد نظر وابستگى زیادى دارد.


قانون6: هر چه‌قدر جزییات اقلام نیازمند تخمین را بیش‌تر كنید، دیرتر به عدد مشخص تخمین مى‌رسید.


اقلام نیازمند تخمین باید تا سطح معنادارى شكسته شوند. نه آن‌قدر جزیى باشند كه براى تخمین به زمان زیادى نیاز داشته باشند و نه آن‌قدر كلى كه دقت تخمین را كاهش دهند.


بعضى فعالیت‌هاى پشتیبانى كه به طور مستقیم در تولید وارد نمى‌شوند، در حالت عادى فراموش مى‌شوند و باید در این باره بسیار دقت كرد.


پس از تهیه‌ى فهرست اقلام نیازمند تخمین نوبت انجام تخمین است. براى انجام عمل تخمین ابتدا:



قانون 7: مفروضات خود را ثبت كنید.


با نوشتن مفروضات لحاظ شده، دقت و شرایط تخمین معلوم مى‌شود. مفروضات مى‌توانند به دسته‌اى خاص از فعالیت‌ها مربوط و یا در كل پروژه حاكم باشند، مانند دست‌رسى به منابع در زمان‌هاى مشخص یا ثبات نیازمندى‌هاى مورد نظر پروژه.


حال باید ریسك‌هاى پروژه هم تعریف شوند تا بتوان ضریب تعدیل را تعریف كرد.


قانون 8: ضریب تخمین به صورت نسبتى با استفاده از ریسك‌ها تعریف مى‌شود.


اكنون تخمین اقلامى كه به همراه مفروضات و ریسك‌ها به دقت شناسایى و فهرست شده‌اند، امكان‌پذیر است. به خاطر داشتن این نكته بسیار ضرورى است كه:


 


قانون 9: هیچ روش كامل و جامعى وجود ندارد.


اگر روش كاملى وجود داشت، همه از آن استفاده مى‌كردند، همه‌ى پروژه‌ها به موقع انجام مى‌شدند و به مباحث پیچیده نیازى نبود. تمام روش‌هاى موجود، به تخمین زننده‌ها كمك مى‌كنند تا نسبت به تخمین‌هاى خود اعتماد بیش‌ترى داشته باشند.


یك روش متداول، تخمین براساس احساس تخمین‌زننده است. در این حالت از هیچ مدل ریاضى استفاده نمى‌شود و تخمین‌زننده براساس فاكتورهایى مانند اندازه‌ى فعالیت، پیچیدگى فعالیت، میزان آشنایى با فعالیت مورد نظر و كل پروژه، مهارت‌ها و دانش تیم انجام دهنده‌ى كار و ... عمل تخمین را انجام مى‌دهد.


تخمین براساس یك فعالیت پایه‌ى روش دیگر تخمین است. در این روش زمانى مشخص براى نوع خاصى از فعالیت در نظر گرفته مى‌شود و تخمین اندازه‌ى سایر فعالیت‌ها در مقایسه با آن فعالیت تعریف مى‌شود.


براى تخمین اندازه‌ى پروژه مى‌توان از مدل‌هاى محاسباتى مانند Function Point Analysis ,COCOMO و ابزارهایى كه بر پایه‌ى این روش‌ها تهیه شده‌اند، استفاده كرد.


مرحله‌ى بعدى تخمین مدت زمان یا طول پروژه و به عبارت دیگر برنامه‌ریزى پروژه است.



قانون 10: طول پروژه به ماه باید بزرگ‌تر از متوسط تعداد افراد تیم باشد.


براساس تخمین هر یك از فعالیت‌ها و به همراه سایر تكنیك‌هاى برنامه‌ریزى، پروژه‌ى زمان‌بندى پروژه تهیه مى‌شود.


قبل از ارسال تخمین‌ها براى مرور، باید یكپارچگى و هم‌خوانى آن‌ها با یكدیگر دوباره كنترل و از درستى آن‌ها اطمینان حاصل شود.


 


قانون 11: كسى غیر از تخمین‌زننده‌ى اول باید تخمین‌ها را مرور كند.


اگر براى مرور شخص دیگرى با مسوولیت مستقل وجود ندارد، باید ریسكى به سایر ریسك‌ها اضافه شود.


در نهایت پس از اجراى پروژه باید تخمین‌ها نگه‌دارى شوند تا در تحلیل‌هاى بعدى مورد استفاده قرار گیرند.



قانون 12: اطلاعات پروژه‌ى خاتمه یافته باید نگه‌دارى شوند.


 


به عبارت دیگر گزارش انجام یك پروژه مى‌تواند راه‌گشاى اجراى پروژه‌هاى بعدى باشد.


 


[1] - IT Project Estimation-A practical Guide to the Costing of Software




لینک ثابت || اضافه شده توسط آرش کریم بیگی|| نسخه قابل چاپ || بازگشت به صفحه اصلی || آرش کریم بیگی

برای عضویت در خبرنامه پیامکی ایستنا اینجا را کلیک کنید. برای عضوریت در خبرنامه روزانه ایمیلی ایستنا؛ نشانی پست الکترونیکی خود را در فرم زیر وارد نمایید. پس از آن به صورت خودکار ایمیلی به نشانی شما ارسال میشود، برای تکمیل عضویت خود و تایید صحت نشانی پست الکترونیک وارد شده، می بایست بر روی لینکی که در این ایمیل برایتان ارسال شده کلیک نمایید. پس از آن پیامی مبنی بر تکمیل عضویت شما در خبرنامه روزانه  ایمیلی ایستنا نمایش داده میشود.


فهرست آخرین عناوین

 
    تبليغات  
 







 
  سفارش آگهی