اگرچه طراحی یک نرمافزار شیگرا دشواریهای خاص خود را دارد، دشوارتر از آن، طراحی یک نرمافزار شیگرا با قابلیت استفاده مجدد است. الگوهای طراحی، استفاده از طراحیها و معماریهای موفق را آسان می کنند [1]. الگوهای طراحی راه حلهای اثبات شده و قابل اطمینان هستند که به منظور حل مسائلی که به طور مکرر در طراحی یک نرم افزار شیگرا رخ میدهد، مورد استفاده قرار میگیرند. یک الگوی طراحی هدف و ساختار واحد خودش را دارد. الگوها نقشها، مسئولیتها، نحوه همکاری کلاسها و نمونههای شرکت کننده در این همکاری را توصیف می کنند. بنابراین با استخراج الگوهای طراحی از کد منبع، قادر به آشکار کردن هدف و طرح یک سیستم نرمافزاری هستیم [5].
بکارگیری صحیح الگوهای طراحی در توسعه یک نرمافزار شیگرا، می تواند به طور چشمگیری کیفیت کد منبع را بر حسب نگهداشت پذیری و قابلیت استفاده مجدد بهبود دهد. مهمترین مساله نگهداشتپذیری سیستمهای نرمافزاری خصوصا سیستمهای قدیمی این است که فاقد سند کامل از طرح سیستم و اهداف آن هستند. بنابراین شناسایی الگوهای طراحی به صورت خودکار یا نیمه خودکار، سندسازی سیستم، نگهداشتپذیری و قابلیت استفاده مجدد آن را تسهیل می کند.
محققان بسیاری در زمینه شناسایی الگوهای طراحی، کار کرده اند (خودکار یا نیمه خودکار). اما هیچ کدام نتوانسته اند یک خروجی مطمئن
و بدون مثبت کاذب را در اختیار توسعهدهندگان قرار دهند. به طورکلی شیوه های شناسایی الگوهای طراحی به دودسته تقسیم میشوند. آنهایی که بر اساس جنبه های ساختاری الگوها، کار شناسایی را انجام می دهند و آنهایی که از جنبه های رفتاری موجود در الگوها نیز جهت شناسایی بهره میگیرند [5].
هدف قرار دادن جنبه های ساختاری
برخی از شیوهها، برای شناسایی الگوها، تنها جنبه ساختاری آنها را در نظر میگیرند. ابتدا خصوصیات ساختاری هرکلاس موجود در کد منبع با هر نقش تشکیل دهنده یک الگو مقایسه و کاندیدهای هر نقش شناسایی می شود. سپس کاندیدهای نقشهایی که میتوانند به هم مرتبط شوند، ترکیب میشوند. در نهایت روابط میان کلاسی را بدون توجه به خصوصیات رفتاری، تجزیه و تحلیل و با الگوها مقایسه می کنند. روابط میان کلاسی شامل ارث بری، انواع برگشتی، تعریف[1]، تعمیم[2]، پیوند[3]، و … میشوند. به عنوان مثال SPOOL [19]،DP++ [18]، Osprey [20]، و [21] به شیوه ساختاری فوق، الگوها را شناسایی می کنند.
بالانیا و همکارانش [3] با بهره گرفتن ازیک چارچوب به نام کولامبوس، گرافهای معنایی منتزع[4] را استخراج، و برای شناسایی الگوها بر اساس مقایسه گرافها[5] عمل کردند [5]. همچنین [2] از معناشناسی صریح[6] برای پیدا کردن الگوها روی گراف معنایی منتزع بهره میگیرد. در هر حال برای شناسایی الگوها، علاوه بر خصوصیات ساختاری، تجزیه و تحلیل خصوصیات رفتاری نیز ضروری است.
فرم در حال بارگذاری ...