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