به نقل از :http://www.developercenter.ir/Forum/...read.php?t=485
نمیدونم این ممد چیکار کرده با این ادیتور Ú©Ù‡ وقتی Ú©Ù¾ÛŒ پیست( Ú†Ù‡ عمل Ú©Ø«ÛŒÙÛŒ) میکنی Ùاصله ها * میخورن ! چشمتون اذیت شد به ممد ÙØØ´ بدین یا برین سراغ لینک مرجع )
نويسنده : Øميد مشر٠(كارشناس مهندسي نرم*اÙزار [email protected])
ناشر : همكاران سيستم
نمیتوان طرØÛŒ داشت اگر نتوان آن را به درستی اندازه گیری کرد Ùˆ آغاز پروژه بدون وجود Ø·Ø±Ø Ù…Ø§Ù†Ù†Ø¯ آن است Ú©Ù‡ شکست پروژه طراØÛŒ شده باشد.
پروژه*ÙŠ نرم*اÙزاری موÙÙ‚ØŒ پروژه*ای است Ú©Ù‡ در قالب هزینه Ùˆ زمانی معین Ùˆ از پیش تعیین شده به انجام برسد. نرم*اÙزار کاری تولیدی به شمار Ù…ÛŒ*رود Ú©Ù‡ هزینه*ÙŠ عمده*ÙŠ آن نیروی کارآزموده ومتخصص است. بنابراین مهم*ترین ابزار یک پروژه نرم*اÙزاری Ùˆ به طور تقريبي بخش اعظم هزینه*های آن به نیروی کار متخصص درگیر در آن مرتبط است. سوال این است Ú©Ù‡ Ú†Ù‡*گونه Ù…ÛŒ*توان زمان Ùˆ هزینه*ÙŠ یک پروژه نرم*اÙزاری را تخمین زد. ماهیت خلاق پروژه*های نرم*اÙزاری Ùˆ انتزاعی بودن آن تخمین هزینه Ùˆ زمان انجام آن*ها را بي*نهايت مشکل Ù…ÛŒ*کند. روش*های متداول تخمین زمان Ùˆ هزینه خود اساسا انتزاعی است با این همه هنوز هم تخمین پروژه امری لازم Ùˆ ضروری Ù…Øسوب Ù…ÛŒ*شود.
روش*های مختلÙÛŒ در تخمین Ùˆ برآورد Øجم Ùعالیت*های لازم در انجام یک پروژه نرم*اÙزاری در جامعه نرم*اÙزار ارايه شده است. Ùارغ از این*Ú©Ù‡ از Ú†Ù‡ روشی در تخمین زمان Ùˆ هزینه یک پروژه نرم*اÙزاری استÙاده Ù…ÛŒ*شود، مهم آن است Ú©Ù‡ بدون وجود اطلاعات کاÙÛŒ در زمینه Øوزه Ùˆ دامنه سیستم Ùˆ قابلیت*ها Ùˆ توانایی*های آن Ùˆ هم*چنین شرایط Ù…Øیطی Ùˆ Ùرهنگی تیم تولید نرم*اÙزار Ùˆ پیچیدگی*های تکنیکی آن، برآورد واقع بینانه پروژه کاری دور از دست*رس Ù…ÛŒ*نماید.
پس نخست باید اطلاعات ضروری آماده شود. نگارنده این اطلاعات را در سه دسته تقسیم کرده است:
نکته*ÙŠ مهم آن است Ú©Ù‡ در کشور ما ایران، به طور معمول قبل از انجام چنین مرØله*ای Ùˆ صرÙا بر اساس Ø´Ø±Ø Ù…Ø´Ø®ØµØ§Øª بسیار Ú©Ù„ÛŒ سیستم؛ یعنی بدون داشتن سه بخش اطلاعات كه در بالا به آن اشاره شد، زمان Ùˆ هزینه پروژه* استعلام Ùˆ برآورد Ùˆ Øتا تعیین Ù…ÛŒ*شود. چنین کاری در عمل به شکست پروژه*های نرم*اÙزاری منجر Ù…ÛŒ*شود. چرا Ú©Ù‡ در مسیر تولید سیستم به دلیل اختلا٠Ùزاینده*ای Ú©Ù‡ بین برآوردهای اولیه Ùˆ هزینه*های واقعی پروژه*ای به وجود Ù…ÛŒ*آید دو نتیجه مشخص را غیر قابل اجتناب Ù…ÛŒ*کند:
- یا هزینه تولید سیستم اÙزایش Ù…ÛŒ*یابد Ú©Ù‡ این یعنی ضرر تولیدکننده نرم*اÙزار
- Ùˆ یا سیستم با قابلیت*ها Ùˆ انتظارات ناکاÙÛŒ Ùˆ در Ú©ÛŒÙیتی نامناسب ارايه Ù…ÛŒ*شود Ùˆ این یعنی ضرر کارÙرما یا مشتری
پس Ú†Ù‡ باید کرد؟ Ú†Ù‡*گونه Ù…ÛŒ*توان اطلاعات لازم سه گانه Ùوق را به دست آورد؟ آیا استÙاه از RFP گروه اطلاعات اول را Ùراهم Ù…ÛŒ*سازد؟ به این سئوال به سختی Ù…ÛŒ*توان پاسخ داد؛ چرا Ú©Ù‡ بر Øسب آن Ú©Ù‡ RFP را Ú†Ù‡ گروهی Ùˆ با Ú†Ù‡ Ùرمت Ùˆ استانداردی تهیه کرده باشد، جواب Ù…ÛŒ*تواند متÙاوت باشد.
در این میان Øلقه*ÙŠ گمشده*ÛŒ دیگری نیز به نظر Ù…ÛŒ*آید. اجرای مرØله اول Ùرآیند برای تعیین Ùˆ برآورد واقعی*تر پروژه ضروری است، با این همه مشکل در آن است Ú©Ù‡ مشخص نیست هزینه*ÙŠ اجرای این مرØله بر عهده کارÙرما خواهد بود یا مجری؟ در صورتی Ú©Ù‡ پروژه Ø·ÛŒ قراردادی قبل از اجرای این مرØله واگذار شود، پس برآوردها تÙاوت Ùراوانی با واقعیت خواهد داشت Ùˆ در صورتی Ú©Ù‡ قرارداد پس از مرØله*ÙŠ اول Ùˆ جمع*آوری اطلاعات بسته شود، در آن صورت هزینه*ÙŠ اجرای مرØله اول بر عهده Ú†Ù‡ کسی خواهد بود؟ به همین دلیل بسیاری از پروژه*های نرم*اÙزاری در نیمه*ÙŠ راه به دلیل برآوردهای غلط به شکست Ù…ÛŒ*انجامند یا در واقع نمی*توانند نیازهای کاربران را برآورده نمایند.
همان طور Ú©Ù‡ Ú¯Ùته شد روش*های مختلÙÛŒ برای تخمین Ùˆ برآورد Øجم Ùعالیت*های لازم برای انجام یک پروژه نرم*اÙزاری معرÙÛŒ شده است. معروÙ*ترین آن*ها روش COCOMO است. از آن*جا Ú©Ù‡ قصد این نوشته ØªØ´Ø±ÛŒØ Ø§ÛŒÙ† روش نیست Ùقط به بيان این نكته بسنده Ù…ÛŒ*شود Ú©Ù‡ در این روش اساسا میزان خطوط کد لازم برای تولید برنامه بر اساس Ù…Ùهوم Function point تخمین زده شده Ùˆ بر اساس آن Øجم Ùعالیت*های لازم برای پروژه تخمین زده Ù…ÛŒ*شود.
با Ùرض این*Ú©Ù‡ نیازهای سیستم در قالب یوزکیس*ها شناسایی شده اند، متخصصین RUP نیز روش*های گوناگونی را برای تخمین هزینه Ùˆ برآوردهای واقع بینانه پروژه ارايه کرده*اند. روش دیگری Ú©Ù‡ در میانه*ÙŠ دهه*ÙŠ 1990 ارايه شد روش Use Case Point است. در این روش با تعری٠Use Case Point های سیستم Ùˆ تخصیص Ù†Ùر ساعت لازم برای پیاده*سازی آن*ها Øجم Ùعالیت لازم تخمین زده Ù…ÛŒ*شود. هر یوزکیس شامل سناریو یا سناریوهایی است. علاوه بر UseCaseهای سیستم واسطه*های ارتباطی یوزکیس با دنیای بیرون ازجمله برای مثال پنجره*های ویندوز Ùˆ یا صÙØات وب نیز وجود دارند Ú©Ù‡ طراØÛŒ Ùˆ پیاده*سازی آن خود Øجم کار قابل توجهی را Ù…ÛŒ*طلبد. بنابر این قدم اول تشخیص یوزکیس*ها Ùˆ ØªØ´Ø±ÙŠØ Ø³Ù†Ø§Ø±ÙŠÙˆÙ‡Ø§ÛŒ آن*هاست. Ùرآیند تشخیص Ùˆ ØªØ´Ø±ÛŒØ ÛŒÙˆØ²Ú©ÛŒØ³*های سیستم هر Ú†Ù‡ با دقت بیش*تری انجام شود، برآوردهای واقعی*تری را منتج خواهد بود. اما همان*طور Ú©Ù‡ کارشناسان RUP به خوبی Ù…ÛŒ*دانند، یوزکیس*ها به عنوان مدلی از Ùعالیت*های سیستم به طور كامل انتزاعی بوده Ùˆ بسته به آن*Ú©Ù‡ Ú†Ù‡ کسی Ùˆ از Ú†Ù‡ زاویه*ای آن* را Ù…ÛŒ*نویسد Ø³Ø·ÙˆØ Ùˆ پیچیدگی*های مختلÙÛŒ Ù…ÛŒ*توانند داشته باشند. برای مثال Ù…ÛŒ*توان صدور Ú†Ú© را یک یوزکیس تلقی کرد Ùˆ هم*زمان Ù…ÛŒ*توان صدور Ú†Ú© را زیرسیستمی معرÙÛŒ نمود Ú©Ù‡ خود شامل تعداد مشخصی یوزکیس است. نتیجه آن Ú©Ù‡ Ø³Ø·ÙˆØ ÛŒÙˆØ²Ú©ÛŒØ³*ها Ù…ÛŒ*توانند مختل٠باشند Ùˆ بنابراین در تعیین تعداد یوزکیس پوینت*ها باید دقت بیش*تری مبذول نمود. به هرØال بهتر است Ú©Ù‡ Ø³Ø·ÙˆØ Ø§Ù†ØªØ²Ø§Ø¹ در تمامی سیستم از یک روال ثابتی پیروی کند، در غیر این صورت باید ضریب Ø³Ø·Ø Ø§Ù†ØªØ²Ø§Ø¹ نیز در معادلات مربوط به Use Case Point در نظر گرÙته شود
یوزکیس پوینت روشی در ارزیابی Ùˆ تخمین هزینه Ùˆ زمان پروژه های نرم*اÙزاری قبل از ØªØ´Ø±ÛŒØ Ø¯Ù‚ÛŒÙ‚*تر این روش اصطلاØات خاص این روش را بهتر بشناسیم:
آن*چه خواننده باید بداند:
1. خواننده باید اطلاعات پایه را در مورد نوشتن یوزکیس داشته باشد. این مقاله توصیÙÛŒ در مورد یوزکیس*ها ارايه نداده Ùˆ تنها Ù†Øوه تخمین زمان انجام را معرÙÛŒ Ù…ÛŒ*کند. بنابراین اگر این نوشته را بدون اطلاع Ù…Ú©ÙÛŒ در مورد Ù…Ùهوم بازیگر، نقش ØŒ سناریو Ù…ÛŒ*خوانيد از آن استÙاده*ÙŠ زیادی نخواهید برد.
2. ساختار یوزکیس*ها از سازمان به سازمان Ùˆ از پروژه به پروژه متÙاوت است. چیزی Ú©Ù‡ اساسا در تخمین Ùˆ ارزیابی موثر است. این نوشته بر مبنای ساختار ارايه شده توسط Allister Mac Lin در کتاب How To Write Effective Use Case نوشته شده است. مطالعه این کتاب را به خواننده توصی٠می*کنیم.
Ù…Øدوده:
این مقاله صرÙا در مورد درکUse Case Point بوده Ùˆ اطلاعاتی درمورد Ù†Øوه نوشتن یوزکیس*ها به خواننده نمی*دهد. نوشته*ها Ùˆ مقالات بسیاری در این باب نوشته شده Ùˆ در اینترنت نیز قابل دسترس است.
تاریخچه:
روش Use Case Point مبتنی بر کارustav karner Ú©Ù‡ در سال 1993 به عنوان تز دانشگاهی ارايه شد. این روش امروزه به عنوان روش تخمین زمان Ùˆ هزینه در برخی از ابزارهای مهندسی نرم*اÙزار Ú©Ù‡ از UML برای مدل*سازی استÙاده Ù…ÛŒ*کنند، پیش*بینی شده است Ú©Ù‡ از آن جمله Ù…ÛŒ*توان به ابزار نرم*اÙزاری خوش*دست Sparx System Enterprise Architect اشاره کرد.
مراØÙ„ روش یوزکیس پروینت برای تخمین
1. تعیین UAW) Unadjusted Actor Weight ): اولین قدم دسته*بندی همه بازیگران سیستم است. در جدول زیر دسته*بندی بازیگران آمده است. ستون دوم راهنمای تصمیم گیری در مورد نوع بازیگر بوده و نشان میدهد که بازیگر باید در کدام دسته قرار می*شود. آخرین ستون نیز عامل پیچیدگی آن را نشان می*دهد.
2. تعیین UUCW ( Unadjusted Use Case Point ). مرØله دوم شمارش یوزکیس*ها Ùˆ تعیین وزن آن*ها بر Øسب تعداد سناریوها Ùˆ تعداد تراکنش*های آن*هاست.
3. تعیین مجموع UUCP (Unadjusted Use Case Point ): برای Ù…Øاسبه این مقدار از Ùرمول روبه*رو استÙاده Ù…ÛŒ*شود: مجموع UAW + مجموع UUCW = UUCP
4. Ù…Øاسبه عوامل تکنیکی Ùˆ Ù…Øیطی: آخرین قدم برای Ù…Øاسبه پیچیدگی، تعیین Ùˆ اندازه*گیری عوامل تکنیکی Ùˆ Ù…Øیطی سیستم است. عوامل تکنیکی 13 مورد شناخته شده دارند هر چند Ù…ÛŒ*توان عوامل دیگری را نیز به آن اضاÙÙ‡ نمود. به هر یک عوامل تکنیکی مقادیر 0 تا 5 نسبت داده Ù…ÛŒ*شود. مجموع عوامل تکنیکی Ùاکتور پیچیدگی تکنیکی پروژه را تعیین کرده Ùˆ با ضرب آن در ضریب پیچیدگی، میزان پیچیدگی پروژه Ù…Øاسبه Ù…ÛŒ*شود. هر عامل تکنیکی وزنی نیز دارد Ú©Ù‡ میزان تاثیر آن را مشخص Ù…ÛŒ*کند.
1. Ù…Øاسبه Ùاکتور تکنیکی
برای Ù…Øاسبه Ùاکتور تکنیکی پروژه از معادله Tfactor =T1 +T2 + …….T12+T13 استÙاده Ù…ÛŒ*گردد.
2. Ù…Øاسبه ميزان پيچيدگي تكنيكي پروژه:
میزان پیچیدگی تکنیکی پروژه با Ùرمول TCF= 0.6 +(0.01* Tfactor)Ù…Øاسبه Ù…ÛŒ*شود.
3. عامل Ù…Øیطی:
عوامل دیگری نیز هستند Ú©Ù‡ باید در نظر گرÙته شوند از جمله عوامل Ù…Øیط تولید نرم*اÙزار Ú©Ù‡ اثر مستقیم بر روی زمان Ùˆ هزینه*ÙŠ پروژه خواهد داشت.
4.مجموع عوامل Ù…Øیطی از جمع مقادیر بالا Ù…Øاسبه Ù…ÛŒ*شود:
یعنی:Efactor=SUM(e1….e8)
5.برای Ù…Øاسبه ضریب عامل Ù…Øیطی از معادله EF=1.4+(-0.03 * Efactor)استÙاده Ù…ÛŒ*شود.
6. د رنهایت مقدارAUCP (Adjusted Use Case Points ) با استÙاده از Ùرمول زیر Ù…Øاسبه Ù…ÛŒ*شود؛ یعنی AUCP=UUCP * TCF * EF
با ضرب مقدار به دست آمده در Ù†Ùر ساعت لازم برای انجام هر یوزکیس پوینت Ù†Ùر ساعت Ú©Ù„ لازم برای انجام پروژه به دست Ù…ÛŒ*آید. برای میزان Ù†Ùر ساعت لازم برای هر Use Case Point مقادیر متÙاوتی پیشنهاد شده از جمله 10ØŒ 15 Ùˆ 20 Ùˆ Øتا 30 تا 40 Ù†Ùر ساعت برای هرUse Case Point در نظر گرÙته شده است. با این همه بعضی از متخصصان بیان کرده*اند Ú©Ù‡ این عدد خود به Ùاکتورهای Ù…Øیطی مرتبط است. تجربه عملی نگارنده نشان داده Ú©Ù‡ میزان 10 تا 15 Ù†Ùر ساعت در Ù…Øیط*های کاری ما مناسب است.
مثال عملی برای تخمین زمان یک پروژه
برای نشان دادن چگونگی تخمین هزینه یک پروژه از یک مثال ساده استÙاده Ù…ÛŒ*کنیم. ابتدا Øوزه مساله:
شرکت راپیران در Øال Øاضر از روش دستی برای ثبت Ùˆ ویرایش اطلاعات مشتریان خود Ùˆ میزان اعتبار آن*ها استÙاده Ù…ÛŒ*کند. اطلاعات مشتریان به همراه اطلاعات کارت*های اعتباری آنها در دÙاتری ثبت میگردد Ùˆ سپس اطلاعات کارت اعتباری آن*ها از طریق سیستم کارت خوان Ú©Ù‡ توسط بانک در اختیار شرکت گذاشته شده کنترل Ù…ÛŒ*گردد. اطلاعات مشتریان عبارت است از:
- کد مشتری
- نام مشتری
- آدرس مشتری
- تلÙÙ† مشتری
- اطلاعات معتبر کارت اعتباری مشتری
کد مشتری برای هر مشتری یکتا بوده بنا بر این کارمند پذیرش مشتریان بصورت دستی اطلاعات را کنترل Ùˆ در دÙتر ثبت مینماید . راپیران میخواهد Ùعالیتها Ùˆ کنترلهای زیر در ثبت Ùˆ ویرایش اطلاعات مشتریانش بصورت مکانیزه انجام شود:
- کنترل یکتایی کد مشتری
- کد مشتری نباید از 8 Øر٠و عدد بیشتر باشد
- کنترل کارت اعتباری مشتری باید از طریق ارتباط سیستم با سیستم کارت خوان بانک بصورت اتوماتیک انجام شود
- طول شماره کارت اعتباری نباید بیش از 10 Øر٠یا عدد باشد
- اپراتور باید بتواند اطلاعات مشتری جدیدی را اضاÙÙ‡ کرده Ùˆ اطلاعات مشتری موجود را تغییر داده ویا آنرا Øذ٠کند
- بانک اطلاعاتی در دÙتر اطلاعات شرکت نصب شده Ùˆ تنها ورود Ùˆ ویرایش Ùˆ Øذ٠اطلاعات توسط اپراتور سیستم انجام میشود
- نرم اÙزار در Ù…ÛŒØیط ویندوز اجرا خواهد شد Ùˆ سیستم عامل ویندوز XP به اینمظور استنÙاده خواهد شد
یوزکیس ورود اطلاعات مشتری در سیستم مشتریان شرکت راپیران
الگوی ØªØ´Ø±ÛŒØ Ùˆ توصی٠یوزکیس از شخص به شخص Ùˆ از پروژه به پروژه Ùˆ از سازمان به سازمان متÙاوت است . موضوع اصلی در ترتیب Ùˆ مراØÙ„ÛŒ است Ú©Ù‡ در سناریو Ù…ÛŒ*آید.
تراکنش یوزکیس:تراکنش یوزکیس، واØد مجموعه Ùعالیت*هایی است Ú©Ù‡ به طور کامل انجام Ù…ÛŒ*شود. برای تشخیص تراکنش یوزکیس باید دید Ú©Ù‡ آیا تراکنش ارزشی تولید Ù…ÛŒ*کند. در صورتی Ú©Ù‡ یک Ùعالیت ارزشی را تولید نمی*کند نباید آن را به عنوان تراکنش یوزکیس در نظر گرÙت؛ برای مثال این*Ú©Ù‡ کاربر کامپیوتر خود را روشن Ù…ÛŒ*کند Ùˆ یا این* Ú©Ù‡ کاربر روی کلید ایجاد مشتری Ùˆ یا هر کلید دیگری در پنجره ارتباطی خود کلیک Ù…ÛŒ*کند تراکنش Ù…Øسوب نمی*شود، اما کارت اعتباری مشتری توسط یک تراکنش کنترل اعتبار بررسی Ù…ÛŒ*گردد. تعدادUse Case Point ها به طور كامل بستگی به چگونگی تعری٠بازیگران Ùˆ تراکنش*های تعری٠شده دارد . بنا براین ØªØ´Ø±ÛŒØ ÙˆØªÙˆØµÛŒÙ ÛŒÙˆØ²Ú©ÛŒØ³ ها باید ازطریق الگوها Ùˆ سرخطهای مشخصی انجام شود . بهترین راه برگزاری جلسه با تمامی اعضای تیم مسئول انجام پروژه قبل از نوشتن Ø´Ø±Ø ÛŒÙˆØ²Ú©ÛŒØ³ است. عمق ØªØ´Ø±ÛŒØ ÛŒÙˆØ²Ú©ÛŒØ³ Ù…ÛŒ*تواند تا 40 درصد روی تخمین انجام شده تاثیر گذار باشد. روش Ùˆ الگویی Ú©Ù‡ در این*جا ارايه Ù…ÛŒ*شود، تنها الگو نبوده Ùˆ تنها برای ØªØ´Ø±ÛŒØ Ù…Ø³Ø§Ù„Ù‡*ÙŠ بالا ارايه شده است.
نمیدونم این ممد چیکار کرده با این ادیتور Ú©Ù‡ وقتی Ú©Ù¾ÛŒ پیست( Ú†Ù‡ عمل Ú©Ø«ÛŒÙÛŒ) میکنی Ùاصله ها * میخورن ! چشمتون اذیت شد به ممد ÙØØ´ بدین یا برین سراغ لینک مرجع )
نويسنده : Øميد مشر٠(كارشناس مهندسي نرم*اÙزار [email protected])
ناشر : همكاران سيستم
نمیتوان طرØÛŒ داشت اگر نتوان آن را به درستی اندازه گیری کرد Ùˆ آغاز پروژه بدون وجود Ø·Ø±Ø Ù…Ø§Ù†Ù†Ø¯ آن است Ú©Ù‡ شکست پروژه طراØÛŒ شده باشد.
پروژه*ÙŠ نرم*اÙزاری موÙÙ‚ØŒ پروژه*ای است Ú©Ù‡ در قالب هزینه Ùˆ زمانی معین Ùˆ از پیش تعیین شده به انجام برسد. نرم*اÙزار کاری تولیدی به شمار Ù…ÛŒ*رود Ú©Ù‡ هزینه*ÙŠ عمده*ÙŠ آن نیروی کارآزموده ومتخصص است. بنابراین مهم*ترین ابزار یک پروژه نرم*اÙزاری Ùˆ به طور تقريبي بخش اعظم هزینه*های آن به نیروی کار متخصص درگیر در آن مرتبط است. سوال این است Ú©Ù‡ Ú†Ù‡*گونه Ù…ÛŒ*توان زمان Ùˆ هزینه*ÙŠ یک پروژه نرم*اÙزاری را تخمین زد. ماهیت خلاق پروژه*های نرم*اÙزاری Ùˆ انتزاعی بودن آن تخمین هزینه Ùˆ زمان انجام آن*ها را بي*نهايت مشکل Ù…ÛŒ*کند. روش*های متداول تخمین زمان Ùˆ هزینه خود اساسا انتزاعی است با این همه هنوز هم تخمین پروژه امری لازم Ùˆ ضروری Ù…Øسوب Ù…ÛŒ*شود.
روش*های مختلÙÛŒ در تخمین Ùˆ برآورد Øجم Ùعالیت*های لازم در انجام یک پروژه نرم*اÙزاری در جامعه نرم*اÙزار ارايه شده است. Ùارغ از این*Ú©Ù‡ از Ú†Ù‡ روشی در تخمین زمان Ùˆ هزینه یک پروژه نرم*اÙزاری استÙاده Ù…ÛŒ*شود، مهم آن است Ú©Ù‡ بدون وجود اطلاعات کاÙÛŒ در زمینه Øوزه Ùˆ دامنه سیستم Ùˆ قابلیت*ها Ùˆ توانایی*های آن Ùˆ هم*چنین شرایط Ù…Øیطی Ùˆ Ùرهنگی تیم تولید نرم*اÙزار Ùˆ پیچیدگی*های تکنیکی آن، برآورد واقع بینانه پروژه کاری دور از دست*رس Ù…ÛŒ*نماید.
پس نخست باید اطلاعات ضروری آماده شود. نگارنده این اطلاعات را در سه دسته تقسیم کرده است:
- اطلاعات مربوط به Øوزه سیستم Ùˆ نیازهای کارکردی Ùˆ غیر کارکردی آن
- اطلاعات مربوط به Ù…Øیطی Ú©Ù‡ سیستم در آن عملیاتی خواهد شد.
- اطلاعات مربوط به Ù…Øیط تولید Ùˆ توسعه سیستم
نکته*ÙŠ مهم آن است Ú©Ù‡ در کشور ما ایران، به طور معمول قبل از انجام چنین مرØله*ای Ùˆ صرÙا بر اساس Ø´Ø±Ø Ù…Ø´Ø®ØµØ§Øª بسیار Ú©Ù„ÛŒ سیستم؛ یعنی بدون داشتن سه بخش اطلاعات كه در بالا به آن اشاره شد، زمان Ùˆ هزینه پروژه* استعلام Ùˆ برآورد Ùˆ Øتا تعیین Ù…ÛŒ*شود. چنین کاری در عمل به شکست پروژه*های نرم*اÙزاری منجر Ù…ÛŒ*شود. چرا Ú©Ù‡ در مسیر تولید سیستم به دلیل اختلا٠Ùزاینده*ای Ú©Ù‡ بین برآوردهای اولیه Ùˆ هزینه*های واقعی پروژه*ای به وجود Ù…ÛŒ*آید دو نتیجه مشخص را غیر قابل اجتناب Ù…ÛŒ*کند:
- یا هزینه تولید سیستم اÙزایش Ù…ÛŒ*یابد Ú©Ù‡ این یعنی ضرر تولیدکننده نرم*اÙزار
- Ùˆ یا سیستم با قابلیت*ها Ùˆ انتظارات ناکاÙÛŒ Ùˆ در Ú©ÛŒÙیتی نامناسب ارايه Ù…ÛŒ*شود Ùˆ این یعنی ضرر کارÙرما یا مشتری
پس Ú†Ù‡ باید کرد؟ Ú†Ù‡*گونه Ù…ÛŒ*توان اطلاعات لازم سه گانه Ùوق را به دست آورد؟ آیا استÙاه از RFP گروه اطلاعات اول را Ùراهم Ù…ÛŒ*سازد؟ به این سئوال به سختی Ù…ÛŒ*توان پاسخ داد؛ چرا Ú©Ù‡ بر Øسب آن Ú©Ù‡ RFP را Ú†Ù‡ گروهی Ùˆ با Ú†Ù‡ Ùرمت Ùˆ استانداردی تهیه کرده باشد، جواب Ù…ÛŒ*تواند متÙاوت باشد.
در این میان Øلقه*ÙŠ گمشده*ÛŒ دیگری نیز به نظر Ù…ÛŒ*آید. اجرای مرØله اول Ùرآیند برای تعیین Ùˆ برآورد واقعی*تر پروژه ضروری است، با این همه مشکل در آن است Ú©Ù‡ مشخص نیست هزینه*ÙŠ اجرای این مرØله بر عهده کارÙرما خواهد بود یا مجری؟ در صورتی Ú©Ù‡ پروژه Ø·ÛŒ قراردادی قبل از اجرای این مرØله واگذار شود، پس برآوردها تÙاوت Ùراوانی با واقعیت خواهد داشت Ùˆ در صورتی Ú©Ù‡ قرارداد پس از مرØله*ÙŠ اول Ùˆ جمع*آوری اطلاعات بسته شود، در آن صورت هزینه*ÙŠ اجرای مرØله اول بر عهده Ú†Ù‡ کسی خواهد بود؟ به همین دلیل بسیاری از پروژه*های نرم*اÙزاری در نیمه*ÙŠ راه به دلیل برآوردهای غلط به شکست Ù…ÛŒ*انجامند یا در واقع نمی*توانند نیازهای کاربران را برآورده نمایند.
همان طور Ú©Ù‡ Ú¯Ùته شد روش*های مختلÙÛŒ برای تخمین Ùˆ برآورد Øجم Ùعالیت*های لازم برای انجام یک پروژه نرم*اÙزاری معرÙÛŒ شده است. معروÙ*ترین آن*ها روش COCOMO است. از آن*جا Ú©Ù‡ قصد این نوشته ØªØ´Ø±ÛŒØ Ø§ÛŒÙ† روش نیست Ùقط به بيان این نكته بسنده Ù…ÛŒ*شود Ú©Ù‡ در این روش اساسا میزان خطوط کد لازم برای تولید برنامه بر اساس Ù…Ùهوم Function point تخمین زده شده Ùˆ بر اساس آن Øجم Ùعالیت*های لازم برای پروژه تخمین زده Ù…ÛŒ*شود.
با Ùرض این*Ú©Ù‡ نیازهای سیستم در قالب یوزکیس*ها شناسایی شده اند، متخصصین RUP نیز روش*های گوناگونی را برای تخمین هزینه Ùˆ برآوردهای واقع بینانه پروژه ارايه کرده*اند. روش دیگری Ú©Ù‡ در میانه*ÙŠ دهه*ÙŠ 1990 ارايه شد روش Use Case Point است. در این روش با تعری٠Use Case Point های سیستم Ùˆ تخصیص Ù†Ùر ساعت لازم برای پیاده*سازی آن*ها Øجم Ùعالیت لازم تخمین زده Ù…ÛŒ*شود. هر یوزکیس شامل سناریو یا سناریوهایی است. علاوه بر UseCaseهای سیستم واسطه*های ارتباطی یوزکیس با دنیای بیرون ازجمله برای مثال پنجره*های ویندوز Ùˆ یا صÙØات وب نیز وجود دارند Ú©Ù‡ طراØÛŒ Ùˆ پیاده*سازی آن خود Øجم کار قابل توجهی را Ù…ÛŒ*طلبد. بنابر این قدم اول تشخیص یوزکیس*ها Ùˆ ØªØ´Ø±ÙŠØ Ø³Ù†Ø§Ø±ÙŠÙˆÙ‡Ø§ÛŒ آن*هاست. Ùرآیند تشخیص Ùˆ ØªØ´Ø±ÛŒØ ÛŒÙˆØ²Ú©ÛŒØ³*های سیستم هر Ú†Ù‡ با دقت بیش*تری انجام شود، برآوردهای واقعی*تری را منتج خواهد بود. اما همان*طور Ú©Ù‡ کارشناسان RUP به خوبی Ù…ÛŒ*دانند، یوزکیس*ها به عنوان مدلی از Ùعالیت*های سیستم به طور كامل انتزاعی بوده Ùˆ بسته به آن*Ú©Ù‡ Ú†Ù‡ کسی Ùˆ از Ú†Ù‡ زاویه*ای آن* را Ù…ÛŒ*نویسد Ø³Ø·ÙˆØ Ùˆ پیچیدگی*های مختلÙÛŒ Ù…ÛŒ*توانند داشته باشند. برای مثال Ù…ÛŒ*توان صدور Ú†Ú© را یک یوزکیس تلقی کرد Ùˆ هم*زمان Ù…ÛŒ*توان صدور Ú†Ú© را زیرسیستمی معرÙÛŒ نمود Ú©Ù‡ خود شامل تعداد مشخصی یوزکیس است. نتیجه آن Ú©Ù‡ Ø³Ø·ÙˆØ ÛŒÙˆØ²Ú©ÛŒØ³*ها Ù…ÛŒ*توانند مختل٠باشند Ùˆ بنابراین در تعیین تعداد یوزکیس پوینت*ها باید دقت بیش*تری مبذول نمود. به هرØال بهتر است Ú©Ù‡ Ø³Ø·ÙˆØ Ø§Ù†ØªØ²Ø§Ø¹ در تمامی سیستم از یک روال ثابتی پیروی کند، در غیر این صورت باید ضریب Ø³Ø·Ø Ø§Ù†ØªØ²Ø§Ø¹ نیز در معادلات مربوط به Use Case Point در نظر گرÙته شود
یوزکیس پوینت روشی در ارزیابی Ùˆ تخمین هزینه Ùˆ زمان پروژه های نرم*اÙزاری قبل از ØªØ´Ø±ÛŒØ Ø¯Ù‚ÛŒÙ‚*تر این روش اصطلاØات خاص این روش را بهتر بشناسیم:
آن*چه خواننده باید بداند:
1. خواننده باید اطلاعات پایه را در مورد نوشتن یوزکیس داشته باشد. این مقاله توصیÙÛŒ در مورد یوزکیس*ها ارايه نداده Ùˆ تنها Ù†Øوه تخمین زمان انجام را معرÙÛŒ Ù…ÛŒ*کند. بنابراین اگر این نوشته را بدون اطلاع Ù…Ú©ÙÛŒ در مورد Ù…Ùهوم بازیگر، نقش ØŒ سناریو Ù…ÛŒ*خوانيد از آن استÙاده*ÙŠ زیادی نخواهید برد.
2. ساختار یوزکیس*ها از سازمان به سازمان Ùˆ از پروژه به پروژه متÙاوت است. چیزی Ú©Ù‡ اساسا در تخمین Ùˆ ارزیابی موثر است. این نوشته بر مبنای ساختار ارايه شده توسط Allister Mac Lin در کتاب How To Write Effective Use Case نوشته شده است. مطالعه این کتاب را به خواننده توصی٠می*کنیم.
Ù…Øدوده:
این مقاله صرÙا در مورد درکUse Case Point بوده Ùˆ اطلاعاتی درمورد Ù†Øوه نوشتن یوزکیس*ها به خواننده نمی*دهد. نوشته*ها Ùˆ مقالات بسیاری در این باب نوشته شده Ùˆ در اینترنت نیز قابل دسترس است.
تاریخچه:
روش Use Case Point مبتنی بر کارustav karner Ú©Ù‡ در سال 1993 به عنوان تز دانشگاهی ارايه شد. این روش امروزه به عنوان روش تخمین زمان Ùˆ هزینه در برخی از ابزارهای مهندسی نرم*اÙزار Ú©Ù‡ از UML برای مدل*سازی استÙاده Ù…ÛŒ*کنند، پیش*بینی شده است Ú©Ù‡ از آن جمله Ù…ÛŒ*توان به ابزار نرم*اÙزاری خوش*دست Sparx System Enterprise Architect اشاره کرد.
مراØÙ„ روش یوزکیس پروینت برای تخمین
1. تعیین UAW) Unadjusted Actor Weight ): اولین قدم دسته*بندی همه بازیگران سیستم است. در جدول زیر دسته*بندی بازیگران آمده است. ستون دوم راهنمای تصمیم گیری در مورد نوع بازیگر بوده و نشان میدهد که بازیگر باید در کدام دسته قرار می*شود. آخرین ستون نیز عامل پیچیدگی آن را نشان می*دهد.
2. تعیین UUCW ( Unadjusted Use Case Point ). مرØله دوم شمارش یوزکیس*ها Ùˆ تعیین وزن آن*ها بر Øسب تعداد سناریوها Ùˆ تعداد تراکنش*های آن*هاست.
3. تعیین مجموع UUCP (Unadjusted Use Case Point ): برای Ù…Øاسبه این مقدار از Ùرمول روبه*رو استÙاده Ù…ÛŒ*شود: مجموع UAW + مجموع UUCW = UUCP
4. Ù…Øاسبه عوامل تکنیکی Ùˆ Ù…Øیطی: آخرین قدم برای Ù…Øاسبه پیچیدگی، تعیین Ùˆ اندازه*گیری عوامل تکنیکی Ùˆ Ù…Øیطی سیستم است. عوامل تکنیکی 13 مورد شناخته شده دارند هر چند Ù…ÛŒ*توان عوامل دیگری را نیز به آن اضاÙÙ‡ نمود. به هر یک عوامل تکنیکی مقادیر 0 تا 5 نسبت داده Ù…ÛŒ*شود. مجموع عوامل تکنیکی Ùاکتور پیچیدگی تکنیکی پروژه را تعیین کرده Ùˆ با ضرب آن در ضریب پیچیدگی، میزان پیچیدگی پروژه Ù…Øاسبه Ù…ÛŒ*شود. هر عامل تکنیکی وزنی نیز دارد Ú©Ù‡ میزان تاثیر آن را مشخص Ù…ÛŒ*کند.
1. Ù…Øاسبه Ùاکتور تکنیکی
برای Ù…Øاسبه Ùاکتور تکنیکی پروژه از معادله Tfactor =T1 +T2 + …….T12+T13 استÙاده Ù…ÛŒ*گردد.
2. Ù…Øاسبه ميزان پيچيدگي تكنيكي پروژه:
میزان پیچیدگی تکنیکی پروژه با Ùرمول TCF= 0.6 +(0.01* Tfactor)Ù…Øاسبه Ù…ÛŒ*شود.
3. عامل Ù…Øیطی:
عوامل دیگری نیز هستند Ú©Ù‡ باید در نظر گرÙته شوند از جمله عوامل Ù…Øیط تولید نرم*اÙزار Ú©Ù‡ اثر مستقیم بر روی زمان Ùˆ هزینه*ÙŠ پروژه خواهد داشت.
4.مجموع عوامل Ù…Øیطی از جمع مقادیر بالا Ù…Øاسبه Ù…ÛŒ*شود:
یعنی:Efactor=SUM(e1….e8)
5.برای Ù…Øاسبه ضریب عامل Ù…Øیطی از معادله EF=1.4+(-0.03 * Efactor)استÙاده Ù…ÛŒ*شود.
6. د رنهایت مقدارAUCP (Adjusted Use Case Points ) با استÙاده از Ùرمول زیر Ù…Øاسبه Ù…ÛŒ*شود؛ یعنی AUCP=UUCP * TCF * EF
با ضرب مقدار به دست آمده در Ù†Ùر ساعت لازم برای انجام هر یوزکیس پوینت Ù†Ùر ساعت Ú©Ù„ لازم برای انجام پروژه به دست Ù…ÛŒ*آید. برای میزان Ù†Ùر ساعت لازم برای هر Use Case Point مقادیر متÙاوتی پیشنهاد شده از جمله 10ØŒ 15 Ùˆ 20 Ùˆ Øتا 30 تا 40 Ù†Ùر ساعت برای هرUse Case Point در نظر گرÙته شده است. با این همه بعضی از متخصصان بیان کرده*اند Ú©Ù‡ این عدد خود به Ùاکتورهای Ù…Øیطی مرتبط است. تجربه عملی نگارنده نشان داده Ú©Ù‡ میزان 10 تا 15 Ù†Ùر ساعت در Ù…Øیط*های کاری ما مناسب است.
مثال عملی برای تخمین زمان یک پروژه
برای نشان دادن چگونگی تخمین هزینه یک پروژه از یک مثال ساده استÙاده Ù…ÛŒ*کنیم. ابتدا Øوزه مساله:
شرکت راپیران در Øال Øاضر از روش دستی برای ثبت Ùˆ ویرایش اطلاعات مشتریان خود Ùˆ میزان اعتبار آن*ها استÙاده Ù…ÛŒ*کند. اطلاعات مشتریان به همراه اطلاعات کارت*های اعتباری آنها در دÙاتری ثبت میگردد Ùˆ سپس اطلاعات کارت اعتباری آن*ها از طریق سیستم کارت خوان Ú©Ù‡ توسط بانک در اختیار شرکت گذاشته شده کنترل Ù…ÛŒ*گردد. اطلاعات مشتریان عبارت است از:
- کد مشتری
- نام مشتری
- آدرس مشتری
- تلÙÙ† مشتری
- اطلاعات معتبر کارت اعتباری مشتری
کد مشتری برای هر مشتری یکتا بوده بنا بر این کارمند پذیرش مشتریان بصورت دستی اطلاعات را کنترل Ùˆ در دÙتر ثبت مینماید . راپیران میخواهد Ùعالیتها Ùˆ کنترلهای زیر در ثبت Ùˆ ویرایش اطلاعات مشتریانش بصورت مکانیزه انجام شود:
- کنترل یکتایی کد مشتری
- کد مشتری نباید از 8 Øر٠و عدد بیشتر باشد
- کنترل کارت اعتباری مشتری باید از طریق ارتباط سیستم با سیستم کارت خوان بانک بصورت اتوماتیک انجام شود
- طول شماره کارت اعتباری نباید بیش از 10 Øر٠یا عدد باشد
- اپراتور باید بتواند اطلاعات مشتری جدیدی را اضاÙÙ‡ کرده Ùˆ اطلاعات مشتری موجود را تغییر داده ویا آنرا Øذ٠کند
- بانک اطلاعاتی در دÙتر اطلاعات شرکت نصب شده Ùˆ تنها ورود Ùˆ ویرایش Ùˆ Øذ٠اطلاعات توسط اپراتور سیستم انجام میشود
- نرم اÙزار در Ù…ÛŒØیط ویندوز اجرا خواهد شد Ùˆ سیستم عامل ویندوز XP به اینمظور استنÙاده خواهد شد
یوزکیس ورود اطلاعات مشتری در سیستم مشتریان شرکت راپیران
الگوی ØªØ´Ø±ÛŒØ Ùˆ توصی٠یوزکیس از شخص به شخص Ùˆ از پروژه به پروژه Ùˆ از سازمان به سازمان متÙاوت است . موضوع اصلی در ترتیب Ùˆ مراØÙ„ÛŒ است Ú©Ù‡ در سناریو Ù…ÛŒ*آید.
تراکنش یوزکیس:تراکنش یوزکیس، واØد مجموعه Ùعالیت*هایی است Ú©Ù‡ به طور کامل انجام Ù…ÛŒ*شود. برای تشخیص تراکنش یوزکیس باید دید Ú©Ù‡ آیا تراکنش ارزشی تولید Ù…ÛŒ*کند. در صورتی Ú©Ù‡ یک Ùعالیت ارزشی را تولید نمی*کند نباید آن را به عنوان تراکنش یوزکیس در نظر گرÙت؛ برای مثال این*Ú©Ù‡ کاربر کامپیوتر خود را روشن Ù…ÛŒ*کند Ùˆ یا این* Ú©Ù‡ کاربر روی کلید ایجاد مشتری Ùˆ یا هر کلید دیگری در پنجره ارتباطی خود کلیک Ù…ÛŒ*کند تراکنش Ù…Øسوب نمی*شود، اما کارت اعتباری مشتری توسط یک تراکنش کنترل اعتبار بررسی Ù…ÛŒ*گردد. تعدادUse Case Point ها به طور كامل بستگی به چگونگی تعری٠بازیگران Ùˆ تراکنش*های تعری٠شده دارد . بنا براین ØªØ´Ø±ÛŒØ ÙˆØªÙˆØµÛŒÙ ÛŒÙˆØ²Ú©ÛŒØ³ ها باید ازطریق الگوها Ùˆ سرخطهای مشخصی انجام شود . بهترین راه برگزاری جلسه با تمامی اعضای تیم مسئول انجام پروژه قبل از نوشتن Ø´Ø±Ø ÛŒÙˆØ²Ú©ÛŒØ³ است. عمق ØªØ´Ø±ÛŒØ ÛŒÙˆØ²Ú©ÛŒØ³ Ù…ÛŒ*تواند تا 40 درصد روی تخمین انجام شده تاثیر گذار باشد. روش Ùˆ الگویی Ú©Ù‡ در این*جا ارايه Ù…ÛŒ*شود، تنها الگو نبوده Ùˆ تنها برای ØªØ´Ø±ÛŒØ Ù…Ø³Ø§Ù„Ù‡*ÙŠ بالا ارايه شده است.