Document Type : Research Article
Authors
1 Department of Computer Engineering, Iran University of Science and Technology, Tehran, Iran
2 Department of Computer Engineering, Shahid Bahonar University, Kerman, Iran
Abstract
Keywords
مهندسی کارایی نرمافزار[1]، [1] فرآیند ارزیابی کارایی نرمافزار در مرحله طراحی مدل نرمافزار است که علاوه بر کاهش هزینههای تولید، افزایش کیفیت و کارایی را بههمراه دارد. تحقیقات انجام شده در حوزه نرمافزارهای مبتنی بر قطعه[2] [2] خودکارسازی این فرآیند را بسیار مهم میشمارد زیرا طراح نرمافزار میتواند براحتی و بدون نیاز به تسلط در حوزه کارایی، مدلی با کیفیت بالا طراحی کند. در این مقاله فرآیند ارزیابی به دو زیرفرآیند عمده تفکیک شده است: تبدیل مدل و بازخورد. تبدیل مدل مرحلهای است که در آن مدل نرمافزار به مدل کارایی تبدیل میشود، در حالی که بازخورد مربوط به انعکاس پارامترها و یا مشخصههای بهینه کارایی از مدل کارایی به مدل نرمافزار است. در سالهای اخیر تحقیقات زیادی در حوزه تبدل مدل انجام شده است اما بهینهسازی خودکار و یا به عبارتی، ارائه مقادیر بهینه تنظیمات و مشخصههای کارایی در مدل نرمافزار به تحقیقات بیشتری نیاز دارد.
استفاده از الگوریتمهای بهینهسازی در مهندسی نرمافزار در [3] مرور شده است و بر مبنای همین الگوریتمها برای مساله ارزیابی کارایی نرمافزار روشهایی در [6-4] رائه شده است.
در برخی تحقیقات [4] تنها زمان پاسخ برای ارزیابی کارایی در نظر گرفته شده است، در حالی که پارامترهای مهمی همچون بهرهوری و توان عملیاتی منابع نرمافزاری و سختافزاری نیز به عنوان مشخصههای عمده کارایی محسوب میشوند. علاوه بر موارد ذکر شده، کنترل هزینههای توسعه و یا به عبارتی کاهش آن نیز از اهمیت زیادی برخوردار است. بنابراین، مساله مطرح شده، یک مساله بهینهسازی چندهدفه است. از این رو، این مقاله روشی را با استفاده از الگوریتم جمعیت پرندگان چند هدفه MOPSO [7] ارائه میکند که مقادیر بهینه مشخصههای کارایی توصیف شده در مدل نرمافزار را یافته، به طراح نرمافزار پیشنهاد میدهد.
ازجمله برتریهای الگوریتم جمعیت پرندگان در مقایسه با الگوریتمهای ژنتیک که به انتخاب آن برای این مساله منجر شد، این است که پاسخ بهینه، مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن، وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده پارامترها از مزیتهای دیگر این الگوریتم هستند[8].
در ادامه، ضمن بررسی پیشینه تحقیقاتی موضوع، مراحل ارزیابی کارایی تشریح میشوند. در بخش سوم با معرفی مسائل بهینهسازی چند هدفه به طرح رسمی مساله پرداخته، الگوریتم جمعیت پرندگان و نسخه چند هدفه، آن معرفی میکنیم. در انتها روش پیشنهادی بر روی یک سیستم نرمافزاری نمونه اعمال و نتایج بررسی و تحلیل میشود.
مدل کارایی در روشها و ابزارهای کلاسیک ارائه شده در ارزیابی کارایی [2] عمدتا بر شبکههای صف لایهای[3] و شبکههای پتری مبتنی هستند که اکثر این روشها پارامترهای کارایی را اندازهگیری کرده، اما امکان اعمال هیچ گونه بازخوردی به مدل نرمافزار را فراهم نمیکنند.
در [2] روش نیمهخودکاری مبتنی بر قانون برای یافتن مقادیر بهینه مشخصههای کارایی ارائه شده است. دانش لازم در قالب قوانین در اختیار سیستم قرار گرفته، کاوش به طور خودکار آغاز میشود و تا زمان رفع گلوگاهها و نیازهای کارایی و برقراری ثبات در سیستم ادامه پیدا میکند. این تحقیق به رفتار خاص نرمافزارهای مبتنی بر قطعه نمیپردازد، بلکه بر افزایش سرعت منابع سختافزاری برای رفع گلوگاهها تمرکز کرده است. همچنین، دامنه عملکرد آن وابسته و محدود به دانشی است که در اختیار سیستم قرار میگیرد.
در [5] روش خودکاری برای بهبود کارایی مدل نرمافزارهای مبتنی بر قطعه ارائه شده است. فضای طراحی شامل گزینههای مختلفی، مثل انتخاب قطعات مناسب و تنظیمات مشخصههای کارایی است. کاوش فضای طراحی به وسیله الگوریتم ژنتیک انجام میشود. کاندیدهای اولیه ایجاد شده، پس از کاوش، نتایج در اختیار طراح نرمافزار قرار میگیرد. بدین ترتیب، طراح نرمافزار براحتی مدلی با کیفیت بالا تولید میکند. با این روش خلا بین استفاده از روشهای کلاسیک و بهبود خودکار مدل نرمافزار پر میشود، اما نقطه ضعف این روش این است که مدلی را برای هزینه به عنوان یکی از توابع هدف درنظر نگرفته است.
در [6] روش دیگری برای بهبود کارایی و قابلیت اعتماد نرمافزارهای سرویسگرا ارائه شده است. اساس کار پیدا کردن بهینه پرتو در الگوریتمهای تکاملی چند هدفه است. فضای طراحی شامل اختصاص قطعه مناسب، انتخاب از بین قطعات همسان و سرعت منابع سختافزاری است. زبان مدلسازی در این روش [9]PCM [4] است که یک متا- مدل اختصاصی برای ارزیابی کارایی و قابلیت اعتماد نرمافزارهای سرویسگراست. از این رو، طراح نرمافزار باید مدل نرمافزار را که با استانداردهایی، همچون [10]UML مدل کرده به PCM تبدیل کند که این امر خود عدم یکپارچگی فرآیند ارزیابی کارایی در فرآیند تولید نرمافزار را بههمراه دارد. نکته درخور توجه دیگر این است که به علت پرداختن به قابلیت اعتماد به عنوان تابع هدف برای کارایی تنها پارامتر زمان پاسخ در نظر گرفته شده است.
با توجه به مطالب فوق، این تحقیق با تمرکز بر تسهیل فرآیند ارزیابی کارایی و یکپارچگی آن در فرآیند تولید نرمافزار بهبودها و ملاحظات زیر را در نظر گرفته است:
1. مدل نرمافزار بر مبنای UML است که استاندارد است.
2. در این تحقیق مشخصههای کارایی بیشتری مورد توجه قرار گرفتهاند. بهرهوری منابع سختافزاری و نرمافزاری که هدف، بیشینه شدن آنهاست، در کنار زمان پاسخ و هزینه که باید کمینه شوند، مدنظر گرفته شدهاند و مساله را به یک مساله سه هدفه تبدیل کرده است که اهداف آن در تقابل با یکدیگر هستند.
3. رفتار و عملکرد MOPSO در مساله ارزیابی کارایی بررسی شده است.
فرآیند ارزیابی کارایی مبتنی بر مدل که به آن مهندسی کارایی نرمافزار (SPE) گفته میشود و نخستین بار در [1] ارائه شده، یک فرآیند سیستماتیک برای تولید نرمافزاری است که نیازهای کارایی آن تامین شده باشد.
با استناد به این فرآیند مرجع، در ادامه مراحل ارزیابی تا خودکارسازی و بهینهسازی تشریح میشوند. همان طور که شکل (1) مراحل را نشان میدهد، در نخستین مرحله مدل نرمافزار با UML2 و با تکیه بر نمودارهای قطعه، فعالیت و استقرار که برای ارزیابی کارایی وجودشان ضروری است طراحی میشود. توصیف نیازهای کارایی و همچنین مشخصههای کارایی منابع سختافزاری و نرمافزاری با استفاده از پروفایل کارایی [11] MARTE، انجام میشود. این پروفایل دارای کلیشهها[5] و برچسبهایی است که براحتی نمودارها را حاشیهنویسی میکند. با توجه به رفتار خاص نرمافزارهای مبتنی بر قطعه در [12] برچسبهایی به منظور توصیف دقیقتر آنها اضافه شده است. در مراحل 3 و 4 تبدیل مدل نرمافزار به مدل کارایی انجام میشود. در این تحقیق، مدل کارایی [13- 14] CBML است که نسخه توسعهیافتهای از LQN برای مدل سازی کارایی نرمافزارهای مبتنی بر قطعه است و ابزار تبدیل طبق [12] پیادهسازی و استفاده میشود. مدل کارایی در مرحله 5 به وسیله ابزار LQNS[15] حل میشود. در مرحله 6 و به منظور حل مدل به صورت پارمتریک مدل کارایی طبق قالب ابزار [16]SPEX بازنویسی میشود.
روشهای زیادی [2] ارائه شده است که مشابه مراحل فوق را انجام میدهند، اما آنچه کمتر مورد توجه و بررسی قرار گرفته و عامل اساسی در فرآیند ارزیابی است، خودکارسازی آن است؛ بدین معنی که مقادیر مختلف مشخصههای کارایی در مدل قرار گرفته، ارزیابی میشوند تا زمانی که بهترین مقادیر به دست آید و براحتی در اختیار طراح قرار گیرند. آنچه در این تحقیق انجام شده، در قالب مراحل 7 و 8 و استفاده از الگوریتم MOPSO است که در بخشهای بعدی به تقصیل به آن پرداخته شده است.
شکل (1): فرآیند مهندسی کارایی نرمافزار
مسائل بهینهسازی چندهدفه [7] بیش از یک تابع هدف دارند. اگر آرایه متغیرهای ورودی یا به عبارتی بردار تصمیم باشد و ، در این صورت k هدف و تابع شایستگی تعریف میشود و هدف کمینه کردن است. البته، شرایط و قیدهای زیر را نیز میتوان در نظر گرفت:
همان طور که مشخص است، مسائل چندهدفه مجموعهای از جوابها را تولید میکنند که نسبت به هم برتری ندارند و این مجموعه را بهینه پرتو مینامند. تعاریف بهطور کامل در [17] آمده و در اینجا تنها به مفهوم مغلوب شدن اشاره میشود (در اینجا هدف کمینهسازی اهداف است).
تعریف 1: برای دو بردار گفته میشود بردار را مغلوب میکند( )، در صورتی که اگر رابطه برقرار باشد، آنگاه . به عبارت دیگر، در هیچ بعدی بدتر از نباشد. بدین ترتیب، بردار تصمیم xمتعلق به مجموعه مجاز یک پاسخ بهینه پرتو است، اگر بردار تصمیم دیگری مانند y متعلق به مجموعه مجاز F وجود نداشته باشد که بر آن غلبه کند.
نتایج حاصل از حل مدل کارایی، توان عملیاتی و بهرهوری هر یک از منابع نرمافزاری و سختافزاری بههمراه زمان پاسخ رویدادهاست که با انتساب به برچسبهای پروفایل کارایی به عنوان مقادیر صفات کیفی به مدل نرمافزار اعمال میشوند. رسیدن به وضعیتی که در آن کارایی سیستم مطلوب باشد، به تکرار مداوم فرآیند ارزیابی نیاز دارد. اگر تغییرات ساختاری در نظر گرفته نشود، سؤال اساسی این است که اعمال تغییر بر کدام صفت کیفی، کدام عنصر از مدل نرمافزار و به چه میزان، کارایی بهتری را بههمراه دارد. بدین ترتیب، اجرای این فرآیند بر اساس سعی و خطا، خصوصاً برای نرمافزارهای بزرگ بسیار زمانبر خواهد بود. لذا میتوان این مساله را در قالب یک مساله بهینهسازی مطرح کرد و از آنجا که کارایی تنها شامل یک هدف (زمان پاسخ کمینه) نمیشود و بهرهوری و توان عملیاتی منابع نیز از اهمیت بسزایی برخوردارند، مساله از نوع مسائل بهینهسازی چندهدفه است.
لازم است ابتدا مساله به طور کاملا شفاف و رسمی مطرح شود. همان طور که قبلا گفته شد، مشخصههای کارایی با استفاده از پروفایل کارایی در مدل نرمافزار حاشیهنویسی شدهاند. این مشخصهها معادل متغیرهای ورودی مساله و به قرار زیر هستند:
1. سرعت پردازندههای سرور که با برچسب PArate از کلیشه PAhost در نمودار استقرار مقداردهی میشود.
2. تعداد ریسمانهای هر شئ فعال که درمدل نرمافزار با برچسب PAmultiplicity از کلیشه PAstep مشخص میشود.
3. تعداد پردازندههای هر سرور
بنابراین، بردار تصمیم به ترتیب شامل موارد فوق و به صورت (1) خواهد بود. nو m به تعداد پردازنده و تعداد اشیا اشاره میکند.
(1) |
هر متغیر در بردار X به ترتیب به بندهای 1 تا 3 اشاره دارد. اهداف مساله به صورت زیر هستند:
1. زمان پاسخ باید کمینه شود و خروجی ابزار LQNS است.
2. هزینه برای کنترل و اعمال محدودیت در استفاده از منابع در نظر گرفته شده است. از آنجا که مسلم است، هر چه تعداد پردازندهها بیشتر باشد، زمان پاسخ کمتر خواهد شد، اما برای کنترل هزینه اعمال قید ضروری است. تابع هزینه که در واقع با سرعت و تعداد پردازندهها متناسب است از رابطه (2) به دست میآید و باید کمینه شود.
(2) |
cpu_speed و cpu_multiplicityبه ترتیب سرعت و تعداد پردازندهها روی سرور kام، s تعداد سرورها و H ضریب تاثیر سرعت روی هزینه را نشان میدهند.
3 . بهرهوری منابع که باید بیشینه باشد.
تحلیل دقیق موارد فوق تقابل و تضاد اهداف را نشان میدهد، زیرا برای دو هدف اول مقدار کمینه و برای هدف آخر مقدار بیشینه مدنظر است.
بهینهسازی جمعیت پرندگان یک روش جستجوی ابتکاری است (البته، طبق نظر مؤلف[18]) که پرواز پرندگان برای یافتن غذا را شبیهسازی میکند و خصوصا در سالهای اخیر بسیار استفاده شده است. این روش در مقایسه با روشهای دیگر مزیتهایی دارد، از جمله اینکه پاسخ بهینه مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده آن مزیتهای مهمی هستند[8].
در PSO هر جواب پیشنهادی که یک ذره نامیده میشود، یک نقطه در فضای جستجوست. هر ذره، در فضای جستجوی چند بعدی پرواز میکند و موقعیت خود را بر حسب تجربه خود و همسایگانش تغییر میدهد. کارایی هر ذره (میزان نزدیکی هر ذره به بهینه سراسری) بر اساس تابع شایستگی تعیین شده اندازهگیری میشود. این تابع متناسب با مساله تعریف میشود[19].
فرض کنید فضای جستجو D بعد داشته باشد و m ذره در جمعیت وجود داشته باشند. هر ذره در موقعیت Xi=[xi1,xi2,…,xiD] قرار گرفته، با سرعت Vi=[vi1, vi2, …, viD] حرکت میکند. هر ذره به سمت بهترین نقطهای که تا آن لحظه تجربه کرده؛ یعنی Pbesti=[pbesti1, pbesti2,…, pbestin] حرکت میکند. بهترین موقعیت در کل جمعیت نیز با Gbest=[gbest1, gbest2, …, gbestn] نمایش داده میشود. هر ذره موقعیت خود را برحسب سرعت مشخصی در هر تکرار تغییر میدهد که این سرعت به طور تصادفی و بر مبنای تمایل حرکت ذره به سمت pbest و gbest تنظیم میشود. برای هر ذره r در بعد s سرعت جدید؛ یعنی vrsو موقعیت جدید xrs بر اساس رابطه (3) و (4) به دست میآیند.
(3) |
|
(4) |
در روابط فوق t شماره تکرار وwوزن اینرسی است که برای کنترل سرعت و برقراری تعادل بین کاوش و بهرهگیری تعریف شده است. مقدار بزرگ برای w سرعت ذرات را زیاد و از افتادن آنها در بهینه محلی جلوگیری میکند. مقدار کوچک برای آن باعث کاهش سرعت و تشویق ذره به بهرهگیری از همان ناحیهای که در آن واقع است، میشود. ثابتهایc1 و c2ضریب شتاب هستند که میزان نزدیکی ذره به pbest و gbest را تعیین میکنند. r1 و r2 اعداد تصادفی مستقلی هستند که مقدار بین صفر و یک دارند. اتمام PSO میتواند بر اساس تعداد مشخصی تکرار یا رسیدن به مقدار تعیین شدهای از pbest باشد و یا زمانی که هیچ بهبود و تغییری در آن حاصل نشد، به پایان برسد.
مراحل الگوریتم PSO استاندارد به صورت زیر است[20]:
1. مقداردهی اولیه ذرات در موقعیتهای تصادفی با سرعت اولیه، روی D بعد فضای جستجو؛
2. بروزرسانی سرعت و موقعیت هر ذره طبق روابط (3) و (4)؛
4. محاسبه تابع شایستگی و بروزرسانی همزمان pbest و gbest در صورت نیاز؛
5. برگشت به مرحله 2 تا برقراری شرط اتمام.
نخستین نسخه چندهدفه الگوریتم جمعیت پرندگان در سال 1999 در [21] ارائه شد. الگوریتم چندهدفه مورد استفاده در این تحقیق MOPSO[7] است که مراحل آن در شکل (2) نشان داده شده است. این الگوریتم از عملگری به نام عملگر جهش واحد [22] استفاده میکند که یک عضو از جمعیت را انتخاب کرده، مقدار یک بعد آن را به عددی در محدوده مقادیر معتبر تغییر میدهد. همچنین، یک سیاست نخبهگرایی به منظور نگه داشتن نتایج برتر و غالب در تکرارهای الگوریتم تعریف شده است. پاسخهای غالب در آرشیو خارجی که ساختار گرید [23] دارد، ذخیره میشوند. دستاورد مدیریت صحیح آرشیو، تنوع جمعیت و توزیع مناسب پاسخهاست.
انتخاب pbest و gbest طبق مکانیزم خاصی انجام میشوند. الگوریتم چندهدفه نمیتواند از رابطه (3) برای شناسایی آنها استفاده کند، زیرا همه پاسخهای غالب به یک میزان برتری دارند. تنها زمانی pbest بروز میشود که ذره جدیدی مقدار قبلی آن را مغلوب کند. gbest نیز در هر تکرار از بین پاسخهای غالب موجود در آرشیو انتخاب میشود.
10. for(j=0to MAXPARTICLES){ 11. Update Velocity(); 12. Update Particle(); } 13. Keeping(); 14. Evaluate Pop(); 15. Update Fbest(); 16. Update Pbest(); 17. Insert nodom(); 18. Gbestpos = rnd(0,nodomfileSize) { 19. Print Statistics (); 20. GenerateOutfile(); } |
شکل (2): الگوریتم MOPSO [7]
برای بررسی راهکار بهینهسازی ارائه شده سیستم نرمافزاری فروشگاه الکترونیکی که امکان مدیریت محصولات، خرید و پرداخت الکترونیکی را فراهم میکند، در نظر گرفته شد.
ابتدا سیستم نرمافزاری با نرمافزار Enterprise Architect و بر مبنای UML2 مدل شد. نمودارهای قطعه، فعالیت و استقرار این نرمافزار در شکلهای 3 تا 5 آمده است. سپس نمودارهای مذکور با استفاده از پروفایل MARTE برای توصیف کارایی مدل حاشیهنویسی شدهاند که به منظور وضوح بیشتر این مشخصهها در خارج از نمودارها و در جداول (1) تا (3)آمدهاند.
پس از اینکه مدل کارایی به وسیله ابزار تولید شده به دست آمد، به منظور مشاهده نتایج اولیه با ابزار LQNS حل میشود.
جدول(1): مشخصههای کارایی نمودار قطعه
عنوان برچسب |
عنصر |
مقدار برچسب در قطعه خرید |
مقدار برچسب در قطعه پایگاه داده |
|
PAinstances |
Component |
1 |
1 |
|
PAcontainersched |
Component |
Fcfs |
Fcfs |
|
|
|
port-db-purchase |
port-purchase-item |
port-get-request |
PAmapping |
Port |
0/5 |
0/5 |
0/5 |
عنوان برچسب |
Client |
Purchase server |
Database server |
PAmultiplicity |
1 |
1 |
1 |
PAschdPolicy |
Ref |
Fcfs |
Fcfs |
PArate |
1 |
1 |
1 |
جدول (2): مشخصههای کارایی نمودار استقرار
شکل (2): نمودار قطعه
شکل (3):نمودار استقرار
شکل (4): نمودار فعالیت
جدول (3) : حاشیهنویسی نمودار فعالیت
|
قطعه خرید |
قطعه پایگاه داده |
|||||||||||||
عنوان برچسب |
Processing Request |
check availability |
Database Manager |
||||||||||||
PAmultiplicity |
1 |
1 |
1 |
||||||||||||
PApriority |
0 |
0 |
0 |
||||||||||||
|
Process |
Get info item |
Get info from db |
Send response |
Check availability |
response from db |
product massage |
Get Price |
price and purchase instruction |
get response |
Process Query |
Insert Query |
Select Query |
Update Query |
Send Response |
PAdemand |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
3 |
1 |
در نخستین مرحله از فاز بهینهسازی مدل کارایی طبق قالب ابزار SPEX بازنویسی میشود. سپس الگوریتم MOPSO پیادهسازی شده، این ابزار در پس زمینه برنامه بهینهسازی قرار میگیرد تا بر مبنای مقادیر بردار تصمیم، مقادیر توابع هدف را مشخص کند.
هر ذره یک بردار 5 بعدی به صورت ]تعداد پردارندههای سرور Purchase ، تعداد پردازندههای سرور database، تعداد ریسمانهای وظیفه Processing-Request، تعداد ریسمانهای وظیفه check-availability تعداد ریسمانهای وظیفه Database-manager] است که مقدار هر بعد عددی بین 1 تا 11 است و توابع هدف نیز طبق بخش 5 تعریف میشوند.
پارامترهای الگوریتم، طبق جدول (4) تنظیم میشوند.
جدول4: پارامترهای MOPSO
مقدار |
پارامتر |
100 |
تعداد تکرار |
15 |
اندازه جمعیت |
19 |
اندازه آرشیو |
5/0 |
اینرسی w |
5/0 |
نرخ جهش |
5/1 |
c1 |
2 |
c2 |
در آزمایش اول اندازه آرشیو 19 انتخاب شده است که بهینه پرتو بزرگتر و در نتیجه انتخابهای بیشتری را در اختیار طراح نرمافزار قرار میدهد. نمودار مربوطه در شکل (6) نشان داده شده است. در آزمایش دوم اندازه آرشیو به 10 کاهش داده شده است. بهینه پرتو تولید شده در جدول 5 و بردارهای تصمیم معادل و یا مجموعه پرتو در جدول(6) نمایش داده شدهاند. در واقع، در این مرحله هدف بررسی و مشاهده رفتار و عملکرد الگوریتم در هنگام کنترل اندازه آرشیو است.
|
* Archive during run
+Particles
|
شکل (6): نمودار حاصل از اجرای MOPSO با 3 تابع هدف
یکی از معیارهای ارزیابی الگوریتمهای چندهدفه، توزیع پاسخها در طول آرشیو است؛ به این معنی که اگر پاسخها به جای ازدحام در یک ناحیه در سراسر طول آرشیو توزیع شوند، تنوع و حق انتخاب بیشتری را فراهم کرده، کارایی الگوریتم را بالاتر میبرند. همان طور که بهینه پرتو جدول (5)نشان میدهد، الگوریتم MOPSO توانسته است با توزیع مناسب، انتخابهای متنوعی را به طراح پیشنهاد دهد. بدین ترتیب، طراح نرمافزار دیگر دغدغه تنظیم و کارکردن همراه با سعی و خطا را بر روی پارامترها و مشخصههای کارایی ندارد و میتواند مقادیری را که کارایی بیشتر و مطلوبتری را بههمراه داشته باشد، در مدل نرمافزار اعمال کند.
جدول (5) : بهینه پرتو جدول (6) : مجموعه پرتو
x1 |
x2 |
x3 |
x4 |
x5 |
|
F1(x) |
F2(x) |
F3(x) |
1 |
1 |
9 |
9 |
1 |
|
2 |
476/932 |
0/1049 |
1 |
2 |
10 |
6 |
5 |
|
3 |
399/475 |
0/1252 |
2 |
2 |
10 |
9 |
6 |
|
4 |
290/761 |
0/172 |
2 |
3 |
10 |
8 |
7 |
|
5 |
225/514 |
0/2217 |
3 |
3 |
10 |
10 |
10 |
|
6 |
194/115 |
0/2576 |
3 |
4 |
10 |
8 |
8 |
|
7 |
165/409 |
0/3023 |
4 |
6 |
10 |
8 |
10 |
|
10 |
129/296 |
0/3867 |
5 |
9 |
9 |
8 |
9 |
|
14 |
118/206 |
0/423 |
7 |
9 |
10 |
9 |
9 |
|
16 |
100/171 |
0/4991 |
9 |
10 |
10 |
10 |
9 |
|
19 |
97/8859 |
0/5108 |
10 |
10 |
10 |
10 |
10 |
|
20 |
97/5106 |
0/5128 |
در آزمایش سوم طول آرشیو 19 و به منظور مشاهده ساده تر رفتار الگوریتم، توابع هدف به دو تابع زمان پاسخ و هزینه کاهش داده شد. شکل (7) نمودار به دست آمده را نشان میدهد.
* Archive during run
+Particles
|
شکل (7): نمودار حاصل از اجرای MOPSO با دو تابع هدف
خودکارسازی فرآیند ارزیابی کارایی از اهمیت ویژهای برخوردار است، زیرا طراح نرمافزار میتواند به راحتی و بدون نیاز به تسلط در حوزه کارایی مدلی با کیفیت و کارایی بالا تولید کند. در این مقاله، روشی برای بهینهسازی خودکار کارایی مدل نرمافزار ارائه شده است که مقادیر بهینه تنظیمات و مشخصههای کارایی حاشیهنویسی شده در آن را پیشنهاد میکند. بهینهسازی مبتنی بر روش MOPSO است. به این ترتیب، ضمن اعمال این الگوریتم قدرتمند در حوزه ارزیابی کارایی، رفتار و عملکرد آن تحلیل و بررسی و پاسخهای رضایتبخشی حاصل شد. از طرف دیگر، در این مقاله به جای استفاده از متا-مدلهای اختصاصی کارایی، همان مدل استاندارد مبتنی بر UML با پروفایل کارایی حاشیهنویسی و به مدل کارایی CBML تبدیل شد تا طراح نرمافزار را از تسلط به حوزه کارایی بینیاز کند.
1- مقدمه
مهندسی کارایی نرمافزار[1]، [1] فرآیند ارزیابی کارایی نرمافزار در مرحله طراحی مدل نرمافزار است که علاوه بر کاهش هزینههای تولید، افزایش کیفیت و کارایی را بههمراه دارد. تحقیقات انجام شده در حوزه نرمافزارهای مبتنی بر قطعه[2] [2] خودکارسازی این فرآیند را بسیار مهم میشمارد زیرا طراح نرمافزار میتواند براحتی و بدون نیاز به تسلط در حوزه کارایی، مدلی با کیفیت بالا طراحی کند. در این مقاله فرآیند ارزیابی به دو زیرفرآیند عمده تفکیک شده است: تبدیل مدل و بازخورد. تبدیل مدل مرحلهای است که در آن مدل نرمافزار به مدل کارایی تبدیل میشود، در حالی که بازخورد مربوط به انعکاس پارامترها و یا مشخصههای بهینه کارایی از مدل کارایی به مدل نرمافزار است. در سالهای اخیر تحقیقات زیادی در حوزه تبدل مدل انجام شده است اما بهینهسازی خودکار و یا به عبارتی، ارائه مقادیر بهینه تنظیمات و مشخصههای کارایی در مدل نرمافزار به تحقیقات بیشتری نیاز دارد.
استفاده از الگوریتمهای بهینهسازی در مهندسی نرمافزار در [3] مرور شده است و بر مبنای همین الگوریتمها برای مساله ارزیابی کارایی نرمافزار روشهایی در [6-4] رائه شده است.
در برخی تحقیقات [4] تنها زمان پاسخ برای ارزیابی کارایی در نظر گرفته شده است، در حالی که پارامترهای مهمی همچون بهرهوری و توان عملیاتی منابع نرمافزاری و سختافزاری نیز به عنوان مشخصههای عمده کارایی محسوب میشوند. علاوه بر موارد ذکر شده، کنترل هزینههای توسعه و یا به عبارتی کاهش آن نیز از اهمیت زیادی برخوردار است. بنابراین، مساله مطرح شده، یک مساله بهینهسازی چندهدفه است. از این رو، این مقاله روشی را با استفاده از الگوریتم جمعیت پرندگان چند هدفه MOPSO [7] ارائه میکند که مقادیر بهینه مشخصههای کارایی توصیف شده در مدل نرمافزار را یافته، به طراح نرمافزار پیشنهاد میدهد.
ازجمله برتریهای الگوریتم جمعیت پرندگان در مقایسه با الگوریتمهای ژنتیک که به انتخاب آن برای این مساله منجر شد، این است که پاسخ بهینه، مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن، وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده پارامترها از مزیتهای دیگر این الگوریتم هستند[8].
در ادامه، ضمن بررسی پیشینه تحقیقاتی موضوع، مراحل ارزیابی کارایی تشریح میشوند. در بخش سوم با معرفی مسائل بهینهسازی چند هدفه به طرح رسمی مساله پرداخته، الگوریتم جمعیت پرندگان و نسخه چند هدفه، آن معرفی میکنیم. در انتها روش پیشنهادی بر روی یک سیستم نرمافزاری نمونه اعمال و نتایج بررسی و تحلیل میشود.
مدل کارایی در روشها و ابزارهای کلاسیک ارائه شده در ارزیابی کارایی [2] عمدتا بر شبکههای صف لایهای[3] و شبکههای پتری مبتنی هستند که اکثر این روشها پارامترهای کارایی را اندازهگیری کرده، اما امکان اعمال هیچ گونه بازخوردی به مدل نرمافزار را فراهم نمیکنند.
در [2] روش نیمهخودکاری مبتنی بر قانون برای یافتن مقادیر بهینه مشخصههای کارایی ارائه شده است. دانش لازم در قالب قوانین در اختیار سیستم قرار گرفته، کاوش به طور خودکار آغاز میشود و تا زمان رفع گلوگاهها و نیازهای کارایی و برقراری ثبات در سیستم ادامه پیدا میکند. این تحقیق به رفتار خاص نرمافزارهای مبتنی بر قطعه نمیپردازد، بلکه بر افزایش سرعت منابع سختافزاری برای رفع گلوگاهها تمرکز کرده است. همچنین، دامنه عملکرد آن وابسته و محدود به دانشی است که در اختیار سیستم قرار میگیرد.
در [5] روش خودکاری برای بهبود کارایی مدل نرمافزارهای مبتنی بر قطعه ارائه شده است. فضای طراحی شامل گزینههای مختلفی، مثل انتخاب قطعات مناسب و تنظیمات مشخصههای کارایی است. کاوش فضای طراحی به وسیله الگوریتم ژنتیک انجام میشود. کاندیدهای اولیه ایجاد شده، پس از کاوش، نتایج در اختیار طراح نرمافزار قرار میگیرد. بدین ترتیب، طراح نرمافزار براحتی مدلی با کیفیت بالا تولید میکند. با این روش خلا بین استفاده از روشهای کلاسیک و بهبود خودکار مدل نرمافزار پر میشود، اما نقطه ضعف این روش این است که مدلی را برای هزینه به عنوان یکی از توابع هدف درنظر نگرفته است.
در [6] روش دیگری برای بهبود کارایی و قابلیت اعتماد نرمافزارهای سرویسگرا ارائه شده است. اساس کار پیدا کردن بهینه پرتو در الگوریتمهای تکاملی چند هدفه است. فضای طراحی شامل اختصاص قطعه مناسب، انتخاب از بین قطعات همسان و سرعت منابع سختافزاری است. زبان مدلسازی در این روش [9]PCM [4] است که یک متا- مدل اختصاصی برای ارزیابی کارایی و قابلیت اعتماد نرمافزارهای سرویسگراست. از این رو، طراح نرمافزار باید مدل نرمافزار را که با استانداردهایی، همچون [10]UML مدل کرده به PCM تبدیل کند که این امر خود عدم یکپارچگی فرآیند ارزیابی کارایی در فرآیند تولید نرمافزار را بههمراه دارد. نکته درخور توجه دیگر این است که به علت پرداختن به قابلیت اعتماد به عنوان تابع هدف برای کارایی تنها پارامتر زمان پاسخ در نظر گرفته شده است.
با توجه به مطالب فوق، این تحقیق با تمرکز بر تسهیل فرآیند ارزیابی کارایی و یکپارچگی آن در فرآیند تولید نرمافزار بهبودها و ملاحظات زیر را در نظر گرفته است:
1. مدل نرمافزار بر مبنای UML است که استاندارد است.
2. در این تحقیق مشخصههای کارایی بیشتری مورد توجه قرار گرفتهاند. بهرهوری منابع سختافزاری و نرمافزاری که هدف، بیشینه شدن آنهاست، در کنار زمان پاسخ و هزینه که باید کمینه شوند، مدنظر گرفته شدهاند و مساله را به یک مساله سه هدفه تبدیل کرده است که اهداف آن در تقابل با یکدیگر هستند.
3. رفتار و عملکرد MOPSO در مساله ارزیابی کارایی بررسی شده است.
فرآیند ارزیابی کارایی مبتنی بر مدل که به آن مهندسی کارایی نرمافزار (SPE) گفته میشود و نخستین بار در [1] ارائه شده، یک فرآیند سیستماتیک برای تولید نرمافزاری است که نیازهای کارایی آن تامین شده باشد.
با استناد به این فرآیند مرجع، در ادامه مراحل ارزیابی تا خودکارسازی و بهینهسازی تشریح میشوند. همان طور که شکل (1) مراحل را نشان میدهد، در نخستین مرحله مدل نرمافزار با UML2 و با تکیه بر نمودارهای قطعه، فعالیت و استقرار که برای ارزیابی کارایی وجودشان ضروری است طراحی میشود. توصیف نیازهای کارایی و همچنین مشخصههای کارایی منابع سختافزاری و نرمافزاری با استفاده از پروفایل کارایی [11] MARTE، انجام میشود. این پروفایل دارای کلیشهها[5] و برچسبهایی است که براحتی نمودارها را حاشیهنویسی میکند. با توجه به رفتار خاص نرمافزارهای مبتنی بر قطعه در [12] برچسبهایی به منظور توصیف دقیقتر آنها اضافه شده است. در مراحل 3 و 4 تبدیل مدل نرمافزار به مدل کارایی انجام میشود. در این تحقیق، مدل کارایی [13- 14] CBML است که نسخه توسعهیافتهای از LQN برای مدل سازی کارایی نرمافزارهای مبتنی بر قطعه است و ابزار تبدیل طبق [12] پیادهسازی و استفاده میشود. مدل کارایی در مرحله 5 به وسیله ابزار LQNS[15] حل میشود. در مرحله 6 و به منظور حل مدل به صورت پارمتریک مدل کارایی طبق قالب ابزار [16]SPEX بازنویسی میشود.
روشهای زیادی [2] ارائه شده است که مشابه مراحل فوق را انجام میدهند، اما آنچه کمتر مورد توجه و بررسی قرار گرفته و عامل اساسی در فرآیند ارزیابی است، خودکارسازی آن است؛ بدین معنی که مقادیر مختلف مشخصههای کارایی در مدل قرار گرفته، ارزیابی میشوند تا زمانی که بهترین مقادیر به دست آید و براحتی در اختیار طراح قرار گیرند. آنچه در این تحقیق انجام شده، در قالب مراحل 7 و 8 و استفاده از الگوریتم MOPSO است که در بخشهای بعدی به تقصیل به آن پرداخته شده است.
شکل (1): فرآیند مهندسی کارایی نرمافزار
مسائل بهینهسازی چندهدفه [7] بیش از یک تابع هدف دارند. اگر آرایه متغیرهای ورودی یا به عبارتی بردار تصمیم باشد و ، در این صورت k هدف و تابع شایستگی تعریف میشود و هدف کمینه کردن است. البته، شرایط و قیدهای زیر را نیز میتوان در نظر گرفت:
همان طور که مشخص است، مسائل چندهدفه مجموعهای از جوابها را تولید میکنند که نسبت به هم برتری ندارند و این مجموعه را بهینه پرتو مینامند. تعاریف بهطور کامل در [17] آمده و در اینجا تنها به مفهوم مغلوب شدن اشاره میشود (در اینجا هدف کمینهسازی اهداف است).
تعریف 1: برای دو بردار گفته میشود بردار را مغلوب میکند( )، در صورتی که اگر رابطه برقرار باشد، آنگاه . به عبارت دیگر، در هیچ بعدی بدتر از نباشد. بدین ترتیب، بردار تصمیم xمتعلق به مجموعه مجاز یک پاسخ بهینه پرتو است، اگر بردار تصمیم دیگری مانند y متعلق به مجموعه مجاز F وجود نداشته باشد که بر آن غلبه کند.
نتایج حاصل از حل مدل کارایی، توان عملیاتی و بهرهوری هر یک از منابع نرمافزاری و سختافزاری بههمراه زمان پاسخ رویدادهاست که با انتساب به برچسبهای پروفایل کارایی به عنوان مقادیر صفات کیفی به مدل نرمافزار اعمال میشوند. رسیدن به وضعیتی که در آن کارایی سیستم مطلوب باشد، به تکرار مداوم فرآیند ارزیابی نیاز دارد. اگر تغییرات ساختاری در نظر گرفته نشود، سؤال اساسی این است که اعمال تغییر بر کدام صفت کیفی، کدام عنصر از مدل نرمافزار و به چه میزان، کارایی بهتری را بههمراه دارد. بدین ترتیب، اجرای این فرآیند بر اساس سعی و خطا، خصوصاً برای نرمافزارهای بزرگ بسیار زمانبر خواهد بود. لذا میتوان این مساله را در قالب یک مساله بهینهسازی مطرح کرد و از آنجا که کارایی تنها شامل یک هدف (زمان پاسخ کمینه) نمیشود و بهرهوری و توان عملیاتی منابع نیز از اهمیت بسزایی برخوردارند، مساله از نوع مسائل بهینهسازی چندهدفه است.
لازم است ابتدا مساله به طور کاملا شفاف و رسمی مطرح شود. همان طور که قبلا گفته شد، مشخصههای کارایی با استفاده از پروفایل کارایی در مدل نرمافزار حاشیهنویسی شدهاند. این مشخصهها معادل متغیرهای ورودی مساله و به قرار زیر هستند:
1. سرعت پردازندههای سرور که با برچسب PArate از کلیشه PAhost در نمودار استقرار مقداردهی میشود.
2. تعداد ریسمانهای هر شئ فعال که درمدل نرمافزار با برچسب PAmultiplicity از کلیشه PAstep مشخص میشود.
3. تعداد پردازندههای هر سرور
بنابراین، بردار تصمیم به ترتیب شامل موارد فوق و به صورت (1) خواهد بود. nو m به تعداد پردازنده و تعداد اشیا اشاره میکند.
(1) |
هر متغیر در بردار X به ترتیب به بندهای 1 تا 3 اشاره دارد. اهداف مساله به صورت زیر هستند:
1. زمان پاسخ باید کمینه شود و خروجی ابزار LQNS است.
2. هزینه برای کنترل و اعمال محدودیت در استفاده از منابع در نظر گرفته شده است. از آنجا که مسلم است، هر چه تعداد پردازندهها بیشتر باشد، زمان پاسخ کمتر خواهد شد، اما برای کنترل هزینه اعمال قید ضروری است. تابع هزینه که در واقع با سرعت و تعداد پردازندهها متناسب است از رابطه (2) به دست میآید و باید کمینه شود.
(2) |
cpu_speed و cpu_multiplicityبه ترتیب سرعت و تعداد پردازندهها روی سرور kام، s تعداد سرورها و H ضریب تاثیر سرعت روی هزینه را نشان میدهند.
3 . بهرهوری منابع که باید بیشینه باشد.
تحلیل دقیق موارد فوق تقابل و تضاد اهداف را نشان میدهد، زیرا برای دو هدف اول مقدار کمینه و برای هدف آخر مقدار بیشینه مدنظر است.
بهینهسازی جمعیت پرندگان یک روش جستجوی ابتکاری است (البته، طبق نظر مؤلف[18]) که پرواز پرندگان برای یافتن غذا را شبیهسازی میکند و خصوصا در سالهای اخیر بسیار استفاده شده است. این روش در مقایسه با روشهای دیگر مزیتهایی دارد، از جمله اینکه پاسخ بهینه مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده آن مزیتهای مهمی هستند[8].
در PSO هر جواب پیشنهادی که یک ذره نامیده میشود، یک نقطه در فضای جستجوست. هر ذره، در فضای جستجوی چند بعدی پرواز میکند و موقعیت خود را بر حسب تجربه خود و همسایگانش تغییر میدهد. کارایی هر ذره (میزان نزدیکی هر ذره به بهینه سراسری) بر اساس تابع شایستگی تعیین شده اندازهگیری میشود. این تابع متناسب با مساله تعریف میشود[19].
فرض کنید فضای جستجو D بعد داشته باشد و m ذره در جمعیت وجود داشته باشند. هر ذره در موقعیت Xi=[xi1,xi2,…,xiD] قرار گرفته، با سرعت Vi=[vi1, vi2, …, viD] حرکت میکند. هر ذره به سمت بهترین نقطهای که تا آن لحظه تجربه کرده؛ یعنی Pbesti=[pbesti1, pbesti2,…, pbestin] حرکت میکند. بهترین موقعیت در کل جمعیت نیز با Gbest=[gbest1, gbest2, …, gbestn] نمایش داده میشود. هر ذره موقعیت خود را برحسب سرعت مشخصی در هر تکرار تغییر میدهد که این سرعت به طور تصادفی و بر مبنای تمایل حرکت ذره به سمت pbest و gbest تنظیم میشود. برای هر ذره r در بعد s سرعت جدید؛ یعنی vrsو موقعیت جدید xrs بر اساس رابطه (3) و (4) به دست میآیند.
(3) |
|
(4) |
در روابط فوق t شماره تکرار وwوزن اینرسی است که برای کنترل سرعت و برقراری تعادل بین کاوش و بهرهگیری تعریف شده است. مقدار بزرگ برای w سرعت ذرات را زیاد و از افتادن آنها در بهینه محلی جلوگیری میکند. مقدار کوچک برای آن باعث کاهش سرعت و تشویق ذره به بهرهگیری از همان ناحیهای که در آن واقع است، میشود. ثابتهایc1 و c2ضریب شتاب هستند که میزان نزدیکی ذره به pbest و gbest را تعیین میکنند. r1 و r2 اعداد تصادفی مستقلی هستند که مقدار بین صفر و یک دارند. اتمام PSO میتواند بر اساس تعداد مشخصی تکرار یا رسیدن به مقدار تعیین شدهای از pbest باشد و یا زمانی که هیچ بهبود و تغییری در آن حاصل نشد، به پایان برسد.
مراحل الگوریتم PSO استاندارد به صورت زیر است[20]:
1. مقداردهی اولیه ذرات در موقعیتهای تصادفی با سرعت اولیه، روی D بعد فضای جستجو؛
2. بروزرسانی سرعت و موقعیت هر ذره طبق روابط (3) و (4)؛
4. محاسبه تابع شایستگی و بروزرسانی همزمان pbest و gbest در صورت نیاز؛
5. برگشت به مرحله 2 تا برقراری شرط اتمام.
نخستین نسخه چندهدفه الگوریتم جمعیت پرندگان در سال 1999 در [21] ارائه شد. الگوریتم چندهدفه مورد استفاده در این تحقیق MOPSO[7] است که مراحل آن در شکل (2) نشان داده شده است. این الگوریتم از عملگری به نام عملگر جهش واحد [22] استفاده میکند که یک عضو از جمعیت را انتخاب کرده، مقدار یک بعد آن را به عددی در محدوده مقادیر معتبر تغییر میدهد. همچنین، یک سیاست نخبهگرایی به منظور نگه داشتن نتایج برتر و غالب در تکرارهای الگوریتم تعریف شده است. پاسخهای غالب در آرشیو خارجی که ساختار گرید [23] دارد، ذخیره میشوند. دستاورد مدیریت صحیح آرشیو، تنوع جمعیت و توزیع مناسب پاسخهاست.
انتخاب pbest و gbest طبق مکانیزم خاصی انجام میشوند. الگوریتم چندهدفه نمیتواند از رابطه (3) برای شناسایی آنها استفاده کند، زیرا همه پاسخهای غالب به یک میزان برتری دارند. تنها زمانی pbest بروز میشود که ذره جدیدی مقدار قبلی آن را مغلوب کند. gbest نیز در هر تکرار از بین پاسخهای غالب موجود در آرشیو انتخاب میشود.
10. for(j=0to MAXPARTICLES){ 11. Update Velocity(); 12. Update Particle(); } 13. Keeping(); 14. Evaluate Pop(); 15. Update Fbest(); 16. Update Pbest(); 17. Insert nodom(); 18. Gbestpos = rnd(0,nodomfileSize) { 19. Print Statistics (); 20. GenerateOutfile(); } |
شکل (2): الگوریتم MOPSO [7]
برای بررسی راهکار بهینهسازی ارائه شده سیستم نرمافزاری فروشگاه الکترونیکی که امکان مدیریت محصولات، خرید و پرداخت الکترونیکی را فراهم میکند، در نظر گرفته شد.
ابتدا سیستم نرمافزاری با نرمافزار Enterprise Architect و بر مبنای UML2 مدل شد. نمودارهای قطعه، فعالیت و استقرار این نرمافزار در شکلهای 3 تا 5 آمده است. سپس نمودارهای مذکور با استفاده از پروفایل MARTE برای توصیف کارایی مدل حاشیهنویسی شدهاند که به منظور وضوح بیشتر این مشخصهها در خارج از نمودارها و در جداول (1) تا (3)آمدهاند.
پس از اینکه مدل کارایی به وسیله ابزار تولید شده به دست آمد، به منظور مشاهده نتایج اولیه با ابزار LQNS حل میشود.
جدول(1): مشخصههای کارایی نمودار قطعه
عنوان برچسب |
عنصر |
مقدار برچسب در قطعه خرید |
مقدار برچسب در قطعه پایگاه داده |
|
PAinstances |
Component |
1 |
1 |
|
PAcontainersched |
Component |
Fcfs |
Fcfs |
|
|
|
port-db-purchase |
port-purchase-item |
port-get-request |
PAmapping |
Port |
0/5 |
0/5 |
0/5 |
عنوان برچسب |
Client |
Purchase server |
Database server |
PAmultiplicity |
1 |
1 |
1 |
PAschdPolicy |
Ref |
Fcfs |
Fcfs |
PArate |
1 |
1 |
1 |
جدول (2): مشخصههای کارایی نمودار استقرار
شکل (2): نمودار قطعه
شکل (3):نمودار استقرار
شکل (4): نمودار فعالیت
جدول (3) : حاشیهنویسی نمودار فعالیت
|
قطعه خرید |
قطعه پایگاه داده |
|||||||||||||
عنوان برچسب |
Processing Request |
check availability |
Database Manager |
||||||||||||
PAmultiplicity |
1 |
1 |
1 |
||||||||||||
PApriority |
0 |
0 |
0 |
||||||||||||
|
Process |
Get info item |
Get info from db |
Send response |
Check availability |
response from db |
product massage |
Get Price |
price and purchase instruction |
get response |
Process Query |
Insert Query |
Select Query |
Update Query |
Send Response |
PAdemand |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
3 |
1 |
در نخستین مرحله از فاز بهینهسازی مدل کارایی طبق قالب ابزار SPEX بازنویسی میشود. سپس الگوریتم MOPSO پیادهسازی شده، این ابزار در پس زمینه برنامه بهینهسازی قرار میگیرد تا بر مبنای مقادیر بردار تصمیم، مقادیر توابع هدف را مشخص کند.
هر ذره یک بردار 5 بعدی به صورت ]تعداد پردارندههای سرور Purchase ، تعداد پردازندههای سرور database، تعداد ریسمانهای وظیفه Processing-Request، تعداد ریسمانهای وظیفه check-availability تعداد ریسمانهای وظیفه Database-manager] است که مقدار هر بعد عددی بین 1 تا 11 است و توابع هدف نیز طبق بخش 5 تعریف میشوند.
پارامترهای الگوریتم، طبق جدول (4) تنظیم میشوند.
جدول4: پارامترهای MOPSO
مقدار |
پارامتر |
100 |
تعداد تکرار |
15 |
اندازه جمعیت |
19 |
اندازه آرشیو |
5/0 |
اینرسی w |
5/0 |
نرخ جهش |
5/1 |
c1 |
2 |
c2 |
در آزمایش اول اندازه آرشیو 19 انتخاب شده است که بهینه پرتو بزرگتر و در نتیجه انتخابهای بیشتری را در اختیار طراح نرمافزار قرار میدهد. نمودار مربوطه در شکل (6) نشان داده شده است. در آزمایش دوم اندازه آرشیو به 10 کاهش داده شده است. بهینه پرتو تولید شده در جدول 5 و بردارهای تصمیم معادل و یا مجموعه پرتو در جدول(6) نمایش داده شدهاند. در واقع، در این مرحله هدف بررسی و مشاهده رفتار و عملکرد الگوریتم در هنگام کنترل اندازه آرشیو است.
|
* Archive during run
+Particles
|
شکل (6): نمودار حاصل از اجرای MOPSO با 3 تابع هدف
یکی از معیارهای ارزیابی الگوریتمهای چندهدفه، توزیع پاسخها در طول آرشیو است؛ به این معنی که اگر پاسخها به جای ازدحام در یک ناحیه در سراسر طول آرشیو توزیع شوند، تنوع و حق انتخاب بیشتری را فراهم کرده، کارایی الگوریتم را بالاتر میبرند. همان طور که بهینه پرتو جدول (5)نشان میدهد، الگوریتم MOPSO توانسته است با توزیع مناسب، انتخابهای متنوعی را به طراح پیشنهاد دهد. بدین ترتیب، طراح نرمافزار دیگر دغدغه تنظیم و کارکردن همراه با سعی و خطا را بر روی پارامترها و مشخصههای کارایی ندارد و میتواند مقادیری را که کارایی بیشتر و مطلوبتری را بههمراه داشته باشد، در مدل نرمافزار اعمال کند.
جدول (5) : بهینه پرتو جدول (6) : مجموعه پرتو
x1 |
x2 |
x3 |
x4 |
x5 |
|
F1(x) |
F2(x) |
F3(x) |
1 |
1 |
9 |
9 |
1 |
|
2 |
476/932 |
0/1049 |
1 |
2 |
10 |
6 |
5 |
|
3 |
399/475 |
0/1252 |
2 |
2 |
10 |
9 |
6 |
|
4 |
290/761 |
0/172 |
2 |
3 |
10 |
8 |
7 |
|
5 |
225/514 |
0/2217 |
3 |
3 |
10 |
10 |
10 |
|
6 |
194/115 |
0/2576 |
3 |
4 |
10 |
8 |
8 |
|
7 |
165/409 |
0/3023 |
4 |
6 |
10 |
8 |
10 |
|
10 |
129/296 |
0/3867 |
5 |
9 |
9 |
8 |
9 |
|
14 |
118/206 |
0/423 |
7 |
9 |
10 |
9 |
9 |
|
16 |
100/171 |
0/4991 |
9 |
10 |
10 |
10 |
9 |
|
19 |
97/8859 |
0/5108 |
10 |
10 |
10 |
10 |
10 |
|
20 |
97/5106 |
0/5128 |
در آزمایش سوم طول آرشیو 19 و به منظور مشاهده ساده تر رفتار الگوریتم، توابع هدف به دو تابع زمان پاسخ و هزینه کاهش داده شد. شکل (7) نمودار به دست آمده را نشان میدهد.
* Archive during run
+Particles
|
شکل (7): نمودار حاصل از اجرای MOPSO با دو تابع هدف
خودکارسازی فرآیند ارزیابی کارایی از اهمیت ویژهای برخوردار است، زیرا طراح نرمافزار میتواند به راحتی و بدون نیاز به تسلط در حوزه کارایی مدلی با کیفیت و کارایی بالا تولید کند. در این مقاله، روشی برای بهینهسازی خودکار کارایی مدل نرمافزار ارائه شده است که مقادیر بهینه تنظیمات و مشخصههای کارایی حاشیهنویسی شده در آن را پیشنهاد میکند. بهینهسازی مبتنی بر روش MOPSO است. به این ترتیب، ضمن اعمال این الگوریتم قدرتمند در حوزه ارزیابی کارایی، رفتار و عملکرد آن تحلیل و بررسی و پاسخهای رضایتبخشی حاصل شد. از طرف دیگر، در این مقاله به جای استفاده از متا-مدلهای اختصاصی کارایی، همان مدل استاندارد مبتنی بر UML با پروفایل کارایی حاشیهنویسی و به مدل کارایی CBML تبدیل شد تا طراح نرمافزار را از تسلط به حوزه کارایی بینیاز کند.
[1]تاریخ ارسال مقاله : 14/4/1390
تاریخ پذیرش مقاله : 6/2/1391
نام نویسنده مسؤول : مریم آموزگار
نشانی نویسنده مسؤول : ایران- کرمان-
انتهای جاده هفت باغ- دانشگاه تحصیلات تکمیلی.
[1] SPE
[2] Component
[3] Layered Queueing Networks
[4] Palladio Component model
[5] Stereotype
مهندسی کارایی نرمافزار[1]، [1] فرآیند ارزیابی کارایی نرمافزار در مرحله طراحی مدل نرمافزار است که علاوه بر کاهش هزینههای تولید، افزایش کیفیت و کارایی را بههمراه دارد. تحقیقات انجام شده در حوزه نرمافزارهای مبتنی بر قطعه[2] [2] خودکارسازی این فرآیند را بسیار مهم میشمارد زیرا طراح نرمافزار میتواند براحتی و بدون نیاز به تسلط در حوزه کارایی، مدلی با کیفیت بالا طراحی کند. در این مقاله فرآیند ارزیابی به دو زیرفرآیند عمده تفکیک شده است: تبدیل مدل و بازخورد. تبدیل مدل مرحلهای است که در آن مدل نرمافزار به مدل کارایی تبدیل میشود، در حالی که بازخورد مربوط به انعکاس پارامترها و یا مشخصههای بهینه کارایی از مدل کارایی به مدل نرمافزار است. در سالهای اخیر تحقیقات زیادی در حوزه تبدل مدل انجام شده است اما بهینهسازی خودکار و یا به عبارتی، ارائه مقادیر بهینه تنظیمات و مشخصههای کارایی در مدل نرمافزار به تحقیقات بیشتری نیاز دارد.
استفاده از الگوریتمهای بهینهسازی در مهندسی نرمافزار در [3] مرور شده است و بر مبنای همین الگوریتمها برای مساله ارزیابی کارایی نرمافزار روشهایی در [6-4] رائه شده است.
در برخی تحقیقات [4] تنها زمان پاسخ برای ارزیابی کارایی در نظر گرفته شده است، در حالی که پارامترهای مهمی همچون بهرهوری و توان عملیاتی منابع نرمافزاری و سختافزاری نیز به عنوان مشخصههای عمده کارایی محسوب میشوند. علاوه بر موارد ذکر شده، کنترل هزینههای توسعه و یا به عبارتی کاهش آن نیز از اهمیت زیادی برخوردار است. بنابراین، مساله مطرح شده، یک مساله بهینهسازی چندهدفه است. از این رو، این مقاله روشی را با استفاده از الگوریتم جمعیت پرندگان چند هدفه MOPSO [7] ارائه میکند که مقادیر بهینه مشخصههای کارایی توصیف شده در مدل نرمافزار را یافته، به طراح نرمافزار پیشنهاد میدهد.
ازجمله برتریهای الگوریتم جمعیت پرندگان در مقایسه با الگوریتمهای ژنتیک که به انتخاب آن برای این مساله منجر شد، این است که پاسخ بهینه، مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن، وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده پارامترها از مزیتهای دیگر این الگوریتم هستند[8].
در ادامه، ضمن بررسی پیشینه تحقیقاتی موضوع، مراحل ارزیابی کارایی تشریح میشوند. در بخش سوم با معرفی مسائل بهینهسازی چند هدفه به طرح رسمی مساله پرداخته، الگوریتم جمعیت پرندگان و نسخه چند هدفه، آن معرفی میکنیم. در انتها روش پیشنهادی بر روی یک سیستم نرمافزاری نمونه اعمال و نتایج بررسی و تحلیل میشود.
مدل کارایی در روشها و ابزارهای کلاسیک ارائه شده در ارزیابی کارایی [2] عمدتا بر شبکههای صف لایهای[3] و شبکههای پتری مبتنی هستند که اکثر این روشها پارامترهای کارایی را اندازهگیری کرده، اما امکان اعمال هیچ گونه بازخوردی به مدل نرمافزار را فراهم نمیکنند.
در [2] روش نیمهخودکاری مبتنی بر قانون برای یافتن مقادیر بهینه مشخصههای کارایی ارائه شده است. دانش لازم در قالب قوانین در اختیار سیستم قرار گرفته، کاوش به طور خودکار آغاز میشود و تا زمان رفع گلوگاهها و نیازهای کارایی و برقراری ثبات در سیستم ادامه پیدا میکند. این تحقیق به رفتار خاص نرمافزارهای مبتنی بر قطعه نمیپردازد، بلکه بر افزایش سرعت منابع سختافزاری برای رفع گلوگاهها تمرکز کرده است. همچنین، دامنه عملکرد آن وابسته و محدود به دانشی است که در اختیار سیستم قرار میگیرد.
در [5] روش خودکاری برای بهبود کارایی مدل نرمافزارهای مبتنی بر قطعه ارائه شده است. فضای طراحی شامل گزینههای مختلفی، مثل انتخاب قطعات مناسب و تنظیمات مشخصههای کارایی است. کاوش فضای طراحی به وسیله الگوریتم ژنتیک انجام میشود. کاندیدهای اولیه ایجاد شده، پس از کاوش، نتایج در اختیار طراح نرمافزار قرار میگیرد. بدین ترتیب، طراح نرمافزار براحتی مدلی با کیفیت بالا تولید میکند. با این روش خلا بین استفاده از روشهای کلاسیک و بهبود خودکار مدل نرمافزار پر میشود، اما نقطه ضعف این روش این است که مدلی را برای هزینه به عنوان یکی از توابع هدف درنظر نگرفته است.
در [6] روش دیگری برای بهبود کارایی و قابلیت اعتماد نرمافزارهای سرویسگرا ارائه شده است. اساس کار پیدا کردن بهینه پرتو در الگوریتمهای تکاملی چند هدفه است. فضای طراحی شامل اختصاص قطعه مناسب، انتخاب از بین قطعات همسان و سرعت منابع سختافزاری است. زبان مدلسازی در این روش [9]PCM [4] است که یک متا- مدل اختصاصی برای ارزیابی کارایی و قابلیت اعتماد نرمافزارهای سرویسگراست. از این رو، طراح نرمافزار باید مدل نرمافزار را که با استانداردهایی، همچون [10]UML مدل کرده به PCM تبدیل کند که این امر خود عدم یکپارچگی فرآیند ارزیابی کارایی در فرآیند تولید نرمافزار را بههمراه دارد. نکته درخور توجه دیگر این است که به علت پرداختن به قابلیت اعتماد به عنوان تابع هدف برای کارایی تنها پارامتر زمان پاسخ در نظر گرفته شده است.
با توجه به مطالب فوق، این تحقیق با تمرکز بر تسهیل فرآیند ارزیابی کارایی و یکپارچگی آن در فرآیند تولید نرمافزار بهبودها و ملاحظات زیر را در نظر گرفته است:
1. مدل نرمافزار بر مبنای UML است که استاندارد است.
2. در این تحقیق مشخصههای کارایی بیشتری مورد توجه قرار گرفتهاند. بهرهوری منابع سختافزاری و نرمافزاری که هدف، بیشینه شدن آنهاست، در کنار زمان پاسخ و هزینه که باید کمینه شوند، مدنظر گرفته شدهاند و مساله را به یک مساله سه هدفه تبدیل کرده است که اهداف آن در تقابل با یکدیگر هستند.
3. رفتار و عملکرد MOPSO در مساله ارزیابی کارایی بررسی شده است.
فرآیند ارزیابی کارایی مبتنی بر مدل که به آن مهندسی کارایی نرمافزار (SPE) گفته میشود و نخستین بار در [1] ارائه شده، یک فرآیند سیستماتیک برای تولید نرمافزاری است که نیازهای کارایی آن تامین شده باشد.
با استناد به این فرآیند مرجع، در ادامه مراحل ارزیابی تا خودکارسازی و بهینهسازی تشریح میشوند. همان طور که شکل (1) مراحل را نشان میدهد، در نخستین مرحله مدل نرمافزار با UML2 و با تکیه بر نمودارهای قطعه، فعالیت و استقرار که برای ارزیابی کارایی وجودشان ضروری است طراحی میشود. توصیف نیازهای کارایی و همچنین مشخصههای کارایی منابع سختافزاری و نرمافزاری با استفاده از پروفایل کارایی [11] MARTE، انجام میشود. این پروفایل دارای کلیشهها[5] و برچسبهایی است که براحتی نمودارها را حاشیهنویسی میکند. با توجه به رفتار خاص نرمافزارهای مبتنی بر قطعه در [12] برچسبهایی به منظور توصیف دقیقتر آنها اضافه شده است. در مراحل 3 و 4 تبدیل مدل نرمافزار به مدل کارایی انجام میشود. در این تحقیق، مدل کارایی [13- 14] CBML است که نسخه توسعهیافتهای از LQN برای مدل سازی کارایی نرمافزارهای مبتنی بر قطعه است و ابزار تبدیل طبق [12] پیادهسازی و استفاده میشود. مدل کارایی در مرحله 5 به وسیله ابزار LQNS[15] حل میشود. در مرحله 6 و به منظور حل مدل به صورت پارمتریک مدل کارایی طبق قالب ابزار [16]SPEX بازنویسی میشود.
روشهای زیادی [2] ارائه شده است که مشابه مراحل فوق را انجام میدهند، اما آنچه کمتر مورد توجه و بررسی قرار گرفته و عامل اساسی در فرآیند ارزیابی است، خودکارسازی آن است؛ بدین معنی که مقادیر مختلف مشخصههای کارایی در مدل قرار گرفته، ارزیابی میشوند تا زمانی که بهترین مقادیر به دست آید و براحتی در اختیار طراح قرار گیرند. آنچه در این تحقیق انجام شده، در قالب مراحل 7 و 8 و استفاده از الگوریتم MOPSO است که در بخشهای بعدی به تقصیل به آن پرداخته شده است.
شکل (1): فرآیند مهندسی کارایی نرمافزار
مسائل بهینهسازی چندهدفه [7] بیش از یک تابع هدف دارند. اگر آرایه متغیرهای ورودی یا به عبارتی بردار تصمیم باشد و ، در این صورت k هدف و تابع شایستگی تعریف میشود و هدف کمینه کردن است. البته، شرایط و قیدهای زیر را نیز میتوان در نظر گرفت:
همان طور که مشخص است، مسائل چندهدفه مجموعهای از جوابها را تولید میکنند که نسبت به هم برتری ندارند و این مجموعه را بهینه پرتو مینامند. تعاریف بهطور کامل در [17] آمده و در اینجا تنها به مفهوم مغلوب شدن اشاره میشود (در اینجا هدف کمینهسازی اهداف است).
تعریف 1: برای دو بردار گفته میشود بردار را مغلوب میکند( )، در صورتی که اگر رابطه برقرار باشد، آنگاه . به عبارت دیگر، در هیچ بعدی بدتر از نباشد. بدین ترتیب، بردار تصمیم xمتعلق به مجموعه مجاز یک پاسخ بهینه پرتو است، اگر بردار تصمیم دیگری مانند y متعلق به مجموعه مجاز F وجود نداشته باشد که بر آن غلبه کند.
نتایج حاصل از حل مدل کارایی، توان عملیاتی و بهرهوری هر یک از منابع نرمافزاری و سختافزاری بههمراه زمان پاسخ رویدادهاست که با انتساب به برچسبهای پروفایل کارایی به عنوان مقادیر صفات کیفی به مدل نرمافزار اعمال میشوند. رسیدن به وضعیتی که در آن کارایی سیستم مطلوب باشد، به تکرار مداوم فرآیند ارزیابی نیاز دارد. اگر تغییرات ساختاری در نظر گرفته نشود، سؤال اساسی این است که اعمال تغییر بر کدام صفت کیفی، کدام عنصر از مدل نرمافزار و به چه میزان، کارایی بهتری را بههمراه دارد. بدین ترتیب، اجرای این فرآیند بر اساس سعی و خطا، خصوصاً برای نرمافزارهای بزرگ بسیار زمانبر خواهد بود. لذا میتوان این مساله را در قالب یک مساله بهینهسازی مطرح کرد و از آنجا که کارایی تنها شامل یک هدف (زمان پاسخ کمینه) نمیشود و بهرهوری و توان عملیاتی منابع نیز از اهمیت بسزایی برخوردارند، مساله از نوع مسائل بهینهسازی چندهدفه است.
لازم است ابتدا مساله به طور کاملا شفاف و رسمی مطرح شود. همان طور که قبلا گفته شد، مشخصههای کارایی با استفاده از پروفایل کارایی در مدل نرمافزار حاشیهنویسی شدهاند. این مشخصهها معادل متغیرهای ورودی مساله و به قرار زیر هستند:
1. سرعت پردازندههای سرور که با برچسب PArate از کلیشه PAhost در نمودار استقرار مقداردهی میشود.
2. تعداد ریسمانهای هر شئ فعال که درمدل نرمافزار با برچسب PAmultiplicity از کلیشه PAstep مشخص میشود.
3. تعداد پردازندههای هر سرور
بنابراین، بردار تصمیم به ترتیب شامل موارد فوق و به صورت (1) خواهد بود. nو m به تعداد پردازنده و تعداد اشیا اشاره میکند.
(1) |
هر متغیر در بردار X به ترتیب به بندهای 1 تا 3 اشاره دارد. اهداف مساله به صورت زیر هستند:
1. زمان پاسخ باید کمینه شود و خروجی ابزار LQNS است.
2. هزینه برای کنترل و اعمال محدودیت در استفاده از منابع در نظر گرفته شده است. از آنجا که مسلم است، هر چه تعداد پردازندهها بیشتر باشد، زمان پاسخ کمتر خواهد شد، اما برای کنترل هزینه اعمال قید ضروری است. تابع هزینه که در واقع با سرعت و تعداد پردازندهها متناسب است از رابطه (2) به دست میآید و باید کمینه شود.
(2) |
cpu_speed و cpu_multiplicityبه ترتیب سرعت و تعداد پردازندهها روی سرور kام، s تعداد سرورها و H ضریب تاثیر سرعت روی هزینه را نشان میدهند.
3 . بهرهوری منابع که باید بیشینه باشد.
تحلیل دقیق موارد فوق تقابل و تضاد اهداف را نشان میدهد، زیرا برای دو هدف اول مقدار کمینه و برای هدف آخر مقدار بیشینه مدنظر است.
بهینهسازی جمعیت پرندگان یک روش جستجوی ابتکاری است (البته، طبق نظر مؤلف[18]) که پرواز پرندگان برای یافتن غذا را شبیهسازی میکند و خصوصا در سالهای اخیر بسیار استفاده شده است. این روش در مقایسه با روشهای دیگر مزیتهایی دارد، از جمله اینکه پاسخ بهینه مستقل از مقادیر اولیه و پس از شرکت کردن کلیه ذرات در الگوریتم به دست میآید و علاوه بر آن وابستگی و حساسیت کمتر الگوریتم به تابع هدف، پیادهسازی راحت و تنظیم ساده آن مزیتهای مهمی هستند[8].
در PSO هر جواب پیشنهادی که یک ذره نامیده میشود، یک نقطه در فضای جستجوست. هر ذره، در فضای جستجوی چند بعدی پرواز میکند و موقعیت خود را بر حسب تجربه خود و همسایگانش تغییر میدهد. کارایی هر ذره (میزان نزدیکی هر ذره به بهینه سراسری) بر اساس تابع شایستگی تعیین شده اندازهگیری میشود. این تابع متناسب با مساله تعریف میشود[19].
فرض کنید فضای جستجو D بعد داشته باشد و m ذره در جمعیت وجود داشته باشند. هر ذره در موقعیت Xi=[xi1,xi2,…,xiD] قرار گرفته، با سرعت Vi=[vi1, vi2, …, viD] حرکت میکند. هر ذره به سمت بهترین نقطهای که تا آن لحظه تجربه کرده؛ یعنی Pbesti=[pbesti1, pbesti2,…, pbestin] حرکت میکند. بهترین موقعیت در کل جمعیت نیز با Gbest=[gbest1, gbest2, …, gbestn] نمایش داده میشود. هر ذره موقعیت خود را برحسب سرعت مشخصی در هر تکرار تغییر میدهد که این سرعت به طور تصادفی و بر مبنای تمایل حرکت ذره به سمت pbest و gbest تنظیم میشود. برای هر ذره r در بعد s سرعت جدید؛ یعنی vrsو موقعیت جدید xrs بر اساس رابطه (3) و (4) به دست میآیند.
(3) |
|
(4) |
در روابط فوق t شماره تکرار وwوزن اینرسی است که برای کنترل سرعت و برقراری تعادل بین کاوش و بهرهگیری تعریف شده است. مقدار بزرگ برای w سرعت ذرات را زیاد و از افتادن آنها در بهینه محلی جلوگیری میکند. مقدار کوچک برای آن باعث کاهش سرعت و تشویق ذره به بهرهگیری از همان ناحیهای که در آن واقع است، میشود. ثابتهایc1 و c2ضریب شتاب هستند که میزان نزدیکی ذره به pbest و gbest را تعیین میکنند. r1 و r2 اعداد تصادفی مستقلی هستند که مقدار بین صفر و یک دارند. اتمام PSO میتواند بر اساس تعداد مشخصی تکرار یا رسیدن به مقدار تعیین شدهای از pbest باشد و یا زمانی که هیچ بهبود و تغییری در آن حاصل نشد، به پایان برسد.
مراحل الگوریتم PSO استاندارد به صورت زیر است[20]:
1. مقداردهی اولیه ذرات در موقعیتهای تصادفی با سرعت اولیه، روی D بعد فضای جستجو؛
2. بروزرسانی سرعت و موقعیت هر ذره طبق روابط (3) و (4)؛
4. محاسبه تابع شایستگی و بروزرسانی همزمان pbest و gbest در صورت نیاز؛
5. برگشت به مرحله 2 تا برقراری شرط اتمام.
نخستین نسخه چندهدفه الگوریتم جمعیت پرندگان در سال 1999 در [21] ارائه شد. الگوریتم چندهدفه مورد استفاده در این تحقیق MOPSO[7] است که مراحل آن در شکل (2) نشان داده شده است. این الگوریتم از عملگری به نام عملگر جهش واحد [22] استفاده میکند که یک عضو از جمعیت را انتخاب کرده، مقدار یک بعد آن را به عددی در محدوده مقادیر معتبر تغییر میدهد. همچنین، یک سیاست نخبهگرایی به منظور نگه داشتن نتایج برتر و غالب در تکرارهای الگوریتم تعریف شده است. پاسخهای غالب در آرشیو خارجی که ساختار گرید [23] دارد، ذخیره میشوند. دستاورد مدیریت صحیح آرشیو، تنوع جمعیت و توزیع مناسب پاسخهاست.
انتخاب pbest و gbest طبق مکانیزم خاصی انجام میشوند. الگوریتم چندهدفه نمیتواند از رابطه (3) برای شناسایی آنها استفاده کند، زیرا همه پاسخهای غالب به یک میزان برتری دارند. تنها زمانی pbest بروز میشود که ذره جدیدی مقدار قبلی آن را مغلوب کند. gbest نیز در هر تکرار از بین پاسخهای غالب موجود در آرشیو انتخاب میشود.
10. for(j=0to MAXPARTICLES){ 11. Update Velocity(); 12. Update Particle(); } 13. Keeping(); 14. Evaluate Pop(); 15. Update Fbest(); 16. Update Pbest(); 17. Insert nodom(); 18. Gbestpos = rnd(0,nodomfileSize) { 19. Print Statistics (); 20. GenerateOutfile(); } |
شکل (2): الگوریتم MOPSO [7]
برای بررسی راهکار بهینهسازی ارائه شده سیستم نرمافزاری فروشگاه الکترونیکی که امکان مدیریت محصولات، خرید و پرداخت الکترونیکی را فراهم میکند، در نظر گرفته شد.
ابتدا سیستم نرمافزاری با نرمافزار Enterprise Architect و بر مبنای UML2 مدل شد. نمودارهای قطعه، فعالیت و استقرار این نرمافزار در شکلهای 3 تا 5 آمده است. سپس نمودارهای مذکور با استفاده از پروفایل MARTE برای توصیف کارایی مدل حاشیهنویسی شدهاند که به منظور وضوح بیشتر این مشخصهها در خارج از نمودارها و در جداول (1) تا (3)آمدهاند.
پس از اینکه مدل کارایی به وسیله ابزار تولید شده به دست آمد، به منظور مشاهده نتایج اولیه با ابزار LQNS حل میشود.
جدول(1): مشخصههای کارایی نمودار قطعه
عنوان برچسب |
عنصر |
مقدار برچسب در قطعه خرید |
مقدار برچسب در قطعه پایگاه داده |
|
PAinstances |
Component |
1 |
1 |
|
PAcontainersched |
Component |
Fcfs |
Fcfs |
|
|
|
port-db-purchase |
port-purchase-item |
port-get-request |
PAmapping |
Port |
0/5 |
0/5 |
0/5 |
عنوان برچسب |
Client |
Purchase server |
Database server |
PAmultiplicity |
1 |
1 |
1 |
PAschdPolicy |
Ref |
Fcfs |
Fcfs |
PArate |
1 |
1 |
1 |
جدول (2): مشخصههای کارایی نمودار استقرار
شکل 2 نمودار قطعه
شکل (3):نمودار استقرار
شکل (4): نمودار فعالیت
جدول (3) : حاشیهنویسی نمودار فعالیت
|
قطعه خرید |
قطعه پایگاه داده |
|||||||||||||
عنوان برچسب |
Processing Request |
check availability |
Database Manager |
||||||||||||
PAmultiplicity |
1 |
1 |
1 |
||||||||||||
PApriority |
0 |
0 |
0 |
||||||||||||
|
Process |
Get info item |
Get info from db |
Send response |
Check availability |
response from db |
product massage |
Get Price |
price and purchase instruction |
get response |
Process Query |
Insert Query |
Select Query |
Update Query |
Send Response |
PAdemand |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
3 |
1 |
در نخستین مرحله از فاز بهینهسازی مدل کارایی طبق قالب ابزار SPEX بازنویسی میشود. سپس الگوریتم MOPSO پیادهسازی شده، این ابزار در پس زمینه برنامه بهینهسازی قرار میگیرد تا بر مبنای مقادیر بردار تصمیم، مقادیر توابع هدف را مشخص کند.
هر ذره یک بردار 5 بعدی به صورت ]تعداد پردارندههای سرور Purchase ، تعداد پردازندههای سرور database، تعداد ریسمانهای وظیفه Processing-Request، تعداد ریسمانهای وظیفه check-availability تعداد ریسمانهای وظیفه Database-manager] است که مقدار هر بعد عددی بین 1 تا 11 است و توابع هدف نیز طبق بخش 5 تعریف میشوند.
پارامترهای الگوریتم، طبق جدول (4) تنظیم میشوند.
جدول4: پارامترهای MOPSO
مقدار |
پارامتر |
100 |
تعداد تکرار |
15 |
اندازه جمعیت |
19 |
اندازه آرشیو |
5/0 |
اینرسی w |
5/0 |
نرخ جهش |
5/1 |
c1 |
2 |
c2 |
در آزمایش اول اندازه آرشیو 19 انتخاب شده است که بهینه پرتو بزرگتر و در نتیجه انتخابهای بیشتری را در اختیار طراح نرمافزار قرار میدهد. نمودار مربوطه در شکل (6) نشان داده شده است. در آزمایش دوم اندازه آرشیو به 10 کاهش داده شده است. بهینه پرتو تولید شده در جدول 5 و بردارهای تصمیم معادل و یا مجموعه پرتو در جدول(6) نمایش داده شدهاند. در واقع، در این مرحله هدف بررسی و مشاهده رفتار و عملکرد الگوریتم در هنگام کنترل اندازه آرشیو است.
|
شکل (6): نمودار حاصل از اجرای MOPSO با 3 تابع هدف
یکی از معیارهای ارزیابی الگوریتمهای چندهدفه، توزیع پاسخها در طول آرشیو است؛ به این معنی که اگر پاسخها به جای ازدحام در یک ناحیه در سراسر طول آرشیو توزیع شوند، تنوع و حق انتخاب بیشتری را فراهم کرده، کارایی الگوریتم را بالاتر میبرند. همان طور که بهینه پرتو جدول (5)نشان میدهد، الگوریتم MOPSO توانسته است با توزیع مناسب، انتخابهای متنوعی را به طراح پیشنهاد دهد. بدین ترتیب، طراح نرمافزار دیگر دغدغه تنظیم و کارکردن همراه با سعی و خطا را بر روی پارامترها و مشخصههای کارایی ندارد و میتواند مقادیری را که کارایی بیشتر و مطلوبتری را بههمراه داشته باشد، در مدل نرمافزار اعمال کند.
جدول (5) : بهینه پرتو جدول (6) : مجموعه پرتو
x1 |
x2 |
x3 |
x4 |
x5 |
|
F1(x) |
F2(x) |
F3(x) |
1 |
1 |
9 |
9 |
1 |
|
2 |
476/932 |
0/1049 |
1 |
2 |
10 |
6 |
5 |
|
3 |
399/475 |
0/1252 |
2 |
2 |
10 |
9 |
6 |
|
4 |
290/761 |
0/172 |
2 |
3 |
10 |
8 |
7 |
|
5 |
225/514 |
0/2217 |
3 |
3 |
10 |
10 |
10 |
|
6 |
194/115 |
0/2576 |
3 |
4 |
10 |
8 |
8 |
|
7 |
165/409 |
0/3023 |
4 |
6 |
10 |
8 |
10 |
|
10 |
129/296 |
0/3867 |
5 |
9 |
9 |
8 |
9 |
|
14 |
118/206 |
0/423 |
7 |
9 |
10 |
9 |
9 |
|
16 |
100/171 |
0/4991 |
9 |
10 |
10 |
10 |
9 |
|
19 |
97/8859 |
0/5108 |
10 |
10 |
10 |
10 |
10 |
|
20 |
97/5106 |
0/5128 |
در آزمایش سوم طول آرشیو 19 و به منظور مشاهده ساده تر رفتار الگوریتم، توابع هدف به دو تابع زمان پاسخ و هزینه کاهش داده شد. شکل (7) نمودار به دست آمده را نشان میدهد.
شکل (7): نمودار حاصل از اجرای MOPSO با دو تابع هدف
خودکارسازی فرآیند ارزیابی کارایی از اهمیت ویژهای برخوردار است، زیرا طراح نرمافزار میتواند به راحتی و بدون نیاز به تسلط در حوزه کارایی مدلی با کیفیت و کارایی بالا تولید کند. در این مقاله، روشی برای بهینهسازی خودکار کارایی مدل نرمافزار ارائه شده است که مقادیر بهینه تنظیمات و مشخصههای کارایی حاشیهنویسی شده در آن را پیشنهاد میکند. بهینهسازی مبتنی بر روش MOPSO است. به این ترتیب، ضمن اعمال این الگوریتم قدرتمند در حوزه ارزیابی کارایی، رفتار و عملکرد آن تحلیل و بررسی و پاسخهای رضایتبخشی حاصل شد. از طرف دیگر، در این مقاله به جای استفاده از متا-مدلهای اختصاصی کارایی، همان مدل استاندارد مبتنی بر UML با پروفایل کارایی حاشیهنویسی و به مدل کارایی CBML تبدیل شد تا طراح نرمافزار را از تسلط به حوزه کارایی بینیاز کند.
[1]تاریخ ارسال مقاله : 14/4/1390
تاریخ پذیرش مقاله : 6/2/1391
نام نویسنده مسؤول : مریم آموزگار
نشانی نویسنده مسؤول : ایران- کرمان-
انتهای جاده هفت باغ- دانشگاه تحصیلات تکمیلی.