X
تبلیغات
رایتل
چهارشنبه 6 آذر‌ماه سال 1387 ساعت 12:01 ق.ظ

اندازه‌گیری نرم‌افزار با استفاده از استاندارد ‌‌ COSMIC FFP 2003


اشاره :
یکی از مهم‌ترین مسائلی که مدیران پروژه‌های نرم‌افزاری به آن توجه دارند استفاده از ابزارها ، تکنیک‌ها و روش‌های مختلف برای برآورد و کنترل‌‌ ‌راندمان کاری است. این عامل می‌تواند برای برآورد نیروی انسانی، مدت زمان مورد نیاز پروژه‌ها و برنامه‌ریزی بسیار سودمند باشد. دانستن اندازه نرم‌افزار قبل از تولید آن می‌تواند‌ ما را در این برآوردها یاری رساند. روش‌های مختلفی برای به دست آوردن اندازه نرم‌افزار وجود دارد از جمله: شمارش خطوط برنامه LOC) ،‌COCOMO) و ‌MKII. ولی تمام این روش‌ها دارای نقاط ضعف فراوانی هستند که از آن میان می‌توان به عدم سازگاری با انواع مختلف نرم‌افزار و سختی محاسبه، اشاره کرد. (که همگی آن‌ها به تفصیل در مقاله <�> در شماره 60‌ ماهنامه شبکه موردبررسی قرارگرفته‌اند.) از این رو بسیاری از متخصصان و استادان نرم‌افزار تلا‌ش‌کرده‌اند روش آسان و استانداردی را برای اندازه گیری نرم‌‌افزارهای امروزی پیدا کنند. ‌‌COSMIC-FFP روش استانداردی است برای اندازه‌گیری انواع مختلف نرم‌افزار با دقت عمل بالا و توانایی محاسبه از مراحل اولیه تولید تا نصب. این مقاله سعی دارد با طرح مثال‌های ساده، این استاندارد را بررسی کند.‌

اندازه‌گیری نرم‌افزار با استفاده از استاندارد ‌‌ COSMIC FFP 2003

اشاره :
یکی از مهم‌ترین مسائلی که مدیران پروژه‌های نرم‌افزاری به آن توجه دارند استفاده از ابزارها ، تکنیک‌ها و روش‌های مختلف برای برآورد و کنترل‌‌ ‌راندمان کاری است. این عامل می‌تواند برای برآورد نیروی انسانی، مدت زمان مورد نیاز پروژه‌ها و برنامه‌ریزی بسیار سودمند باشد. دانستن اندازه نرم‌افزار قبل از تولید آن می‌تواند‌ ما را در این برآوردها یاری رساند. روش‌های مختلفی برای به دست آوردن اندازه نرم‌افزار وجود دارد از جمله: شمارش خطوط برنامه LOC) ،‌COCOMO) و ‌MKII. ولی تمام این روش‌ها دارای نقاط ضعف فراوانی هستند که از آن میان می‌توان به عدم سازگاری با انواع مختلف نرم‌افزار و سختی محاسبه، اشاره کرد. (که همگی آن‌ها به تفصیل در مقاله <�> در شماره 60‌ ماهنامه شبکه موردبررسی قرارگرفته‌اند.) از این رو بسیاری از متخصصان و استادان نرم‌افزار تلا‌ش‌کرده‌اند روش آسان و استانداردی را برای اندازه گیری نرم‌‌افزارهای امروزی پیدا کنند. ‌‌COSMIC-FFP روش استانداردی است برای اندازه‌گیری انواع مختلف نرم‌افزار با دقت عمل بالا و توانایی محاسبه از مراحل اولیه تولید تا نصب. این مقاله سعی دارد با طرح مثال‌های ساده، این استاندارد را بررسی کند.‌


برآورد نیروی کار موردنیاز و هزینه نرم افزار
یکی از اولین سوالاتی که در شروع هر پروژه نرم‌افزاری مطرح می‌شود، هزینه تولید نرم‌افزار و اندازه آن است. برای محاسبه هزینه نرم‌افزار باید اندازه نرم‌افزار را پیدا کنیم. روش‌های مختلفی برای اندازه‌گیری اندازه نرم‌افزار وجود دارد؛ مثل اندازه خطوط برنامه. ولی ازآن جایی که برنامه‌نویسان مختلف روش‌های متفاوتی در نوشتن کد دارند و دو برنامه با اندازه مختلف می‌تواند کارایی مشابهی داشته باشند، این روش استاندارد نیست. روش دیگری که می‌توان از آن استفاده کرد، مشخص‌کردن کارایی و عملیات نرم‌افزار است. بدین ترتیب که هر نرم‌افزار را با توجه به کارایی و پیچیدگی فنی آن اندازه‌گیری کنیم.
یکی از روش‌های معمول برای به دست آوردن این مقدار، استفاده از فرمول ‌‌Albrecht است که با توجه به تعداد عملیات، کارایی و پیچیدگی فنی سیستم مقدار ‌Function Point) FP) را مشخص می کند. مثلا اگر برای یک نرم‌افزاری مقدار 68 به دست آید و فرض کنیم نوشتن هر ‌FP برای هر برنامه نویس به طور متوسط دو روز وقت می‌گیرد، تهیه این نرم افزار 136 روز طول خواهد کشید. در بسیاری از کشورهای جهان ازجمله کشور انگلستان، بیشتر قراردادهای نرم‌افزاری بر اساس‌‌ ‌FP بسته می‌شود و هزینه نرم‌افزار را با توجه به مقدار ‌FP برآورد می کنند. در این‌جا سعی شده است روش بهتری برای اندازه گیری نرم‌افزار بررسی شود. این روش‌ که ‌COSMIC-FFP نام دارد، استاندارد جدید کشورهای اروپایی و امریکایی است.
نگاهی به استاندارد ‌‌COSMIC-FFP
گروه Common Software International Consortium) ‌‌COSMIC) در سال 1998 با هدف توسعه روش‌های اندازه‌گیری نرم‌افزار تشکیل شد. هدف عمده این گروه، ارائه روشی آسان برای تخمین اندازه و هزینه نرم‌افزار با‌توجه به نیازها و درخواست‌های کاربران است.

استاندارد ارائه‌شده این گروه برای اندازه‌گیری نرم‌افزار، ‌‌COSMIC-FFP است که می‌توان با آن بسیاری از نرم‌افزارهای مالی (حسابداری، بانکداری و...)، نرم‌افزارهای‌ بلادرنگ (مثل نرم‌افزارهای مخابراتی) و نرم‌افزارهای چند‌منظوره را اندازه‌گیری نمود. با استفاده از این استاندارد امکان اندازه‌گیری نرم‌افزارهای گوناگون وجود ‌دارد. ولی نمی‌توان‌ نرم‌افزارهای بسیار پیچیده فنی را اندازه‌گیری کرد. یکی از نقاط قوت این استاندارد این است که با استفاده از آن می‌توان اندازه تمامی اجزای نرم‌افزار را همان‌طور که کاربر می‌بیند، محاسبه کرد.

شکل 1- نمایش لایه‌ای معماری‌ نرم‌افزار


‌روش ‌‌COSMIC-FFP از دو مرحله تشکیل شده‌است که شامل تعدادی رویه و اصول می‌باشد و می‌توان با آن اندازه نرم‌افزار را محاسبه نمود. در مرحله اول نیازهای کاربران ‌‌(System Specification) به مدل نرم افزاری ‌COSMIC-FFP تبدیل می‌شود و در مرحله دوم، اجزای این مدل، اندازه‌گیری می‌شوند.
قبل از محاسبه اندازه این اجزا، نرم‌افزار باید به فرم کلی ‌‌‌COSMIC در بیاید. فرم کلی ‌‌COSMIC لایه‌های نرم‌افزاری را مشخص می‌نماید وبهمحاسبه‌کننده کمک می‌کند با استفاده از این لایه‌ها، نیازهای استفاده‌کننده را طبقه‌بندی نماید. همان‌طور که در شکل 1 مشاهده می‌کنید در این مثال، نیازهای مختلف به لایه های مختلف تعلق دارند.
‌پس از این مرحله، می‌توان این نیازها را به چند رویه‌کاری و چند مدل انتقال اطلاعات (‌خواندن‌، نوشتن‌، ورودی و خروجی‌) تقسیم‌نمود. بعد از این کار، قانون‌های اندازه‌گیری برروی این مدل‌ها اعمال می‌شود و مقدار عددی اندازه نرم‌افزار مشخص می‌شود. این مقدار عددی برحسب ‌‌Cfsu محاسبه می گردد.‌ ناگفته نماند که ‌واحد اندازه‌گیری در این استاندارد، ‌یک Cosmic functional size unit) Cfsu) است.‌‌‌‌

‌مدل اصلی اندازه گیری در ‌COSMIC
شکل 2 مدل اصلی و روند محاسبه اندازه گیری نرم افزار با استفاده از این استاندارد را نشان می‌دهد. چنان که دیده می‌شود، در این مدل اصلی محاسبه اندازه نرم‌افزار در استاندارد ‌COSMIC‌ نشان داده‌شده است. در ادامه تمامی اجزای این مدل از آغاز تا انجام با شرح مثال های ساده توضیح داده خواهد شد. ‌

شکل‌2- مدل اصلی اندازه گیری‌


استخراج نیازهای کاربران
یکی از مهم‌ترین عوامل مورد توجه در اندازه‌گیری نرم‌‌افزار با ‌‌COSMIC امکاناتی است که سیستم در اختیار استفاده‌کنندگان قرار می‌دهد و در واقع رویه‌ای است که نرم‌افزار باید در پیش بگیرد تا درخواست‌ها و نیازهای کاربران را تامین کند.
برای استخراج این نیازها اکثر اوقات می‌توان به مستندات اولیه سیستم مراجعه نمود. البته در مواقعی هم که مستندات برنامه وجود ندارد و نرم‌افزار نصب شده است، باز می‌توان این نیازها را از نرم‌افزار نصب شده استخراج نمود. شکل 3 منابع استخراج نیازهای کاربران از راه های ذکر شده را نشان می‌دهد.
برای مثال اگر سیستم مکانیزه کتابخانه را در‌نظر بگیرید، برخی از نیازهای کاربردی استفاده‌کنندگان را می‌توان به شرح زیر نام برد:

‌‌- کنترل کردن کارت عضویت ‌
- کنترل کردن پرونده امانات برای پیدا کردن کتاب‌هایی که اعضا به امانت گرفته‌اند و بازنگردانده‌اند.‌

شکل 3- منابع استخراج نیازهای کاربران در COSMIC ‌


- امانت کتاب
- برگشت کتاب توسط اعضا
همانطور که مشاهده می‌کنید، استخراج نیازهای کاربران ‌‌‌‌(FUR) و عملیات سیستم کار مشکلی نیست. ولی قبل از هرگونه محاسبه نرم‌افزار (همان‌طور که در شکل 2 نیز مشخص شده است)، دانستن اهداف اندازه‌گیری و محدوده آن اهمیت دارد.

هدف اندازه‌گیری، دلیل اندازه‌گیری و نوع استفاده از نتایج محاسبه را مشخص می‌کند. به عنوان نمونه در مثال سیستم کتابخانه، هدف از اندازه‌گیری را می توان به شرح زیر تعیین کرد:
‌دلیل اندازه گیری ‌‌
برای اندازه‌گیری‌ نیازهای کاربردی استفاده‌کنندگان (‌برای ورودی فرمول‌) و استفاده در رویه اندازه‌گیری (‌تخمین‌) میزان کوشش کاری برنامه‌نویسان سیستم.‌
محدوده اندازه گیری‌
محدوده اندازه‌گیری در واقع محدودیت‌ها و ملزومات یک اندازه‌گیری را مشخص می کند. برای مثال در سیستم کتابخانه این حدود به شرح زیر است: ‌ ‌- فقط نیازهای کاربران در دسترس است.‌
- زبان برنامه نویسی‌: جاوا‌
- پایگاه اطلاعاتی: اوراکل ‌
- برنامه نویسی شی گرا‌
-لایه‌های نرم‌افزاری: نرم‌افزار و پایگاه اطلاعاتی
‌عامل اولیه دیگری که قبل از محاسبه اندازه نرم‌افزار الزامی به‌نظر می‌رسد، دید محاسبه‌کننده است. در این‌باره می‌توان دو دیدگاه را مورد‌بررسی‌قرار داد: نظر استفاده کننده سیستم و نظر برنامه‌نویسان و تهیه کنندگان نرم‌افزار.
این مسئله به عنوان نمونه در همان مثال در سیستم کتابخانه به شرح زیر است:
نظر استفاده کنندگان ‌
- استفاده‌کنندگان سیستم: دانشجویان و متصدی کتابخانه می باشند.‌
- این استفاده‌کنندگان فقط از بخشی از توانایی‌های سیستم اطلا‌ع دارند که با آن کار می کنند. ‌
- اگر اندازه‌گیری نرم‌افزار از نظر این نوع استفاده کنندگان محاسبه شود، باید فقط اندازه اجزای سیستم که کاربر با آن در تماس مستقیم است، محاسبه گردد.‌
نظر برنامه‌نویسان/ تولید کنندگان نرم‌افزار
دراین دیدگاه باید اندازه تمامی اجزای سیستم محاسبه شود. برای محاسبه و تخمین نیروی مورد‌نیاز و هزینه نرم‌افزار باید دید برنامه‌نویس مد‌نظر قرار می گیرد و تمامی اجزای سیستم در محاسبه در نظر گرفته شوند.

شکل 4-مرحله‌ Mapping


‌مرحله ‌‌Mapping
‌ ‌همانطور که در شکل 2 (‌مدل اصلی اندازه گیری) دیده می‌شود، مرحله اول این مدل، مرحله مقدماتی یا تبدیل نیازهای کاربران‌‌ ‌‌(FUR) به مدل عمومی ‌COSMIC است. این مرحله اصطلاحا مرحله‌‌ ‌Mapping نام دارد که همان‌طور که در شکل 4 مشاهده می کنید، ‌FURs را به مدل نرم‌افزاری عمومی ‌COSMIC تبدیل می کند.
در این مرحله با استفاده از روش ها و رویه های گوناگون، ورودی ‌‌‌‌(FUR) به مدل عمومی COSMIC که مدل‌ مناسب‌تری برای محاسبه اندازه نرم‌افزار است، تبدیل می‌شود. در اندازه‌گیری نرم‌افزار سوالاتی مانند <�> ممکن است در ذهن پیش بیاید. به همین جهت ‌‌‌COSMIC پیشنهاد می‌کند که از مدل‌ CONTEXT ‌استفاده شود. یعنی هر قسمت از سیستم ترسیم گردد و جریان اطلاعات در آن بررسی شود. ساده‌ترین مدل جریان اطلاعات در نرم‌افزار در شکل 5 نمایش داده شده است.‌

شکل 5-مدل‌ اصلی‌جریان‌اطلاعات‌در نرم‌افزار


همانطور که در شکل 5 مشاهده می کنید، نرم افزار به وسیله سخت افزار (صفحه کلید، نوار خوان و...) از یک سو و پایگاه اطلاعاتی (هارددیسک‌) از طرف دیگر احاطه شده است و دو انتها دارد: ‌انتهای جلویی ‌(Front-end) و انتهای عقبی (Back-end). در قسمت انتهای جلویی دو گروه انتقال اطلاعات وجود دارد: ورودی‌‌ ‌‌(entry) و خروجی‌‌ (exit).

ورودی همان اطلاعات وارد شده از طرف کاربر و خروجی نیز انتقال اطلاعات از سوی سیستم به کاربر است. در قسمت انتهای عقبی نیز دو گروه انتقال اطلاعات وجود دارد: نوشتن اطلاعات در پایگاه اطلاعاتی (‌توسط نرم‌افزار) و خواندن اطلاعات.
‌هدف ‌‌COSMIC اندازه‌گیری نرم‌افزار بر اساس ‌FURهای موجود است. وقتی ‌FURها مشخص شدند، می‌توانیم آن‌ها را به نرم‌افزار/سخت‌افزار موجود در سیستم ربط دهیم. ولی همان‌طور که قبلا توضیح داده شد،‌‌ COSMIC ‌فقط به ‌FURهایی توجه دارد که به نرم افزار مربوط می‌شوند. همان‌طور که در شکل 6 مشاهده می کنید در نرم‌افزارهای بازرگانی امروزی نیازهای کاربران ‌FURها به لایه‌‌ ‌Application (نرم‌افزار) مرتبط می شوند. زیرا این لایه مستقیما با کاربر در ارتباط است.

شکل 6- مدل جریان اطلاعات در نرم افزار چند لایه‌ای


مرزهای نرم افزار و رویه های کاربردی
تعیین‌کردن مرزهای نرم‌افزار با نوع، هدف و دیدگاه اندازه‌گیری (‌استفاده کننده/‌برنامه‌نویس) ارتباط مستقیم دارد. مرزهای نرم‌افزاری در واقع اینترفیس‌هایی هستند در میان نرم‌افزار و استفاده‌کننده؛ منظور از استفاده‌کننده می‌تواند لایه دیگری از نرم‌افزار یا همان کاربر باشد. برای مشخص‌کردن مرز نرم‌افزاری و رفع ابهام، ‌‌COSMIC پیشنهاد می‌کند دو عامل را در نظر بگیریم: کسی یا قسمتی از نرم‌افزار که بخشی را فعال می‌کند (باعث رویدادی می‌شود) و قسمتی که تحت تاثیر قرار می گیرد (‌رویه عملیاتی). مرز نرم‌افزار بین این دو قرار دارد. البته دیدگاه اندازه‌گیری در اینجا مهم است و تفاوت در دیدگاه اندازه‌گیری این مرز را تغییرمی‌دهد. مثلا وقتی از دیدگاه استفاده‌کننده سیستم نگاه می‌کنیم، دو مرز وجود دارد: بین نرم‌افزار و کاربر و بین نرم‌افزار و پایگاه اطلاعاتی ( شکل 5).
برای وضوح بیشتر یک وب‌سایت را از دید کاربر تجسم کنید. کاربر برروی یک لینک کلیک می‌نماید و محتویات صفحه را مشاهده می کند. ولی اگر این وب سایت را از دید یک طراح وب در نظر بگیرید، هر لینک عامل سه حرکت اطلاعات می‌گردد. همان‌طور که قبلا اشاره شد، اطلاعات در هر لایه در حرکت هستند (‌خواندن‌، نوشتن‌، ورودی و خروجی) ولی لزوما این امر بدین معنا نیست که خروج اطلاعات دائما به سمت کاربر باشد.

مثلا اگر بخواهیم اطلاعاتی را برروی پایگاه‌اطلاعاتی ذخیره کنیم (‌نوشتن یا‌ Write)، در واقع این عمل نوشتن به‌وسیله لایه نرم‌افزار یک ورودی ‌‌‌(Entry) اطلاعات به لایه پایگاه اطلاعاتی است. ولی در مورد خواندن اطلاعات ‌(Read) ‌از پایگاه اطلاعاتی، مسئله پیچیده‌تر از خواندن اطلاعات می‌شود. همانطور که در شکل 7 می‌بینید وقتی یک جستجو از طرف لایه ‌‌Application درخواست می‌شود، این درخواست در واقع یک ورودی است از طرف لایه و خواندن‌‌‌اطلاعات، در واقع توسط لایه ‌‌ ‌Device Driver هدایت و کنترل می‌گردد.

شکل 7- جستجو توسط‌ لایه


‌ همانطور که در شکل 7 مشاهده می‌کنید، یک ورودی ‌‌‌‌(E: Entry) باعث به وجود آمدن دو حرکت می‌شود: خواندن
‌‌‌(R: Read)‌ از پایگاه اطلاعاتی از لایه ‌Device Driver و خروج ‌‌‌(X: Exit) به لایه‌‌ Application.

پس از شناسایی مرزهای نرم‌افزار (همان‌طور که در شکل 2 مشخص شده) مرحله شناسایی رویه‌های کاربردی قراردارد. شناسایی یک رویه کاربردی یا ‌‌Functional process کار سختی نیست.
در واقع یک رویه کاربردی قسمتی از نیازهای کاربران است که توسط آنان از سیستم در‌خواست می‌شود و باعث حرکت اطلاعات می‌شود و تا وقتی تمام نیازهای کاربر را فراهم نکند، این رویه ادامه دارد.

یک رویه کاربردی حداقل شامل دو حرکت اطلاعات می باشد (‌یک ورودی: ‌ ‌E و یک خروجی:‌‌ X) نوشتن اطلاعات (W)، فقط متعلق به یک لایه می باشد و دارای تعدادی رویداد‌‌ ‌Events است. مثلا در سیستم کتابخانه اگر فرض کنیم که هدف یک رویه کاربردی، ایجاد یک عضو جدید است، می توان رویدادهای زیر را در نظر گرفت:

شکل 8- مدل کنترل‌کردن کارت عضویت کتابخانه


یک ورودی: ‌‌ 1 X Entry(اطلاعات عضو جدید)‌
یک نوشتن: ‌‌ 1X Write(نوشتن اطلاعات عضو در پایگاه اطلاعاتی) ‌
یک خروجی: ‌‌ ‌1X Exit(پیغام خطا یا تایید ثبت اطلاعات عضو) ‌‌ ‌‌
‌یکی دیگر از نیازهای کاربران در سیستم کتابخانه، کنترل‌کردن کارت عضویت است. اگر بخواهیم این رویه را به صورت مدل نشان دهیم، شکل 8 را می توانیم ترسیم کنیم. ‌
مراحل زیر را می توانید در شکل 8 به وضوح مشاهده کنید:
‌‌ 1X Entry- (از کاربر به لایه‌Application )
1X Exit - ‌از لایه (‌Application ‌به سیستم مدیریت پایگاه اطلاعاتی رابطه ای یا‌ ‌RDBMS)
‌‌ 1X Entry- (به‌‌ ‌RDBMS)
- 1X Read (از پایگاه اطلاعاتی) ‌
‌-‌‌ 1X Exit (از ‌‌RDBMS به لایه‌ Application)
- 1X Entry (به لایه‌ Application)
-‌‌ 1X Exit (پیغام به کاربر) ‌

شکل 9- مدل‌‌ ‌ERD سیستم کتابخانه


شناسایی جهت انتقال اطلاعات
اولین قدم برای شناسایی جهت انتقال اطلاعات در سیستم، طراحی Entity Relationship Diagram) ‌‌ERD) یا مدل
پایگاه اطلاعاتی رابطه‌ای است. (شکل 9 )

در ‌‌COSMIC جهت انتقال اطلاعات، براساس نیاز رویه کاربردی به انتقال اطلاعات تعیین می‌گردد.

مثلا اگر فرض کنید یک رویه ‌‌‌‌(Functional Process) به گرفتن اطلاعات از بانک اطلاعاتی امانات نیاز دارد، شکل 10 را می‌توان ترسیم نمود.


شکل 10- جهت انتقال اطلاعات‌


مرحله آخر
وقتی جهت حرکت اطلاعات مشخص گردید، طبق مدل اصلی اندازه گیری (شکل 2) باید از توابع اندازه‌گیری استفاده نماییم و مجموع اندازه ها را محاسبه کنیم. در این مرحله ما درقبال یک حرکت اطلاعات یک واحد Cfsu را در نظر می گیریم. در نتیجه
1X data movment (E/X/R/W) = 1 CFSU
مثلا اگر در قسمتی، پنج‌ حرکت اطلاعات وجود دارد، پنج واحد‌Cfsu داریم. پس فرمول کلی اندازه‌گیری یک رویه کاربردی را می توان به صورت زیر در نظر گرفت:


شکل 11-بانک‌های‌ اطلاعاتی‌ مورد نیاز


اندازه یک لایه نرم‌افزاری را نیز می‌توان از حاصل جمع اندازه رویه های کاربردی‌ ( Functional Process) ‌به دست آورد. پس اگر در لایه نرم‌افزاری ما، دو رویه ‌‌A و ‌B وجود داشته باشد و هر کدام‌ 4Cfsu باشند، اندازه لایه 8‌Cfs می‌باشد.

برای یادگیری هر چه بیشتر این استاندارد به مثال زیر توجه کنید: در قسمتی از مستندات سیستم کتابخانه ذکر شده، سیستم باید قادر باشد برگشت کتاب‌ها به کتابخانه و حذف این کتاب‌ها از فهرست امانات را ثبت کند.

شکل 12- مدل اصلی سیستم در ‌‌COSMIC


ولی باید یک رکورد از این امانت در بانک اطلاعاتی دیگری نیز ذخیره‌گردد تا متصدی کتابخانه بتواند در آینده به آن مراجعه کند. به نظر شما چند‌‌ Cfsu ‌در این قسمت از مستندات سیستم وجود دارد ( از نظر برنامه‌نویس)؟
جواب: قبل از هر چیز لایه‌های نرم‌افزاری را مشخص می‌کنیم. سپس رویه‌های کاربردی و حرکت اطلاعات را مشخص و برای حرکت هر کدام یک‌‌ ‌Cfsu در نظر می گیریم. در قسمت اول مسئله گروه های اطلاعاتی (‌بانک‌های اطلاعاتی ) که در این قسمت موردنیاز است، مشخص می کنیم. (‌شکل 11)
همان‌طور که در شکل 11 مشاهده می‌کنید، دو بانک‌اطلاعاتی وجود دارد که برای حذف اطلاعات امانات و افزودن رکورد اطلاعات امانات در تاریخچه امانات مستقیما با آن‌ها در ارتباط هستیم. اگر فرض کنیم دو لایه اصلی
‌‌(Application و RDBMS) در این نرم‌افزار وجود دارد، مدل ما چیزی شبیه شکل 12 خواهد بود. حال حرکات اطلاعات را در این مدل دنبال می‌کنیم :
- کاربر اطلاعات عضو را وارد می‌کند. یک حرکت از کاربر به لایه اول، در نتیجه:‌ ‌‌.1X Entry
- یک خروج اطلاعات از لایه اول به لایه دوم. در نتیجه: 1X Exit.
- یک ورود به ‌ ‌RDBMS برای حذف اطلاعات امانات. در نتیجه: 1X Entry.
‌- یک نوشتن در بانک اطلاعاتی امانات ( در واقع حذف را می توان یک نوع Write ‌دانست). در نتیجه: 1X Write ‌
- یک نوشتن در بانک اطلاعاتی تاریخچه امانات. در نتیجه: 1X Write.
- خروج از لایه دوم به لایه اول‌. در نتیجه: ‌‌1X Exit.
- ورود به لایه اول. در نتیجه:1X Entry.
- خروج از لایه اول و نمایش تایید حذف اطلاعات به کاربر. در نتیجه: 1X Exit.
حال می توانیم مقادیر بالا را در فرمول‌ ‌COSMIC-FFP قرار دهیم و اندازه‌‌ ‌‌ Cfsu را برای این قسمت از سیستم محاسبه کنیم:
= (1+1) + (0) + (1+1+1) + (1+1+Size (Cfsu) of Functional process A= (1
‌(8Cfsu (COSMIC-FFP v2.2
نتیجه ‌‌8Cfsu شد که با ذکر نسخه ‌‌COSMIC-FFP استفاده شده در محاسبه نوشته می شود. حال که اندازه نرم‌افزار در واحد ‌‌Cfsu به دست آمد، می‌توانیم اندازه کار مورد نیاز برای تهیه این قسمت از نرم‌افزار را محاسبه کنیم. برای محاسبه کار ‌‌(Effort) به یک عامل دیگر نیز نیاز داریم و آن درصد راندمان نیروی کار است. برای محاسبه این عامل بهترین مرجع را می‌توان اطلاعات پروژه های قبلی دانست. ولی به طور متوسط این مقدار بین 5/0 تا 7/0 از حداکثر 1 (100 درصد) است. مثلا در پروژهای قبلی هر برنامه‌نویس برای نوشتن یک‌ ‌20Cfsu ساعت (‌2 روز) وقت صرف کرده‌است. پس اگر همان برنامه‌نویس بخواهد نرم‌افزاری را با مجموع ‌‌‌ 36Cfsu تهیه کند، در 720 ساعت این نرم‌افزار به اتمام خواهد رسید.
نتیجه‌گیری‌
اندازه‌گیری نرم‌افزار به روش ‌COSMIC-FFP یکی از ساده‌ترین و استانداردترین روش‌های موجود در مهندسی نرم‌افزار است. با این روش می‌توان بسیاری از نرم‌افزارهای امروزی از وب سایت تا نرم‌افزاری ‌بلا‌درنگ را اندازه گیری نمود. از جمله مزایای این استاندارد می‌توان به آسانی، درستی محاسبه و توانایی کار با آن از ابتدایی‌ترین مرحله چرخه تولید نرم‌افزار اشاره کرد. اضافه بر این، می‌توان با این روش حتی قسمت کوچکی از نرم افزار را هم اندازه‌گیری نمود. اگرچه این استاندار امروزه بسیار مورد استقبال قرار گرفته و بسیاری از شرکت‌های نرم‌افزاری دنیا از آن استفاده می کنند، برخی از قسمت های آن هنوز مبهم به نظر می‌رسد.
از آن جمله می‌توان از تشخیص لایه‌های نرم‌افزاری یا تعیین مرز بین لایه‌ها نام برد که محاسبه کننده را ملزم به آشنایی کامل با اجزای تشکیل دهنده نرم افزار قبل از محاسبه می کند. اشتباه در انتخاب لایه ها و مرز بین آن‌ها باعث خواهد شد اندازه نرم‌افزار به اشتباه محاسبه شود. با این حال استفاده‌کنندگان از این استاندارد هر روز بیشتر می شوند. آموزش اندازه‌گیری نرم افزار با ‌‌COSMIC از سال 2004 در اکثر رشته‌های مهندسی نرم‌افزار دانشگاه‌های اروپا در کنار روش‌های قدیمی مثل ‌MKII‌ و ‌COCOMO تدریس می‌شود و امید است روزی این استاندارد جای خود را به روش‌های قدیمی متداول بدهد.
مطالعه منابع معرفی‌شده نیز به شما کمک خواهد کرد مبانی اندازه‌گیری نرم‌افزار با ‌COSMIC-FFP را که در این مقاله بحث شد، بهتر یاد بگیرید. ‌
منابع :
‌www.cosmicon.com
‌www.cosmicon.com/overview.asp

-- ماهنامه شبکه


یاشیاسیز

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo