شیوه ­های بحث شده در بخش قبل قادر به تشخیص الگوهایی که از نظر ساختاری یکسان اما رفتار متفاوتی دارند نظیر الگوی” استراتژی” در مقابل الگوی"وضعیت ” نیستند. شیوه­ هایی که جنبه­ های رفتاری را هدف قرار می­ دهند، سعی می­ کنند این مساله را با بهره گرفتن از یاد­گیری ماشین، تحلیل پویا[۷] [۲۴] یا تحلیل ایستا[۸] حل کنند [۵].
تجزیه و تحلیل پویا
این شیوه ­ها از داده ­های زمان اجرا[۹] برای تشخیص جنبه­ های رفتاری الگو­ها استفاده می­ کنند. کی تی [۲۲]، تنها از تجزیه و تحلیل پویا برای تشخیص الگوی “زنجیره مسئولیت ­ها[۱۰]” استفاده کرد اما نتیجه­اش موفقیت­آمیز نبود (به دلیل نامناسب بودن مکانیزم رخداد نگارى کردن پیام[۱۱] و ناکافی بودن داده آزمایش). تجزیه و تحلیل پویا به پوشش خوبی از داده­ آزمایش به منظور اعمال هر مسیر اجرایی ممکن نیازمند است. چنین داده آزمایش اغلب موجود نیست. حتی اگر داده­ آزمایش هم موجود باشد، نتایج زمان اجرا ممکن است گمراه کننده باشند. چون چنین داده­هایی اصولا برای تشخیص دادن رفتار الگو­های خاص، طراحی نشده­اند [۵].
دانلود پایان نامه - مقاله - پروژه
تجزیه وتحلیل ایستا
‌‌‌این روش­ها اصولا شیوه ­های تجزیه و تحلیل ایستا را به درخت معنایی منتزع[۱۲] در بدنه متدها اعمال می­ کنند. مرجع [۲۵] بیانیه­های “ایجاد شی غیرحساس به مسیر”[۱۳] را برای تشخیص الگوهای “[۱۴]کارخانه­ انتزاعی” و"متد کارخانه”[۱۵] استفاده کرد. برای شناسایی الگوها با ساختار و عملکرد مشابه، بیرون کشیدن هدف الگو در پیاده­­سازی، به منظور متمایزسازی آنها بسیار مهم است. اما اکثر چنین شیوه­ هایی قادر نیستند هدف برنامه را بیرون بکشند [۵].
در این کار، ابزارهای خودکار شناسایی الگوهای طراحی با دو عمل “پالایش” و “تصحیح برچسب” گسترش می­یابند. عمل پالایش، بیشترین یا حتی همه­ مثبت کاذب­های تولید شده در خروجی ابزارهای خودکار را شناسایی می­ کند. در­حالیکه تصحیح برچسب، هویت صحیح نمونه مثبت کاذب را (بر حسب اینکه مثبت کاذب، به دلیل شباهت با کدام الگو مثبت کاذب شده است) با بهره گرفتن از معیارهای تعریف شده در این کار و روش­های داده ­کاوی شناسایی می­ کند. به طور مثال اگر نمونه­ شناسایی شده توسط ابزارهای خودکار، با برچسب “استراتژی” شناسایی شده است اما در حقیقت این نمونه استراتژی نبوده، ابتدا به عنوان مثبت کاذب شناخته می­ شود (پالایش)، سپس برچسب صحیح آن (بر حسب مقادیر معیارها) تشخیص داده می­ شود.
به طور­مثال بر­چسب صحیح آن ممکن است الگوی “وضعیت” باشد. بنابراین برچسب استراتژی به وضعیت تغییر می­ کند. با­ استفاده از این معیار­ها و روش­های داده ­کاوی علاوه برنمونه­های مثبت­­­کاذب، نمونه­های منفی­کاذب نیز در برخی موقعیت­ها کاهش می­یابند. چون وقتی یک برچسب تصحیح می­ شود مثلا از استراتژی به وضعیت، ممکن است این نمونه وضعیت جزء نمونه­­های شناسایی شده برای الگوی وضعیت نباشد، بنابراین این نمونه­ وضعیت یک منفی­کاذب شمرده شده که با شناسایی آن، یک منفی کاذب را حذف کرده­ایم.
با توجه به اینکه ابزارها و روش­های پیشین، بیشترین مثبت کاذب را در شناسایی الگوهای با ساختار و عملکرد مشابه تولید می­ کنند، در این­کار، سعی شده تا خروجی ابزارها با توانایی شناسایی چنین الگوهایی تصحیح گردد. لذا، تصحیح برچسب روی نمونه­های استخراج شده­ الگوی استراتژی (به دلیل داشتن شباهت­های ساختاری و عملکردی با الگوهای دیگر، بر حسب خروجی ابزارها بیشترین مثبت کاذب در شناسایی آن تولید شده است) انجام می­ شود. ابتدا براساس روش­های عرف داده ­کاوی، با نمونه­های مثبت کاذب و مثبت صحیح الگوی استراتژی بدست آمده توسط ابزارها، یک مجموعه داده­ تهیه شده است. سپس بر اساس مستندات موجود و همچنین بازبینی دستی، به منظور پیش ­بینی هویت صحیح هر نمونه، دو ستون در مجموعه داده تعیین شده است. یک ستون با “درست” و “نادرست” (درست، در صورت شناسایی صحیح توسط ابزارها و نادرست در صورت مثبت کاذب بودن) برچسب می­خورد، و ستون دیگر با نام الگو صحیح آن نمونه یا در صورت ناشناس بودن، با بدون الگو برچسب می­گیرد. سپس مقادیر معیارها یا پیش­­بینی کننده­ های استخراج شده در این کار، روی هر نمونه محاسبه می­شوند و نهایتآَ مجموعه داده در اختیار الگوریتم­های داده ­کاوی جهت مدل­سازی قرار می­گیرند. در مدل­سازی سعی می­ شود دانش موجود در داده ­ها، در قالب یک سری قوانین استخراج شوند. این قوانین برای شناسایی نمونه­های ناشناخته (جدید) در مجموعه داده­ مورد استفاده قرار می­گیرند.
آزمایش­ها، با بهره گرفتن از سه الگوریتم یادگیری ماشینC5.0 ، Boostingو SVMانجام شده است. روش پیشنهادی روی سه نرم افزارمتن باز jhotdraw6[6]، jrefactory[7] و javaio [8] انجام شده است. الگوهای پیاده شده در این پروژه­ ها از ساختار پایه­ای که برای آنها در کتاب­ها معرفی شده است بسیار فاصله گرفته­اند (الگو ها بسیار انعطاف پذیر هستند و توسط هر برنامه­نویس می­توانند به روش­های متفاوتی پیاده­سازی شوند و هم چنین ترکیب شوند) بنابراین شناسایی چنین الگوهایی دشواری­های خاص خودش را دارد [۲].
در این کار، معیارهای جدید به عنوان پیش­گویی کننده­ های عملیات تصحیح برچسب و پالایش، روی نمونه­های خروجی الگوی طراحی “استراتژی” یافت شده توسط ابزار­های [۹] SSA و [۵] PINOT استفاده شده ­اند. ابتدا مثبت کاذب­های استراتژی تشخیص داده می­شوند و سپس الگوی طراحی صحیح موجود در نمونه مثبت کاذب شناسایی می­ شود. نمونه­های مثبت کاذب به سمت نمونه­ها­ی مثبت صحیح با تشخیص آنها از الگوهای “وضعیت[۱۶]“، “استراتژی[۱۷]“، “تطبیق­دهنده[۱۸]“، “فرمان[۱۹]“، “ملاقات­کننده[۲۰]“، “میانجی[۲۱]“، “آذیین کننده[۲۲]“، “ترکیب[۲۳]” و"کارخانه انتزاعی[۲۴]“حرکت می­ کنند. همچنین این معیارها می­توانند الگوهایی که ساختار کاملا مشابهی به یکدیگر دارند نظیر"وضعیت از استراتژی “، “تطبیق دهنده از فرمان"، “آذیین کننده از ترکیب” و استراتژی را از هشت الگوی دیگر مورد مطالعه در این تحقیق متمایز کنند. این الگوها در نظر گرفته شدند، چون بیشترین مثبت کاذب موجود در نتایج الگوی استراتژی با اشتباه گرفتن با این الگو­ها بر حسب ساختار و عملکرد مشابه تولید شده است.
به طور کلی غیر از الگوهایی که از پایه ساختار یکسانی دارند بقیه الگو­ها به دلیل انعطاف، وقتی که از ساختار پایه دور می­شوند ساختار مشابهی به برخی الگوهای دیگر پیدا می­ کنند. در واقع معیارهای استخراج شده در این کار، با بهره گرفتن از الگوریتم­های داده ­کاوی، نقص­ها و کمبود­های دیده نشده در ابزار­ها را رفع می­ کنند.
ادامه­ این تحقیق به بخشهای زیر سازماندهی می­ شود. در بخش دوم بر چند مقاله که اهداف و شیوه­ مشابه­ای با شیوه و هدف این تحقیق دارند، مروری خواهیم داشت. در بخش سوم الگوهای مورد مطالعه در این تحقیق و معیار­های استخراج شده شرح داده می­شوند. در بخش چهارم نگاهی بر شیوه ­های داده ­کاوی و مجموعه داده ایجاد شده خواهیم داشت. در بخش پنجم نتایج ارائه خواهند شد و نهایتا در بخش ششم نتیجه ­گیری و کار­های آتی پیشنهاد می­شوند.

 

        1. فرضیات و محدودیت های مساله

       

       

 

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

 

        1. ضرورت انجام تحقیق

       

       

 

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

 

        1. هدف از انجام تحقیق

       

       

 

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

 

        1. سرفصل مطالب

       

       

 

مطالب بیان شده در این پایان نامه در قالب شش فصل گردآوری شده اند که به طور خلاصه به شرح زیر است.
فصل دوم : تعاریف و مفاهیم اولیه

موضوعات: بدون موضوع
[پنجشنبه 1400-07-29] [ 06:40:00 ب.ظ ]