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