-
تولید مجموعه داده ها
-
- مقدمه
-
برای آماده سازی مجموعه داده مورد نیاز جهت خودکارکردن عملیات تصحیح برچسب و پالایش، دو فعالیت مهم باید صورت بگیرد. اول، مجموعه کاملی از الگوهایی که با قرارگیری در موقعیتهای متفاوت از ساختار پایه دور شده اند و توسط ابزارهای خودکار شناسایی با الگویی نظیر استراتژی اشتباه گرفته شده اند و همچنین مجموعه کاملی از انعطافاتی که مربوط به هر الگو میباشد، باید فراهم گردد. سپس تولید مقادیر برای معیارهای استخراج شده در این تحقیق که همان پیش بینی کنندهها میباشند انجام میگیرد. بنابراین در این فصل ابتدا تمام معیارهای استخراج شده در این تحقیق شرح داده می شود. سپس توضیحی در مورد چگونگی تولید مجموعه داده برای عملیات تصحیح برچسب و پالایش فراهم میگردد.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت nefo.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
-
-
-
- معیارهای استخراج شده
-
-
معیارهای جدید استخراج شده در این تحقیق، با بررسی و مشاهده دقیق مجموعه ای تقریبا کامل از انعطاف پذیریهای هر الگوی طراحی از کد منبع استخراج شده اند. در استخراج این معیارها سعی شده است که علاوه بر بررسی انعطافات یک الگو، ابزارهای خودکار مختلف در شناسایی آن الگو به منظور مشاهده نقص و کمبودهای آنها مورد بررسی قرار گیرند. ابزارها بررسی می شوند چون در این تحقیق قصد بر آن است که نتایج شناسایی شده توسط آن ابزار ها به حد قابل قبولی بهبود یابند.
با بررسی ابزارها، خطاها و کمبودهای هر ابزار شناسایی را جستجو و با استخراج معیارها سعی بر رفع آن میکنیم. مجموعه معیارهای استخراج شده برای تصحیح برچسب الگوی استراتژی و تشخیص صحیح آن از هشت الگوی “وضعیت"، “استراتژی"، “تطبیق دهنده"، “فرمان"، “ملاقات کننده"، “میانجی"، “آذیین کننده"، “ترکیب” و"کارخانه انتزاعی” به کار گرفته می شوند.
۴-۲-۱٫ استراتژی
شکل ۴-۱٫ ساختار یک الگوی استراتژی
هدف الگو استراتژی، تعریف خانوادهای از الگوریتمها برای یک عمل مشترک (مثل الگوریتم های quik sort- buble sort برای عمل sort)، در پوشینه[۴۲] قرار دادن هرکدام و ایجاد امکانی برای تعویض آنها در یک زمینه خاص و در زمان اجرا است [۱۴][۱]. این الگو از سه نقش تشکیل می شود : استراتژی، استراتژیهای عملی، و زمینه. استراتژی، رابط یا یک کلاس منتزع است که از یک متدکه اسکلت مشترک این خانواده را معین می کند تشکیل شده است. این متد توسط هر یک از کلاسهای استراتژی عملی برای دربرگرفتن یکی از تنوع الگوریتمها، پیادهسازی می شود. زمینه، کلاسی است که از الگوریتمها استفاده می کند و شرایطی را ایجاد می کند که بتوانیم استراتژیها یا الگوریتمها را بر حسب شرایط مختلف در زمان اجرا تعویضکنیم.
در سادهترین شکل همانطور که در شکل ۱-۴ نشان داده شده است، الگوی استراتژی یک رابط مشترک را مثل ” Interface Algorithm ” برای پیادهکردن خانوادهای از الگوریتمهای مرتبط به هم استفاده می کند. بطوریکه هر استراتژی وارث در چارچوب این رابط مشترک، یک تنوع از الگوریتم را پیادهسازی می کند. در واقع مشترک بودن رابط (بین گونه های مختلف الگوریتم) این امکان را فراهم می کند که در یک زمینه خاص با فراخوانیهای ثابت، اشیا استراتژی بتوانند در زمان اجرا جابجا شوند. شکل ۲-۴ را مشاهده کنید.
شکل ۴-۲٫ نیاز به رابط مشترک در ساختار فراخوانی ثابت بین اشیاء متغیر
مشترک بودن رابط باعث می شود که الگوریتمها بتوانند به راحتی با یکدیگر در زمان اجرا، در زمینهای خاص، و در چارچوب فراخوانی ثابت مبادله شوند. اگر یک استراتژی واقعی این پایه را حفظ کند، تشخیص الگوی استراتژی سختی زیادی ندارد.
ازجمله معیارهایی که در کارهای پیشین برای پالایش کاندیدهای الگوی استراتژی ارائه شده اند، در ادامه مورد نقد و بررسی قرار گرفتهاند.
-
- بررسی حضور رابطه پیوند بین زمینه و استراتژی.
-
- شمارش تعداد فرزندان استراتژی با محدودیت حداقل دو فرزند.
-
- شمارش تعداد فرزندان و والد زمینه با محدودیت صفر فرزند و صفر والد.
-
- سنجش حضور الگوریتم در هر یک از کلاسهای وارث استراتژی، با شمارش تعداد حلقهها، بازگشتها، و ساختارهای شرطی.
-
- بررسی حضور خصوصیت “حفظ فیلد[۴۳]” (استراتژیها، علاوه بر اینکه در لحظه ساخت نمونه از زمینه، و از طریق پارامتر سازنده قابل تعیین هستند، باید در هر لحظه دیگر از اجرا نیز قابل تعیین و جابجایی باشند) در زمینه برای جابجایی بین استراتژیها.
در نقد و تحسین هر یک از معیارهای فوق، موارد زیر قابل بحث هستند: دررابطه با حضور رابطه پیوند، نیازمند بررسی است، اما جزء معیارهای مشابه بین این الگو و برخی از الگوهای دیگر است. تعداد فرزندان استراتژی، یک استراتژی حقیقی می تواند تک فرزند باشد و درآینده بر حسب نیازمندیها گسترش یابد. تعداد فرزندان و والد زمینه، زمینه مکانی است که الگوریتمها در آن مورد استفاده قرار میگیرند، بنابراین زمینه، هر سلسله مراتبی می تواند داشته باشد. سنجش خصوصیت الگوریتمیک در هر استراتژی وارث، این معیار،کاملا بجا، و نیازمند بررسی است. اما در رابطه با شمارش تعداد حلقهها، بازگشتها، و ساختارهای شرطی، برای همه الگوریتمها صدق نمیکند. یک الگوریتم ممکن است از یک خط مثل “return a+b; ” تا هزاران خط شامل حلقه و بازگشتها باشد. از طرفی خیلی از الگوها برای برخی از پیادهسازیهای خود از چنین ساختارهایی استفاده می کنند.
حفظ فیلد، یک خصیصه لازم (به منظور ایجاد امکان تعویض الگوریتم ها در هر لحظهای از اجرا توسط کلاینت) در زمینه است. اما حضور آن در زمینه، لزوما نشان دهنده این نیست که سلسله مراتب مرتبط شده به آن یک استراتژی است.
اگر به شکل ۳-۴ که یکی از نمونههای واقعی استراتژی پیادهسازی شده در نرم افزار jhotdraw است توجه کنید، این نمونه واقعی از استراتژی، فقط یک پیادهسازی دارد، بدیهی است که بر حسب نیازمندیها درآینده پیادهسازیهای دیگر آن گسترش خواهند یافت. بر طبق شکل ۳-۴ این نمونه استراتژی چهار متد دارد. این نمونه توسط معیارهای قبلی قابل شناسایی نیست. بر اساس این اصل، “به منظور پیادهکردن خانوادهای از الگوریتمها درکنار هم برای یک عمل مشترک، و ایجاد امکانی برای جابجایی بین آنها در یک زمینه خاص با ساختار فراخوانی ثابت"، و بر حسب “ هر الگوریتم مجموعه ای از دستور العملهاست که طبق یک ترتیب خاص اجرا میشوند و مسالهای را حل می کنند ” [۲۳]، حتما باید یک چارچوب یا اسکلت مشترک وجود داشته باشدکه بخشهای مختلف یک الگوریتم را تعریف، و ترتیب آن را مشخص کند، و آن چارچوب به عنوان ساختار ثابت فراخوانی توسط زمینه مورد استفاده قرار گیرد (خصوصا برای استراتژیهای دارای چند متد). در این کار، این اصل به عنوان یک شاخص در نظر گرفته شده است و به یکی از چهار روش شناسایی می شود.
-
- گاهی دستورالعملهای الگوریتم با یک ترتیب مشخص، در کلاس استراتژی منتزع به شکل یک “متد الگو[۴۴] ” تعریف میشوند. متد الگو یک ترتیب ثابت را برای گونه های مختلف الگوریتم فراهم می کند. این متد در هیچ یک از کلاس های وارث رونویسی نمی شود و توسط زمینه به عنوان ساختار فراخوانی ثابت، فراخوانی می شود.
-
- زمینه ترتیب ثابتی را از دستورالعملهای الگوریتم در یکی از متدهای خودش تعریف می کند.
-
- برای داشتن ترتیبهای متنوع بین دستورالعملها، این اسکلتبندی درهر کلاس وارث استراتژی، در قالب یک متد مشترک بین استراتژیها انجام میگیرد و آن متد توسط زمینه فراخوانی میگردد.
-
- متدهای استراتژی منتزع در هر کلاس وارث به شکل یک زنجیر یکدیگر را فراخوانی می کنند، بطوریکه سر زنجیر بین همه استراتژی های وارث، مشترک است. زمینه سر زنجیر را فراخوانی می کند.
این معیار (استراتژی ۱[۴۵]) می تواند شاخص خوبی برای تشخیص استراتژیها، خصوصا استراتژیها با بیش از یک رابط و کمتر از دو پیادهسازی در کنار معیارهایی که در ادامه آمدهاند، باشد. شکل ۴-۴ اسکلت تعریف الگوریتم شکل ۳-۴ را به روش سوم نشان میدهد.
شکل ۴-۳٫ نمونه واقعی از الگو استراتژی و رابطهای آن
SetManager()
{