1. تولید مجموعه داده ها

        1. مقدمه

برای آماده ­سازی مجموعه داده مورد نیاز جهت خودکار­کردن عملیات تصحیح برچسب و پالایش، دو فعالیت مهم باید صورت بگیرد. اول، مجموعه کاملی از الگوهایی که با قرار­گیری در موقعیت­های متفاوت از ساختار پایه دور شده ­اند و توسط ابزارهای خودکار شناسایی با الگویی نظیر استراتژی اشتباه گرفته شده ­اند و همچنین مجموعه کاملی از انعطافاتی که مربوط به هر الگو می­باشد، باید فراهم گردد. سپس تولید مقادیر برای معیارهای استخراج شده در این تحقیق که همان پیش ­بینی کننده­ها می­باشند انجام می­گیرد. بنابراین در این فصل ابتدا تمام معیارهای استخراج شده در این تحقیق شرح داده می­ شود. سپس توضیحی در مورد چگونگی تولید مجموعه داده برای عملیات تصحیح برچسب و پالایش فراهم می­گردد.

( اینجا فقط تکه ای از متن پایان نامه درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. )

        1. معیارهای استخراج شده

معیارهای جدید استخراج شده در این تحقیق، با بررسی و مشاهده دقیق مجموعه ­ای تقریبا کامل از انعطاف پذیری­های هر الگو­ی طراحی از کد منبع استخراج شده ­اند. در استخراج این معیارها سعی شده است که علاوه بر بررسی انعطافات یک الگو، ابزار­های خودکار مختلف در شناسایی آن الگو به منظور مشاهد­ه­ نقص و کمبود­های آنها مورد بررسی قرار گیرند. ابزار­ها بررسی می شوند چون در این تحقیق قصد بر آن است که نتایج شناسایی شده توسط آن ابزار ها به حد قابل قبولی بهبود یابند.
با بررسی ابزار­ها، خطاها و کمبودهای هر ابزار شناسایی را جستجو و با استخراج معیارها سعی بر رفع آن می­کنیم. مجموعه معیارهای استخراج شده برای تصحیح برچسب الگوی استراتژی و تشخیص صحیح آن از هشت الگوی “وضعیت"، “استراتژی"، “تطبیق دهنده"، “فرمان"، “ملاقات کننده"، “میانجی"، “آذیین کننده"، “ترکیب” و"کارخانه انتزاعی” به کار گرفته می شوند.
۴-۲-۱٫ استراتژی

شکل ۴-۱٫ ساختار یک الگوی استراتژی
هدف الگو استراتژی، تعریف خانواده­ای از الگوریتم­ها برای یک عمل مشترک (مثل الگوریتم های quik sort- buble sort برای عمل sort)، در پوشینه[۴۲] قرار دادن هرکدام و ایجاد امکانی برای تعویض آنها در یک زمینه­ خاص و در زمان اجرا است [۱۴][۱]. این الگو از سه نقش تشکیل می­ شود : استراتژی، استراتژیهای عملی، و زمینه. استراتژی، رابط یا یک کلاس منتزع است که از یک متدکه اسکلت مشترک این خانواده را معین می­ کند تشکیل شده است. این متد توسط هر یک از کلاس­های استراتژی عملی برای دربرگرفتن یکی از تنوع الگوریتم­ها، پیاده­سازی می­ شود. زمینه، کلاسی است که از الگوریتم­ها استفاده می­ کند و شرایطی را ایجاد می­ کند که بتوانیم استراتژی­ها یا الگوریتم­ها را بر حسب شرایط مختلف در زمان اجرا تعویض­کنیم.
در ساده­ترین شکل همانطور که در شکل ۱-۴ نشان داده شده است، الگوی استراتژی یک رابط مشترک را مثل ” Interface Algorithm­ ” برای پیاده­کردن خانواده­ای از الگوریتم­های مرتبط به هم استفاده می­ کند. بطوریکه هر استراتژی وارث در چارچوب این رابط مشترک، یک تنوع از الگوریتم را پیاده­سازی می­ کند. در واقع مشترک بودن رابط (بین گونه­ های مختلف الگوریتم) این امکان را فراهم می­ کند که در یک زمینه خاص با فراخوانی­های ثابت، اشیا استراتژی بتوانند در زمان اجرا جابجا شوند. شکل ۲-۴ را مشاهده کنید.
شکل ۴-۲٫ نیاز به رابط مشترک در ساختار فراخوانی ثابت بین اشیاء متغیر
مشترک بودن رابط باعث می­ شود که الگوریتم­ها بتوانند به راحتی با یکدیگر در زمان اجرا، در زمینه­ای خاص، و در چارچوب فراخوانی ثابت مبادله شوند. اگر یک استراتژی واقعی این پایه را حفظ کند، تشخیص الگوی استراتژی سختی زیادی ندارد.
ازجمله معیارهایی که در کارهای پیشین برای پالایش کاندیدهای الگوی استراتژی ارائه شده ­اند، در ادامه مورد نقد و بررسی قرار گرفته­اند.

    • بررسی حضور رابطه­ پیوند بین زمینه و استراتژی.
    • شمارش تعداد فرزندان استراتژی با محدودیت حداقل دو فرزند.
    • شمارش تعداد فرزندان و والد زمینه با محدودیت صفر فرزند و صفر والد.
    • سنجش حضور الگوریتم در هر یک از کلاس­های وارث استراتژی، با شمارش تعداد حلقه­ها، بازگشت­ها، و ساختار­های شرطی.
    • بررسی حضور خصوصیت “حفظ فیلد[۴۳]” (استراتژی­ها، علاوه بر اینکه در لحظه­ ساخت نمونه از زمینه، و از طریق پارامتر سازنده قابل تعیین هستند، باید در هر لحظه­ دیگر از اجرا نیز قابل تعیین و جابجایی باشند) در زمینه برای جابجایی بین استراتژی­ها.

در نقد و تحسین هر یک از معیارهای فوق، موارد زیر قابل بحث هستند: دررابطه با حضور رابطه پیوند، نیازمند بررسی است، اما جزء معیارهای مشابه بین این الگو و برخی از الگوهای دیگر است. تعداد فرزندان استراتژی، یک استراتژی حقیقی می ­تواند تک فرزند باشد و درآینده بر حسب نیازمندی­ها گسترش یابد. تعداد فرزندان و والد زمینه، زمینه مکانی است که الگوریتم­ها در آن مورد استفاده قرار می­گیرند، بنابراین زمینه، هر سلسله مراتبی می ­تواند داشته باشد. سنجش خصوصیت الگوریتمیک در هر استراتژی وارث، این معیار،کاملا بجا، و نیازمند بررسی است. اما در رابطه با شمارش تعداد حلقه­ها، بازگشت­ها، و ساختارهای شرطی، برای همه­ الگوریتم­ها صدق نمی­کند. یک الگوریتم ممکن است از یک خط مثل “return a+b; ” تا هزاران خط شامل حلقه و بازگشت­ها باشد. از طرفی خیلی از الگوها برای برخی از پیاده­سازی­های خود از چنین ساختارهایی استفاده می­ کنند.
حفظ فیلد، یک خصیصه لازم (به منظور ایجاد امکان تعویض الگوریتم ها در هر لحظه­ای از اجرا توسط کلاینت) در زمینه است. اما حضور آن در زمینه، لزوما نشان دهنده­ این نیست که سلسله مراتب مرتبط شده به آن یک استراتژی است.
اگر به شکل ۳-۴ که یکی از نمونه­های واقعی استراتژی پیاده­سازی شده در نرم افزار jhotdraw است توجه کنید، این نمونه­ واقعی از استراتژی، فقط یک پیاده­سازی دارد، بدیهی است که بر حسب نیازمندی­ها درآینده پیاده­سازی­های دیگر آن گسترش خواهند یافت. بر طبق شکل ۳-۴ این نمونه استراتژی چهار متد دارد. این نمونه توسط معیارهای قبلی قابل شناسایی نیست. بر اساس این اصل، “به منظور پیاده­کردن خانواده­ای از الگوریتم­ها درکنار هم برای یک عمل مشترک، و ایجاد امکانی برای جابجایی بین آنها در یک زمینه­ خاص با ساختار فراخوانی ثابت"، و بر حسب “ هر الگوریتم مجموعه ­ای از دستور العمل­هاست که طبق یک ترتیب خاص اجرا می­شوند و مساله­ای را حل می­ کنند ” [۲۳]، حتما باید یک چارچوب یا اسکلت مشترک وجود داشته باشدکه بخشهای مختلف یک الگوریتم را تعریف، و ترتیب آن را مشخص کند، و آن چارچوب به عنوان ساختار ثابت فراخوانی توسط زمینه مورد استفاده قرار گیرد (خصوصا برای استراتژیهای دارای چند متد). در این کار، این اصل به عنوان یک شاخص در نظر گرفته شده است و به یکی از چهار روش شناسایی می­ شود.

    1. گاهی دستورالعمل­های الگوریتم با یک ترتیب مشخص، در کلاس استراتژی منتزع به شکل یک “متد الگو[۴۴] ” تعریف می­شوند. متد الگو یک ترتیب ثابت را برای گونه­ های مختلف الگوریتم فراهم می­ کند. این متد در هیچ یک از کلاس های وارث رونویسی نمی­ شود و توسط زمینه به عنوان ساختار فراخوانی ثابت، فراخوانی می­ شود.
    1. زمینه ترتیب ثابتی را از دستورالعمل­های الگوریتم در یکی از متدهای خودش تعریف می­ کند.
    1. برای داشتن ترتیب­های متنوع بین دستورالعمل­ها، این اسکلت­بندی درهر کلاس وارث استراتژی، در قالب یک متد مشترک بین استراتژی­ها انجام می­گیرد و آن متد توسط زمینه فراخوانی می­گردد.
    1. متدهای استراتژی منتزع در هر کلاس وارث به شکل یک زنجیر یکدیگر را فراخوانی می­ کنند، بطوریکه سر زنجیر بین همه­ استراتژی­ های وارث، مشترک است. زمینه سر زنجیر را فراخوانی می­ کند.

این معیار (استراتژی ۱[۴۵]) می ­تواند شاخص خوبی برای تشخیص استراتژی­ها، خصوصا استراتژی­ها با بیش از یک رابط و کمتر از دو پیاده­سازی در کنار معیارهایی که در ادامه آمده­اند، باشد. شکل ۴-۴ اسکلت تعریف الگوریتم شکل ۳-۴ را به روش سوم نشان می­دهد.
شکل ۴-۳٫ نمونه­ واقعی از الگو استراتژی و رابط­های آن
SetManager()
{

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...