بخشی از مقاله
چکیده
تصمیم گیری در پروژه مهندسی نرم افزار توسط مدیر یا مدیران پروژه، همواره با چالش های فراوانی روبرو بوده است. مهمترین علت چالش برانگیز بودن این حوزه از مدیریت، پویایی و غیر قابل پیش بینی بودن محیط پروژه نرم افزار است. در این مقاله روش CART برای تخمین تلاش توسعه نرم افزار استفاده شده است. این روش مبتنی بر رگرسیون است و بسیار ساده و در عین حال دقیق عمل می کند. در این مقاله روش CART بر روی دیتاست های مختلف آزمایش شده است و نتایج آزمایش ذکر شده است. نتایج این مقاله توسط پژوهشگران حوزه تخمین تلاش توسعه نرم افزار قابل استفاده است.
-1 مقدمه
به طور کلی مدلهای تخمین تلاش می توانند به دو دسته مدلهای الگوریتمی، و غیر الگوریتمی تقسیم شوند. مدلهای الگوریتمی براساس یک یا چند فرمول ریاضی که به طور معمول از طریق تجزیه و تحلیل آماری بدست می آیند تشکیل شده اند - . - Somerville et al, 2001 - Huang and N.H. Chiu, 2006 درسال 1965 مدلهای مختلفی براساس معادلات خطی ورگرسیون درختی توسعه داده شده است.
مدلهای الگوریتمی برآورد دقیق تر و عینی تری را ارائه میکنند و بسیاری از سازمانها تمایل دارند از آن در برآورد پروژه هایشان استفاده کنند. در دهه های گذشته برخی مدلهای الگوریتمی توسط محققان منتشر شده است که از آن جمله می توان به مدل چرخه زندگی نرم افزار ومدل ارزیابی نرم افزار و تخمین منابع مدل تخمین نرم افزار میتوان اشاره کرد Du et - 3RSRYL DQG %RML ' 2012 - . - al, 2010 یکی از عمده ترین معایب مدل های الگوریتمی عدم تطبیق با شرایط جدید است
در نتیجه مدلهای غیر الگوریتمی ارائه شد که براساس تجزیه و تحلیل پروژه های نرم افزار قبلی ساخته شده اند. در این مقاله ابتدا یک روش های غیرالگوریتمی معرفی می گردد سپس دیتاست هایی که مورد آزمایش قرار گرفته است معرفی شده است. همچنین داده های این دیتاست ها مورد تجزیه و تحلیل قرار گرفته است. در بخش بعد نتایح آزمایش بر روی سه دیتاست نمایش داده شده و مورد تحلیل قرار گرفته است.
-2 درخت طبقه بندی و رگرسیون
روش درخت طبقه بندی و رگرسیون در سال 1984 توسط بریمن و همکاران به عنوان مدل غیر- الگوریتمی جهت برآورد تلاش لازم ارائه شدروش. های درختی ذاتاً به روش های الگوریتمی و غیر- الگوریتمی دسته بندی می شوند که برای طبقه بندی مناسب هستند. درخت هایی که ویژگی های عددی دارند غالباً درخت رگرسیونی نامیده می شوند و درخت هایی که ویژگی های دسته بندی دارند
غالباً درخت های طبقه بندی خوانده می شوند. محققان از این مدل برای تحلیل داده های پروژه های نرم افزاری پیشین استفاده کردند تا درختی رگرسیونی بسازند که برگ های آن نمایانگر مقدار تلاش مورد نیاز پروژه ها باشد. در این روش تمام داده ها به زیر مجموعه هایی - معمولا دو - تقسیم بندی می شوند. قواعد تقسیم- بندی بر اساس اصل ساده قوانین اگر-سپس می باشند.
در ادامه روند دسته بندی تا جایی ادامه پیدا می کند که معیار توقف ثبت شود. در چنین درختی مسیر از سوی ریشه به برگ ها می رود که بر اساس ویژگی- های پروژه مورد نظر می باشد. مدل CART برای حل مسائل داده پرت مناسب است. درواقع CART الگوریتمی است که ایده مناسب درخت های تصمیم گیری را برای طبقه بندی انتخاب کرده و آن را بر اهداف پیوسته منطبق می کند. ساختار ساده درخت رگرسیونی در شکل 1 ارائه شده است .
شکل - 1 درخت رگرسیون برای برآورد تلاش
-1-2 مراحل درخت طبقه بندی و رگرسیون
-1 داده های موجود از پروژه های تمام شده قبلی، برای تولید یک مدل استفاده می شوند.
-2 یک مدل درخت طبقه بندی و رگرسیون، بر اساس داده های بدست آمده در مرحله قبل ساخته می شود.
-3 مدل ایجاد شده در مرحله قبل، اندازه برآورد شده و همچنین محرک های هزینه مربوط به پروژه جدید را دریافت می کند.
-4 مدل، تلاش را برآورد می کند بدین صورت که اگر درخت استفاده شده یک درخت رگرسیون باشد، تلاش به صورت یک مقدار عددی واگر یک درخت طبقه بندی باشد به صورت تلاش کم یا زیاد مشخص می شود.
مراحل این مدل به مراحل تکنیک های الگوریتمی شباهت دارد. تکنیک های الگوریتمی از داده ها برای تولید یک معادله استفاده می کنند که برای تخمین تلاش به کار می رود و مدل های درخت طبقه بندی و رگرسیون از داده ها برای ساخت یک درخت دو دویی استفاده می کنند که در نهایت برای تخمین تلاش استفاده می شود. جامع بودن درخت های رگرسیونی را می توان به عنوان نقطه قوتی در این تکنیک در نظر گرفت. برای تعیین میزان تلاش مورد نیاز برای یک پروژه جدید، تنها بایستی شاخه های مناسب را بر اساس ویژگی های پروژه جدید انتخاب کرد

