نام پژوهشگر: حبیب ایزدخواه
حبیب ایزدخواه آیاز عیسی زاده
پویایی و تطبیق پذیری با محیط از ویژگی های اصلی نسل بعدی سامانه های نرم افزاری و نرم افزارهایی با دسترسی بالا و طول عمر زیاد است. سامانه نرم افزاری در صورت لزوم، باید بتواند عملکرد خود را در واکنش به تغییرات محیط تغییر داده و خود را با آن تطبیق دهد؛ بنابراین، برای تطبیق پذیر بودن باید دارای انواع معماری ها باشد. در واقع این معماری نرم افزار است که نحوه عملکرد سامانه نرم افزاری در شرایط مختلف و در تعامل با محیط را مشخص می کند. تمام روش های ارائه شده برای ایجاد نرم افزار پویا، روش هایی قابل اعمال در مراحل اولیه توسعه نرم افزار هستند و این روش ها فقط یک چارچوب کلی برای تعریف معماری فراهم آورده اند و هیچ الگویی برای این که معماری چگونه بتواند امنیت را فراهم کند، توزیع شدگی داشته باشد، کارآیی داشته باشد یا موجب مصرف بهینه انرژی شود؛ ارائه نداده اند. در این رساله دو مورد اول یعنی امنیت (با تاکید بیشتر) و توزیع شدگی بررسی شده است. در این راستا، دو تابع ریاضی ارائه شده است که بر اساس آن ها می توان معماری هایی را از کد منبع استخراج نمود که امنیت و توزیع شدگی را رعایت کند. برای مورد امنیت، یک روش تحلیلی مبتنی بر ریاضیات ارائه شده است که امنیت نرم افزار را در سطح معماری نرم افزار ارزیابی کند. برای این منظور، ابتدا با در نظر گرفتن داده های حفره های امنیتی کشف شده روی مرورگر وب موزیلا فایرفاکس، ارتباط بین انواع اتصال و حفره های امنیتی را نشان خواهیم داد. سپس، یک رابطه ریاضی با استفاده از مفاهیم آماری رگرسیون بین انواع اتصال و میزان آسیب پذیری در سطح یک پیمانه ارائه داده و بعد از آن، با استفاده از مفاهیم امید ریاضی رابطه ای ریاضی برای مشخص کردن میزان آسیب پذیری کل یک سامانه نرم افزاری ارائه خواهیم داد. برای مورد توزیع شدگی، هدف در برنامه های توزیعی افزایش سرعت اجرائی با ایجاد حداکثر همروندی در اجرای قطعه های توزیع شده است. در برخی از مواقع، اجرای توزیعی تاثیر منفی در سرعت اجرای برنامه خواهد داشت. بنابراین بهتر است که قبل از توزیع یک برنامه مشخص شود که اجرای توزیعی آن باعث ایجاد تسریع نسبت به اجرای ترتیبی آن خواهد شد یا نه. هیچ یک از روش ها و ابزارهای موجود برای توزیع یک برنامه نمی توانند به این هدف مهم برسند. در این رساله، یک رابطه ریاضی ارائه خواهد شد که با بررسی انواع فراخوانی های داخل کد منبع، مشخص کند آیا کد منبع یک برنامه، مناسب برای توزیع است یا نه. سپس یک تابع کیفیت بر اساس تعداد فراخوانی ها بین متدهای کلاس ها ارائه خواهد شد که می توان معماری مبتنی بر توزیع را بر اساس آن از کد منبع استخراج نمود.
لیلا طالبی جابر کریم پور
3) شرح موضوع پیشنهادی: (تعریف مساله، فرضیات و هدف....) مقدمه: پیش بینی صفات کیفی سیستم های نرم افزاری از جمله قابلیت اطمینان ، کارآیی در طول فرآیند توسعه نرم افزار و قبل از ساخت آن توجه های زیادی را به خود جذب کرده است [1، 2، 3]. اغلب تکنیک های مورد استفاده برای ارزیابی صفات کیفی، بعد از پیاده سازی نرم افزار و در فاز تست انجام می پذیرد [4، 5]. پیش بینی قابلیت اطمینان نرم افزار در اوایل فرآیند توسعه نرم افزار برای مدیریت ریسک دارای اهمیت ویژه ای می باشد [6]. معماری نرم-افزار امروزه به عنوان یکی از مهمترین شاخه های مهندسی نرم افزار مطرح است که شامل تکنیک ها و روش هایی جهت مدیریت پیچیدگی ساخت نرم افزار می باشد. معماری نرم افزار ، نمایی از سیستم نرم افزاری ارائه می دهد که متشکل از مولفه ها و اتصالات است. هر مولفه، مجموعه به هم پیوسته ای از ارکان وظیفه مندی سیستم را در خود محصور نموده است. اتصالات نیز به تعامل زمان اجرای میان مولفه ها عینیت می بخشد. ابعاد کیفی که طراحی کلان سیستم به دنبال خواهد داشت متاثر از نحوه ترکیب مولفه ها و اتصالات است. یکی از واقعیت های معماری که انگیزه ارزیابی آن را ایجاد می کند این است که معماری می تواند عامل و یا مانع دستیابی به صفات کیفی نرم افزار باشد. به عنوان مثال اگر فاکتور کارآیی برای یک سیستم مهم باشد ارتباط بین مولفه ها و ارتباطات داخلی هر مولفه از اهمیت زیادی برخوردار خواهد شد. معماری حاصل تصمیمات طراحی مقدماتی مولفه ها و ساختار ارتباطی میان آ ن ها است و انجام این سطح از کار قبل از ساخت یک سیستم بزرگ و پیچیده ضروری می باشد. علت پرداختن به ارزیابی معماری واضح است هر چه مشکلات موجود در پروژه نرم افزاری زودتر کشف شوند هزینه کمتری به دنبال خواهد داشت و معماری یک گزینه کم هزینه در این راستا خواهد بود. بیان مساله: ما یک روش مبتنی بر خودکارهای واسط و زنجیره های مارکوف برای پیش بینی کارآیی نرم افزار مبتنی بر مولفه ارائه می دهیم. برای انجام این کار سیستم نرم افزاری توصیف شده توسط خودکار واسط را تبدیل به زنجیره مارکوف نموده و از روی زنجیره مارکوف مبادرت به پیش-بینی قابلیت اطمینان سیستم نرم افزاری مبتنی بر مولفه می کنیم. در واقع زنجیره مارکوف به دست آمده نشان دهنده معماری سیستم خواهد بود. دلیل استفاده از زنجیره مارکوف این است که در این زنجیره ها میانگین و واریانس اجرای هر مولفه مشخص است که در پیش بینی قابلیت اطمینان مورد نیاز می باشد. بنابراین مسأله، پیش بینی قابلیت اطمینان سیستم نرم افزاری است. لذا در این پایان نامه به سوالات زیر پاسخ داده می شود: 1. آیا می توان واسط مولفه ها را با خودکارهای واسط توصیف و آن ها را به زنجیره ی مارکوف برای ارزیابی قابلیت اطمینان تبدیل کرد؟ 2. آیا با تجزیه و تحلیل زنجیره های مارکوف حاصل می توان به کارآیی مولفه ها پی برد؟ پیشینه: از چارچوب های مختلفی جهت توصیف معماری استفاده می شود که برخی از آن ها مبتنی بر مدل های رسمی و بعضی دیگر مانند adl ها از گرامرهای خاصی برای توصیف مولفه ها و ارتباطات بین آن ها استفاده می کنند و گروهی مانند uml توصیفات بصری و نمودارها را پیشنهاد می کنند. هر کدام از این روش ها نقاط ضعف و قوت خاص خود را دارند و استفاده از آن ها بستگی به هدف معمار از توصیف معماری دارد. مهندسین نرم افزار برای توصیف جنبه های ایستا و پویای معماری یک سیستم نرم افزاری از مدل های مختلفی استفاده می کنند. بخش ایستای سیستم، توصیف کننده مولفه های نرم افزاری و ارتباط میان آن ها است و بخش پویای آن، نشان دهنده رفتار زمان اجرای سیستم است. برای توصیف ساختار و رفتار سیستم از شیوه های مدل سازی و علامت گذاری های مختلفی می توان استفاده نمود که برخی از آن ها uml، جبر فرایندی، mcs و petri net زبان های توصیف معماری است [1، 2، 3]. مدل خودکارهای واسط توسط لوکال دی آلفارو و توماس آ هنزینگر معرفی گردید [7، 8]. این مدل برای مستندسازی و ارزیابی سیستم های متشکل از مولفه ها که از طریق واسط ها با یکدیگر در ارتباطند طراحی شده است. خودکار واسط فعال ورودی نیست و فقط اجازه ترکیب دو خودکار داده می شود. به علاوه ترکیب بر اساس همزمانی یک کنش خروجی و یک کنش ورودی (با همان نام) انجام می شود که پس از ترکیب پنهان می گردد. خودکار واسط یک زبان رسمی سبک وزن برای توصیف سیستم های مبتنی بر مولفه است. همچنین بر خلاف خودکارهای موجود، خودکار واسط بر اساس ترکیب خوش بینانه مولفه ها می باشد. بر اساس ترکیب خوش بینانه، دو مولفه با یکدیگر سازگار هستند اگر حداقل یک محیطی وجود داشته باشد که بتوانند با یکدیگر کار کنند. زنجیره مارکوف که به افتخار آندری مارکوف ریاضی دان اهل روسیه این گونه نام گذاری شده یک سیستم ریاضی است که در آن انتقال از یک حالت به حالت دیگر صورت می گیرد که البته تعداد این حالات قابل شمارش است. زنجیره مارکوف یک فرآیند تصادفی بدون حافظه است بدین معنی که توزیع احتمال شرطی حالت بعد تنها به حالت فعلی بستگی دارد و به وقایع قبل از آن وابسته نیست. این نوع بدون حافظه بودن خاصیت مارکوف نامیده می شود. زنجیره مارکوف در مدل سازی دنیای واقعی کاربردهای زیادی دارد. زنجیره مارکوف یک فرایند تصادفی گسسته در زمان با خاصیت مارکوف است. اگرچه برخی از نویسندگان در مورد فرآیندهای پیوسته در زمان هم از اصطلاح زنجیره مارکوف استفاده می کنند. یک فرایند تصافی گسسته در زمان شامل سیستمی است که در هر مرحله در حالت خاص و مشخصی قرار دارد و به صورت تصادفی در هر مرحله تغییر حالت می دهد. مراحل اغلب به عنوان لحظه های زمانی در نظر گرفته می شوند ولی می توان آن ها را فاصله فیزیکی یا هر متغیر گسسته دیگری در نظر گرفت. خاصیت مارکوف بیان می کند که توزیع احتمال شرطی برای سیستم در مرحله بعد فقط به حالت فعلی سیستم بستگی دارد و به حالت های قبل بستگی ندارد. چون سیستم به صورت تصادفی تغییر می کند به طور کلی پیش بینی حالت زنجیره مارکوف در نقطه ای خاص در آینده غیر ممکن است. با این حال ویژگی های آماری سیستم در آینده قابل پیش بینی است. در بسیاری از کاربردها چیزی که دارای اهمیت است همین ویژگی های آماری است. تغییرات حالات سیستم انتقال نام دارند و احتمال هایی که به این تغییر حالت ها نسبت داده می شوند احتمال انتقال نامیده می شوند. مجموعه ای از حالت ها و احتمال انتقال ها به طور کامل یک زنجیره مارکوف را مشخص می کنند. طبق قرار داد ما فرض می کنیم همیشه حالت بعدی وجود دارد و در نتیجه فرآیند تا ابد ادامه پیدا می کند. کریم پور به همراه همکاران خود [9] در سال 2013، مبادرت به ارزیابی کارآیی سیستم نرم افزاری از روی معماری و با استفاده از خودکارهای واسط و تئوری صف نمودند. آن ها در تحقیقات شان انواع روش های توصیف نرم افزار را بررسی نمودند و تحقیقات آن ها نشان داد که خودکارهای واسط مناسب ترین روش توصیف سیستم نرم افزاری مبتنی بر مولفه است. عمادی در رساله دکتری خود [11]، مبادرت به ارائه مدلی قابل اجرا از روی معماری جهت ارزیابی صفات کیفی سیستم نرم افزاری نمودند. ایشان با تبدیل معماری نرم افزار به شبکه های پتری مبادرت به ارزیابی صفات کیفی کارآیی و قابلیت اطمینان از روی شبکه های پتری نمودند. شریفی در رساله دکتری خود [13]، چارچوبی جهت توصیف و ارزیابی رسمی معماری نرم افزار ارائه داد. ایشان در رساله خود توانستند معماری نرم افزار را با استفاده از یک روش رسمی به نام خودکارهای تیمی توصیف کنند و سپس از روی خودکارهای به دست آمده مبادرت به ارزیابی کارآیی و قابلیت اطمینان سیستم نرم افزاری نمودند. عیسی زاده در تحقیقات خود [1]، روشی برای پیش بینی قابلیت اطمینان سیستم نرم افزاری از روی توصیفات نرم افزار ارائه دادند. ایشان در ابتدا یک سیستم نرم افزاری را با استفاده از view chart توصیف نمودند و سپس از روی توصیفات به دست آمده و زنجیره مارکوف مبادرت به پیش بینی قابلیت اطمینان نمودند. فوکوزاوا [14]، مبادرت به ارائه مدلی جهت ارزیابی صفات کیفی سیستم نرم افزاری نمودند. ایشان با توصیف معماری نرم افزار با استفاده از شبکه های پتری رنگی مبادرت به ارزیابی صفات کیفی کارآیی و قابلیت اطمینان از روی شبکه های پتری رنگی نمودند. نقطه ضعف اساسی همه روش های غیررسمی، عمومی نبودن و محدودیت توانایی آن ها در توصیف وجوه متنوع تعامل میان مولفه ها است، به علاوه به کارگیری مکانیزم های درست یابی نیز برای مدل های غیر رسمی با محدودیت های زیادی روبرو است [9، 10]. روش های رسمی زیربنای سیستماتیک و ریاضی دارند که از عمومیت بالایی برخوردار است، لذا امکان درست یابی خواص مختلف را فراهم می نمایند و توسط ابزارهای درست یابی حمایت می شوند [11]. خودکارهای واسط یک زبان رسمی سبک وزن برای توصیف سیستم های مبتنی بر مولفه است [12]. با توجه به مزایایی که خودکارهای واسط دارد و همچنین دارای ابزارهایی برای پشتیبانی از آن است؛ هیچ تحقیقی در مورد بررسی قابلیت اطمینان یک سیستم نرم افزاری با خودکارهای واسط انجام نشده است. اختلاف اصلی میان روش پیشنهادی ما و روش های پیشنهادی دیگران در پیش بینی قابلیت اطمینان این است که ما از یک زبان رسمی سبک به نام خودکار واسط برای توصیف رفتار مولفه های سیستم نرم-افزاری استفاده خواهیم نمود؛ سپس، خودکار واسط را به زنجیره مارکوف تبدیل خواهیم کرد و با استفاده از آن قادر به پیش بینی قابلیت اطمینان سیستم های نرم افزاری مبتنی بر مولفه خواهیم بود. هدف: هدف این پایان نامه، ارائه روشی برای پیش بینی قابلیت اطمینان سیستم های نرم افزاری از روی توصیف آن ها می باشد. مراجع: [1] h. alipour and a. isazadeh, “software reliability prediction based on a formal requirements specification”, advances in computer science and engineering communications in computer and information science, vol 6, pp. 816-820, 2, 2009. [2] s. becker, l. grunske, r. mirandola, s. overhage, “performance prediction of component-based systems: a survey from an engineering perspective”, in: ralf reussner, judith stafford, clemens szyperski (eds.), architecting systems with trustworthy components, in: lncs, vol. 3938,jspringer, pp. 169_192, 2006. [3] h. koziolek , “performance evaluation of component-based software systems: a survey”, performance evaluation 67, pp. 634-658, 2, 2010. [4] l. bass, p. clements, and r. kazman, “software architecture in practice”, addison wesely, 2002. [5] a. m. johnson, j. m. malek, "survey of software tools for evaluating reliability, availability, and serviceability", acm computing surveys, vol. 20, no. 4, 1988. [6] f. aquilani, s. balsamo, p. inverardi, “an approach to reliability evaluation of software architectures”, first international workshop on software and performance, santa fe, new mexico, usa, acm, pp.178-190, 1998. [7] luca de alfaro and thomas a. henzinger. “interface automata”, in volker gruhn, editor, proceedings of the joint 8th european software engeneering conference and 9th acm sigsoft symposium on the foundation of software engeneering (esec/fse-01), acm press, vol 26, 5 of software engineering notes, pp. 109–120, 2001. [8] l. de alfaro and t. a. henzinger, “interface-based design”, in proceedings of the 2004 marktoberdorf, summer school, kluwer, 2004. [9] j. karimpour, a. isazadeh, h. izadkhah, “early performance assessment in component-based software systems”, iet software, vol 7, issue 2, pp. 118 – 128, 2013. [10] s. balsamo, m. bernardo and v. grassi, “quantitative analysis of software architectures”, research report, cs-2002-13, department of information, university ca foscari di venezia, 2002. [11] س. عمادی، "معرفی یک مدل قابل اجرا از معماری نرم افزار"، رساله ی دکتری، دانشگاه آزاد اسلامی واحد علوم تحقیقات تهران، سال 1385. [12] y. jin, “compositional verification of component-based heterogeneous systems”, phd thesis, department of computer science, university of adelaida, 2004. [13] م. شریفی، "یک چارچوب برای توصیف و ارزیابی صفات کیفی از روی معماری نرم افزار"، رساله ی دکتری، دانشگاه آزاد اسلامی واحد علوم تحقیقات تهران، سال 1387. [14] k. fukuzawa, m. saeki, 2002, “evaluating software architectures by colored petri nets”, proceedings of seke 02, acm press, 2002. امضای دانشجو امضای استاد راهنمای اول امضای استاد راهنمای دوم امضای استاد مشاور اول امضای استاد مشاور دوم تاریخ
ایمان امیدعلی شهریار لطفی
حلقه ها منبع اصلی موازی سازی در بسیاری از کاربردها می باشند، بنابراین امروزه کشف موازی سازی بین دستورات در حلقه های تودرتو موضوع بسیار مهمی است. وابستگی بین دستورات و تکرار حلقه ها باعث به وجود آمدن تعدادی چرخه در گراف وابستگی می شود که مانع از اجرای برنامه به صورت موازی می شوند. از آنجا که مسئله ی تشخیص مجموعه ی کمینه از وابستگی های بحرانی در یک چرخه ی وابستگی حلقه یک مسئله چند جمله ای غیر قطعی کامل می باشد لزوم استفاده از الگوریتم های تکاملی، واضح و منطقی می باشد. هدف از این پایان نامه مقایسه و بررسی روش های ارائه شده به منظور حذف وابستگی ها یا کاهش این وابستگی ها در بین دستورات برنامه و تکرارهای حلقه، و ارائه روشی جدید برای حذف وابستگی های بحرانی ایجاد شده در چرخه ی گراف وابستگی به منظور کاهش تعداد چرخه های موجود در گراف وابستگی برای موازی سازی حلقه ها می باشد به گونه ای که بتوان سرعت اجرای برنامه ها را افزایش داد. در راستای رسیدن به این اهداف و حل مسئله ی موجود، راه کاری تکاملی ارائه شده است که بر روی چندین نمونه واقعی از حلقه ها و وابستگی های آنها پیاده شده است و از نظر قابلیت اطمینان، همگرایی و پایداری که سه شاخصه ی مهم برای ارزیابی الگوریتم های تکاملی می باشند، مورد بررسی قرار گرفته و نتایج قابل قبولی به دست آمده است. نتایج حاصل از مقایسه ی روش پیشنهادی با سایر روش ها حاکی از این موضوع است که روش پیشنهادی علاوه بر اغنا کردن شاخصه های مهم در موازی سازی حلقه ها، توانسته است سرعت اجرای حلقه ها را نسبت به سایر روش های موجود به طور میانگین نزدیک به 14 درصد بهبود بدهد.