Software Migration Strategies - شبکه دانشجویان مهندسی نرم افزار
Download
Report
Transcript Software Migration Strategies - شبکه دانشجویان مهندسی نرم افزار
a
نقش مهندسی معکوس در
دنیای صنعتی
سعید پارسا
دانشگاه علم و صنعت
زمستان 1389
Vigorous and Rapid Promotion of Industries
Through Reverse Engineering
نقش مهنسی معکوس در پیشبرد صنایع
3
نقش مهندس ی معکوس در صنایع
مهندس ی معکوس یک نوع فرآیند برای استخراج دانش و نقشه
دلیل اهمیت این علم زمانی مشخص شد که محققین به
پرداختند وباشد .تنها تفاوت
باشد ،می
دلیلی که
هر چیز
بشردوآن ر
ساختهژاپن
کشوار چین و
پیشرفت
ازرس ی
طراحی بر
مهندسکهی این کشور
نتیجهورسیدند
وسایلکهازتحقیق علمی بر
معکوس هادر بااینخریداست
بدینعلمی
در تحقیق
اماانجام
اولیه و
طبیعیعنوان
هایدیگر به
کشورهای
مهندسی یمعکوس بر روی
مهندس
نمونهشود
یک می
انجام
روی پدیده
معکوس بر روی آنها و طراحی مجدد آنها اتوانسته اند همان
معکوس در جاهایی
مهندسینمهندس
توسطمعمول
بومی وشود.
انجام می
خودشانی ایجاد
بشربصورت
سازها را
دست کال
استفاده قرار می گیرد که دانش و نقشه طراحی یک چیز
مورد نمایند .
موجود نباشد .
4
نقش مهنسی معکوس در پیشبرد صنایع
نقش مهندس ی معکوس در صنایع
5
هدف از مهندس ی معکوس در فرایندهای صنعتی ایجاد وسیله ای مشابه آنچه که
وجود دارد می باشد.
موارد استفاده بخصوص در ساخت ،طراحی صنعتی و بازتولید قطعات است( .برای
نمونه REاتومبیل جدید توسط رقبا )
نقش مهندس ی معکوس در صنایع
.1
جمع آوری داده های مربوط به یک ش ی واقعی جهت تشخیص سطوح ش ی.
.2
تحلیل داده های جمع آوری شده و ایجاد مدل سطح ()Surface Model
.3
استفاده از مدل سطح جهت رفع معایب ش ی ،ایجاد اشیا بهتر ،تحلیل ویژگی های ش ی و
ساخت مجدد ش ی.
6
موارد بکارگیری مهندس ی معکوس
ایجاد مدل CADهنگامی که مستندات ساخت و یا سازنده در دسترس نیستند
ایجاد مدل هندس ی CADاز قطعات صنعتی جهت بررس ی و ساخت
.1
سازنده در دسترس
ایجاد مدل هندس ی CADاز اجزا بدن جهت اهداف پزشکی
ایجاد مدل هندس ی CADجهت تصاویر متحرک
7
مفهوم مهندس ی معکوس در صنعت
8
مهندس ی معکوس فرایند استخراج مدل CADاز نقاط سه بعدی
حاصل از اسکن /رقمی کردن قطعات موجود است.
مراحل مهندس ی معکوس
-1اسکن
-2پردازش نقاط
-3تولید مدل هندس ی
9
مراحل مهندسی معکوس
مدل
CAD
تکمیل سطوح
ایجاد مش
اسکنر لیزری
شیی
فیزیکی
اسکن لیزری
10
دیسک ترمز
مهندس ی معکوس عملکرد قطعات
مهندس ی معکوس در حالت کلی محدود به ایجاد مدل مناسب
برای CADمی باشد.
هر رشته مهندس ی موارد خاص خود را برای مهندس ی معکوس
مطرح می نماید
11
مفهوم مهندسی معکوس
ی معکوس روشی برای استخراج مفاهیم از متن برنامه ها
با استفاده از مهندس ی معکوس می توان دریافت یک برنامه:
چه ساختاری دارد؟ چه مفهومی دارد؟ چه داده هایی دارد؟
چگونه عمل می کند؟
12
مهندس ی معکوس بر سه جنبه کنترل ،فرایند و داده اشراف دارد
مهندسی رو به جلو و معکوس
توصیف
رفتار
طراحی
کد
کد
طراحی
رفتار
توصیف
مهندس ی روبه جلو 000000000000000مهندس ی معکوس
13
نقش مهندسی معکوس نرم افزار در صنایع
ا
نرم افزارها و برنامه های کنترل کننده قطعات و دستگاه های کنترلی که معمول به
صورت کد باینری در حافظه های ایستا قرار گرفته اند را با کمک ابزار مهندس ی
معکوس می توان :
.1از کد باینری توسط دیس اسمبلرها به کد اسمبلی تبدیل نمود.
.2از کد باینری توسط دیکامپایلرها به کد متن تبدیل نمود.
.3مدلهای رفتاری و ساختاری را از متن برنامه استخراج نمود.
14
نقش مهندسی معکوس نرم افزار در صنایع
.4توسط ابزاری مثل دایکون منطق برنامه را استخراج نمود.
.5با استفاده از ابزار مهندس ی مجدد کد برنامه ها را بهینه نمود.
.6کد برنامه را مورد ارزیابی های کیفی قرار داد.
.7کد برنامه را بررس ی و نقاط نفوذ را مشخص نمود.
.8سرویس های برنامه را تشخیص و تبدیل به وب سرویس نمود.
15
آیا مهندسی معکوس قانونی است ؟
بازی کامپیوتری ارایه نمودSega کمپانی ژاپنی1990 در سال
بود1990 این بازی با کنسول خاص خود موفقترین بازی در
Using
‘fair use’
argument from
copyright
a clear
line در
شدthe
معکوس
. مAccolade
آمریکایی
شرکتlaw,
توسط
1991
of cases support
reverse engineering of software for the purposes of
نمود
عرضهunderstanding
با کیفیت بهترfunctionality
راSega بازیand
Accolade کمپانی
for developing a different version of information or code.
... نشد زیراAccolade موجب محکومیتSega شکایت
را کپی نکرده بودSega کد برنامهAccolade شرکت
16
سطوح مهندس ی معکوس
.1مهندس ی معکوس کد باینری
-2مهندس ی معکوس متن برنامه ها
-3مهندس ی معکوس داده ها
17
ابزار معکوس گرها
.1ابزار مانیتورینگ
برای نظارت بر کانالهای I/O
www.sysinternals.com
روش کار:
قالب انداختن به مولفه ها و قطعات سطح پایین در سیستم عامل
18
.1ابزار مانیتورینگ
www.sysinternals.com
: FIleMonبرای نظارت بر عملیات فایلها (خواندن ،نوشتن ،ایجاد و باز
کردن دایرکتوری) در هر پردازه ای از سیستم
: TCPViewبرای نظارت بر اتصالت TCPو UDPدر شبکه
: RegMonبرای نظارت بر عملیات بر روی رجیستری
: PortMonبرای نظارت بر ترافیک پورتهای موازی و سریال
: ProcessExplorer 19مشابه Task Managerدر ویندوز
.1ابزار مانیتورینگ
یافتن فایل بعدی
کد پچ شده
کد اجرایی
فایل بعدی
کد بدخواه
پنهان کننده کد بدخواه
کد اجرایی
.........................
یافتن فایل بعدی
Rootkit
Trampoline
فایل بعدی
20
Code
ابزار معکوس گرها
.2دیس اسمبلرها
هدف :تبدیل کد باینری به اسمبلی
روش کار :تبدیل کد به دستورالعمل در طول مسیر اجرایی برنامه
مشکل :تفکیک کد از داده
21
.2ابزار دیس اسمبلی
www.sysinternals.com
: IDAProامکان دیس اسمبلی ،استخراج گراف جریان کنترلی ،گراف
فراخوانی و فلوچارت را دارد .توابع APIرا مشخص می کند
: ILDasmبرای تبدیل از MSILبه متن IL
22
ابزار معکوس گرها
.3دیباگر یا اشکالزداها
هدف :مکانیابی خطا در سطح کاربر و سطح سیستم عامل
روش کار :توقف موقت با حفظ وضعیت اجرایی و بازیابی مجددآن
مشکل :توقف موقت کد در هسته سیستم عامل موجب توقف سیستم می
شود.
23
.3ابزار دیباگ
http://home.t-online.de/home/Ollydbg.
: OLLyDlg .1
برای مهندس ی معکوس ساخته شده -دیس اسمبلی قوی دارد
تجزیه گر با قابلیت تشخیص حلقه ها و جمله ، switchبالکها و سایرساحتارهای برنامه
امکان پچ کردن و اسمبلی و اجرای کد پچ شده را دارد24
.3ابزار دیباگ
www.microsoft.com/whdc/devtools/debugging/default.mspx.
WinDbg .2
دارای یک مد هسته ای برای اشکالزدایی است که به صورت راه دور نیز عملمی کند.
از راه دور می توان یک سیستم را با قرار دادن سوییچ /DEBUGدرون ، boot.iniفعال نمود.
با قرار دادن این سوییچ امکان اشکالزدایی از هسته نیز فراهم می شود.25
.3ابزار دیباگ
www.microsoft.com/whdc/devtools/debugging/default.mspx.
SoftICE .3
امکان اشکالزدایی هسته سیستم عامل به صورت محلی دارد. با فشردن کلید CTRL Dعملکرد سیستم را مشخص می کند. با فشردن CTRL Dسیستم عامل ویندوز متوقف و پنجره مربوط به ایناشکالزدا بر روی صفحه منانیتور ظاهر می شود
پردازنده مرکزی را با یک امولتور جایگزین می کند26
.3ابزار دیباگ
www.smidgeonsoft.com.
PEBrowse .4
اشکالزدایی کد میانی ILدر محیط .NET امکان اشکالزدایی در مد هسته را دارد قابلیت تعیین نقطه توقف درون APIهای ویندوز را دارد. امکان متوقف کردن و ادامه عملیات در هسته ویندوز را دارد.27
ابزار معکوس گرها
.4دیکامپالیرها
هدف :تبدیل کد باینری به کد متن یا sourceبرنامه
-1دیس اسمبلی
-2استخراج گراف جریان فراخوانی و کنترلی
-3تشخیص دستورالعمل ها بر اساس الگو یا ساختار دستورالعمل
-4تشخیص ساختمان داده ها
28
.4دیکامپایلرها
الف .دیکامپایلرهای شناخته شده در .NET
Remotesoft Salamander Reflector for .Netب .دیکامپایلرهای شناخته شده در Java
JODE -
29
JAD
دیکامپایلر salamandarبرای C#
30
نقش مهنسی معکوس در پیشبرد صنایع
ساخت قطعات با استفاده از اندروید
سیستم عامل اندروید
آندروید بستری را فراهم می کند تا بتوان برنامه هایی ساخت که از تمام ویژگی های یکگوشی هوشمند مثل ارسال پیامک ،استفاده کند.
آندروید امکان استفاده از توابع داخلی گوشی موبایل همچون شماره گیری ،فرستادنپیامک یا استفاده از دوربین گوشی را به برنامه نویسان می دهد
Open Source -1
-2پوسته جاوا بر روی لینوکس
-3برنامه نویس ی فقط با جاوا
developer.android.com/sdk/ -4
قابل نصب بر روی eclipse31
نقش مهنسی معکوس در پیشبرد صنایع
مهندس ی معکوس برای ساخت قطعات
هدف
32
با استفاده از تکنیک های مهندس ی معکوس الگوریتم های کد نهفته درون قطعات سخت
افزاری را بدست آورده تا بتوان این وسایل را بصورت بومی برنامه ریزی و ایجاد نمود و در
صورت امکان توسعه داد.
برای نمونه سخت افزارهای مبتنی بر سیستم عامل اندروید از قبیل ( Armنسخه 9و
بالتر ) و همچنین واسطهایی مانند Android IOIOکه امکان مدیریت سخت افزار
بوسیله ی گوش ی های اندروید را فراهم می کند مورد بررس ی قرار داده شده است.
نقش مهنسی معکوس در پیشبرد صنایع
ساخت سیستم حضور و غیاب با اندروید
RFID
Friendly Arm /Beagle
Ardino / IOIO
Finger
Print
رابط
KeyPad
33
نقش
َ
اندروید
برای ساخت این سیستم نیاز به بخش های زیر می باشد :
سخت افزار برای اجرای سیستم عامل آندروید ( ) Beagle ، ARM
ماژول اثر انگشت ،ماژول آر اف آی دی ،کی پد ،ال ای دی ...
رابط بین سیستم عامل و ماژول ها
مهنسی نرم افزار
معکوس در پیشبرد صنایع
ساخت سیستم حضور و غیاب با اندروید
برد های Frienfly Arm
-
-
34
قابلیت نصب آندروید را دارند
از پورت های ارتباطی مختلفی از
قبیل پورت ، HDMI ، usb
پورت شبکه و ...استفاده می کند
LCDهمراه نیز دارند
به وفور در بازار ایران یافت می
شوند.
قیمت این برد ها بسته به قدرت
پردازش ی و ارتباطی و Lcdهمراه
بین 100تا 200دلر متغیر است .
بردهای ARMدارای پردازنده های خانواده ATMEL
هستند .این پردازنده ها:
ارزان با محبوبیت زیاد در اغلب گوش ی های موبایل استفاده می شوند -امکان نصب لینوکس ،ویندوز CEو اندروید را دارند
نقش مهنسی معکوس در پیشبرد صنایع
ساخت سیستم حضور و غیاب با اندروید
ماژول اثز انگشت
به وفور در بازار ایران یافت می شود -دارای حافظه داخلی است
یک پردازنده آنها را اداره می کند تمامی مراحل ثبت اثر انگشت وجستجوی آن توسط ماژول و پردازنده
آن صورت می گیرد
در صورت تایید اثر انگشت و یا ذخیرهاثر انگشت ،پیغام های مربوطه را از
طریق پورت های خود ارسال می کند
قیمت ماژول اثر انگشت 130دلر35
نقش مهنسی معکوس در پیشبرد صنایع
ساخت سیستم حضور و غیاب با اندروید
ماژول (Radio Ftrquency Idenentificatuib) RFID
-
36
شامل برچسب،آنتن و خواننده برچسب و نرم افزار کنترلی که توسط سازنده ارایه می شود
برای شناسایی برچسب ها و عالمت های نصب شده روی اجسام به کار می رود
با دریافت شناسه برچسب ،کارت آر اف آی دی آن را از پورت های خود ارسال می کند
ردیابی اشیاء ،نظارت بر فعالیت ها ،کنترل دسترس ی و امنیت ،نمونه هایی از کاربردها می باشد.
قیمت 10تا 30دلر
نقش مهنسی معکوس در پیشبرد صنایع
ساخت سیستم حضور و غیاب با اندروید
)کاربردی از (RFID
کنترل ورود و خروج کتاب از کتابخانه
37
کنترل ورود و خروج اتومبیل ها
نقش مهنسی معکوس در پیشبرد صنایع
توسعه نرم افزار در محیط اندروید
َ
ساخت نرم افزار در اندروید
•
•
•
َ
نرم افزار لزم برای ارتباط مابین ماژول های خارجی و اندروید توسط SDKرابط ( یویو ،آردینو ) ارایه
شده توسط شرکت سازنده برد های یویو ،آردینو است.
فارس ی نویس ی در آندروید با معکوس کردن یکی از برنامه های ارسال پیامک فارس ی
ذحیره و بازیابی اطالعات با معکوس کردن نرم افزارهای استفاده کننده از پایگاه داده
فایل
fn.class
38
JAD
فایل
fn.jar
Dex2Jar
نقش مهنسی معکوس در پیشبرد صنایع
فایل اجرایی
fn.apk
دیکامپایلر Dexبرای جاوا تحت اندروید
39
نقش مهنسی معکوس در پیشبرد صنایع
دیکامپایلر Dexبرای جاوا
40
نقش مهنسی معکوس در پیشبرد صنایع
دیکامپایلر Dexبرای جاوا
َ
و
ساخت نرم افزار در اندر ید
برای رسیدن به کالس های جاوا باید
فایل جار را به کالسهای جاوا تبدیل
کنیم .برای این روند نیز از نرم افزار
jd-guiاستفاده می شود .کافیست
که این نرم افزار اجرا کرده و به ورودی
آن فایل Jarمورد نظر را وارد نمود.
فایل jarبه کالس های جاوا تبدیل می
شود .برای دریافت این برنامه می توان
به سایت زیر رجوع کرد .
http://java.decompiler
.free.fr/?q=jdgui
41
نقش مهنسی معکوس در پیشبرد صنایع
مهندس ی معکوس کد نهفته درون تراشه
هدف معرفی برنامه ای جهت یافتن کد نهفته درون بردهای خانواده ARMو تبدیل آن به کد اسمبلی است .مراحل
کار :
.1از برنامه icprogیا flash magicبرای خواندن کد hexکه در eepromمیکروکنتلر ذخیره شده استفاده
شود.
.2بدین منظور ابتدا ARMرا بوسیله ی پورت usbبه کامپیوتر متصل نموده .حال با اجرای برنامه icprog
یا flash magicاطالعات درون تراشه را می توان خواند .برای دریافت این دو برنامه می توان به لینک های
زیر مراجعه کرد :
http://www.esacademy.com/en/products.html
http://www.ic-prog.com/
.3
42
سپس از برنامه disavrexبه منظور تبدیل کدهای hexبه کد اسمبلی استفاده می شود.
نقش مهنسی معکوس در پیشبرد صنایع
مشکالت کار با بردهای Family Arm
-1پیام ها اغلب به زبان چینی هستند.
-2فارس ی را پشتیبانی نمی کند.
-3راهنمای استفاده وجود ندارد.
. -4برنامه های مدیریت امکانات برد مثل ledها ،وسایل PWM ، I/Oو I2Cنهفته در ون سیستم عامل راهنما
ندارند.
43
نقش مهنسی معکوس در پیشبرد صنایع
روال کار با بردهای Family Arm
-1پیام ها اغلب به زبان چینی هستند.
-2فارس ی را پشتیبانی نمی کند.
-3راهنمای استفاده وجود ندارد.
. -4برنامه های مدیریت امکانات برد مثل ledها ،وسایل PWM ، I/Oو I2Cنهفته در ون سیستم عامل راهنما
ندارند.
44
نقش مهنسی معکوس در پیشبرد صنایع
مهندس ی معکوس و نفوذ در برنامه ها
حمالت مهندس ی معکوس با تحلیل عملکرد برنامه در زمان اجرا
حمالتدارند.
برنامهها
کشفیکنقط
سعی
مهندس ی معکوس عمل
ضعفاتر از
مرحله فر
حمالتدرتغییر
تحلیلهای ایستا شامل دیکامپایل و دیساسمبل و تحلیل جریان کنترلی است.گیرد.روی برنامهها
معکوس بر
ی
مهندس
عملیات
انجام
بر
عالوه
و
کرده
ر
و
تحلیلهای پویا بر ر ی کد اجرایی توسط دیباگر هم صو ت میخودزهدارند.
کارکرد برنامه به
تغییر
سعیو در
سود امرو
توسط هکرها برای
اشکالزداها که
دیباگر یا
فترین
معر
تشخیص آسیب پذیری های برنامه ها و یا غیر فعال کردن سیستم
امنیتی استفاده می شوند عبارتند از .SofIce, OllyDbg, IdaPro
45
مهندس ی معکوس و دفاع از برنامه ها
Virus Binary Code :
Virus Data :
Anubis Analyzer :
استخراج ویژگیها
از متن برنامه
نرمال سازی
تعیین رفتار
0 ≤ data ≤ 1
Anubis
تعیین نوع ویروس
تعیین پیشگوها
استخراج ویژگیها
Attrib. Sel.
.crf => .ARFF
کد باینری
ویروس ها
مستند XML
رفتار ویروس
بر اساس رابطه
متن برنامه
ویروس ی
Nqty=NewAttrib quantity=Dll calls * file weight
آموزش مدل با
Weka
} {(Attribnumber nqty)* , Malware type
46
{45 0.107, 46 0.107, 47 0.107, 48 0.107, 49 0.107, 50 0.107, 51 0.107, 52 0.107,
}53 0.107, 54 0.107, 55 0.107, 56 0.107, 73 0.107, 87 1, 88 T24
رابطه رگرسیون
دسترس ی های
انتخاب شده
مهندسی معکوس و دفاع از برنامه ها
کد باینری
ویروس ها
برچسب Processesشامل موارد ذیل است:
.1
.2
.3
.4
.5
.6
.7
.8
.9
: dll_handling_sectionشامل اطالعات مربوط به فراخوانی تعدادی از فایلهای کتابخانهای
: filesystem_sectionشامل اطالعات مربوط به ایجاد ،جستجو ،تغییر در فایلها
: registry_sectionشامل اطالعات مربوط به تغییراتی که برنامه در رجیستری ایجاد کرده
: process_sectionشامل اطالعات مربوط به فرایندها
تعیین رفتار
: Mutexشامل اطالعات میوتکس های مورد دسترس ی
Anubis
: virtual_memory_sectionشامل اطالعات مربوط به دستکاری و تغییرات حافظه مجازی توسط برنامه
: Emailsارسال پست الکترونیک
: Linksارتباط از طریق سوکتها
...
مستند XML
رفتار ویروس
.1برنامه هایی ویروس ی را از سایت اینترنتی http://vx.netlux.org/دانلود نمایید.
.2فایلهای ویروسی را به سایتهای ذیل ارسال و فایلهای XMLنتیجه را دانلود نمایید:
http://anubis.iseclab.orgو http://www.sunbeltsecurity.com/sandbox/default.aspx
.3 47مستنا XMLانهایی را با اطالعات بیش از 30000ویروس که از آدرس ذیل قابل دسترس ی است تکمیل نمایید:
http://pi1.informatik.uni-mannheim.de/malheur
مهندس ی معکوس و دفاع از برنامه ها
کد باینری
ویروس ها
لیستی از خصوصییت های انتخاب شده نمایانگر رفتار ویروس
1. version.dll
6. profmap.dll
11. winsta.dll
2. authz.dll
7. netapt32.dll
12.wintrust.dll
…
…
85. msctfime.ime
3. crypt32.dll
8. psapi.dll
13. magehlp.dll
4. msan1.dll
9. regapi.dll
14. ws2_32.dll
…
86. asycfil.de
5. nddeapi.dll
10. seupapiI.dll
15.ws2help.dll
…
87. delete_file
…
88.create_mutex 89.process_call
های مؤثرAPI نام
انتحاب ویژگی ها
XMltoMatrix برنامه
XML مستند
رفتار ویروس
Process32Next
Process32First
RegEnumValueA
CopyFileA
RegCreateKeyExA
InternetConnectA
CopyFileW
RegOpenKeyA
RegQueryInfoKeyA
TerminateThread
OpenFile
WSACleanup
GetUserNameA
RegQueryValueExA
ReadFile
InternetOpenA
GetEnvironmentVariableA
CreateFileA
DeleteFileA
OpenServiceA
GetEnvironmentStrings
RegSetValueExA
WSAStartup
GetUserNameW
EnumServiceStatusA
RegDeleteValueA
OpenServiceW
StartServiceW
LookupPrivilegeValueA
RegEnumKeyExA
CreateThread
StartServiceA
GetSystemDirectoryA
CreateServiceA
RegDeleteKeyA
مطلوبیت خصوصیت = اندازه فایل مورد دسترس ی ویروس * تعداد دفعاتی دسترس ی ویروس به فایل: معیار انتخاب.1
{45 0.107, 46 0.107, 47 0.107, 48 0.107, 49 0.107, 50 0.107, 51 0.107, 52 0.107, 53 0.107, 54 0.107, 55 0.107, 56 0.107, 73 0.107, 87 1, 88 T24}
. هر سطر حاوی خصوصییات یک ویروس است.ستون است92 سطر و3131 حاصل ماتریس ی با بیش از
. عدد انتخاب شد35 کاندیدAPI 170 اجرا شد و ازWinAPIOverride32 برنامه سالم و ویروس ی توسط1500 اجرای48
.2
مهندس ی معکوس و دفاع از برنامه ها
ایجاد رابطه تشخیص نوع ویروس با استفاده از وکا:
.1تبدیل ماتریس خصوصییت ها به فرمت .arrf
.2نرمالیزه کردن داده ها به فاصله []0..1
.3فیلتر کردن خصوصییتهای corelatedو محدود کردن آنها به 14عدد
.4آموزش مدل با استفاده از %70مجموعه ورودی ها و رگرسیون خطی
.5آزمون مدل با استفاده از %30باقیمانده از مجموعه ورودی ها
ابزار Wekaدر دانشگاه Waikatoنیوزیلند توسعه یافته است و سرواژه Waikato Environment for
Knowledge Analysisمی باشد .این ابزار توسط Javaپیاده سازی شده است و تحت مجوز GNU
General Publicمنتشر می گردد و در حال حاضر بر روی سیستم عاملهای ،Windows ،Linux
Macintoshو حتی پلتفرم PDAقابل اجراست .همچنین Wekaنام پرنده ای کمیاب و در حال انقراض در نیوزیلند
49
است که جستجوگر بوده و توانایی پرواز ندارد.
سطوح مهندس ی معکوس
.1مهندس ی معکوس کد باینری
-2مهندس ی معکوس متن برنامه ها
-3مهندس ی معکوس داده ها
50
درک برنامه ها
تقسیم برنامه به نواحی یا در اصطالح Sliceیا برش با رفتار خاص
.1برش بندی بر اساس شرط خاص
برای نمونه تعیین کلیه نواحی ای از برنامه که شرط Phone-off-hookبرقرار
است
بدینوسیله جنبه خاص ی از برنامه مشخص می شود.
.2برش بندی بر اساس رویدادها
تعیین نواحی ای از برنامه که با یک رویداد به اجرا در می آیند
بدینوسیله رفتار در قالب دیاگرام حالت برای اشیا مشخص می شود
51
درک برنامه ها
تقسیم برنامه به نواحی یا در اصطالح Sliceیا برش با رفتار خاص
.3برش رو به جلو
کلیه جمله های تحت تاثیر مقدار یک متغیر یا ورودی در مکانی مشخص
بدینوسیله مشخص می شود یک ورودی بر کدام نواحی کد موثر است
.4برش رو به عقب
کلیه جمله های موثر بر مقدار یک متغیر در مکانی مشخص
بدینوسیله مشخص می شود
52
استخراج ساختار و رفتار برنامه ها
.1استخراج مدلهای ساختاری و رفتاری با تحلیل ایستای متن برنامه ها
.2استخراج مدلهای رفتاری با تحلیل پویای متن برنامه ها
53
استخراج ساختار معماری با تحلیل ایستا
.1استخراج گراف فراخوانی ( مشکل فراخوانیهای چند ریختی)
54
گراف فراخوانی برای مساله فروشنده دوره گرد
استخراج ساختار معماری با تحلیل ایستا
.2تبدیل گراف فراخوانی
به مدل ارتباطی کالسها
وزن لبه ها تعداد فراخوانیها
بین کالسها در مساله فروشنده
دوره گرد
55
استخراج ساختار معماری با تحلیل ایستا
.3خوشه بندی کالسها بر اساس اصول پیمانه بندی
56
دیدگاه های معماری
دیدگاه 4+1
ديدگاه فیزيکي
ديدگاه فرايند
ديدگاه سناريو
ديدگاه توسعه
57
ديدگاه منطقي
استخراج ساختار معماری با تحلیل ایستا
مدل قطعات برای سیستم آموزش
صفخه های رابط برای
صفخه های رابط برای
امور آموزش
امور ثبت نام
سرویسهای
کنترلی
58
سرویس های بانک
صفخه های رابط برای
اطالعاتی
لیست کالسها
استخراج ساختار معماری با تحلیل ایستا
ابزار
ایحاد مدل قطعات در
کد منبع
Component View
از:
Source Code
مراحل اصلی عبارتند
.1بدست آوردن مدل ارتباطی کالسها توسط نرمافزار Understand
http//:www.scitools.com
تبدیل مدل قطعات به
استخراج مدل ارتباطی
درتوسط نرمافزار Bunch
ها
.2خوشهبندی مدل ارتباطی کالس
فرمت قابل نمایش
Rattional Rose
کالسها توسط نرمافزار
Understand
.3نمایش نمودار قطعهی حاصل (خوشهبندی ایجاد شده) در محیط Rational Rose
خوشه بندی کالسها
توسط Bumch
59
استفاده از ابزار Understand
-1ایجاد پروژه جدید در محیط
ابزار Understand
این نرمافزار را از سایت http://www.scitools.comدانلود و نصب می توان نمود.
60
ابتدا از منوی Fileگزینه Newو سپس گزینه Projectانتخاب شود.
استفاده از ابزار Understand
-2انتخاب زبان برنامه نویس ی برای برنامه مورد
نظر در Understand
نرمافزار Understandقادر به تحلیل کدهای زبانهای مختلف میباشد .لذا در ادامه می-
بایست زبانهای برنامه نویسی به کار رفته در کد منبع را انتخاب نمود،
61
استفاده از ابزار Understand
-3تعیین دایرکتوری شامل برنامه مورد بررس ی
در Understand
سپس در پنجره ظاهر شده ،با کلیک بر روی ،Add a Dirrectoryپوشهای که حاوی کد
موردنظر برای تحلیل میباشد را می توان مشخص نمود.
62
استفاده از ابزار Understand
-4درخواست مشاهده نمودار وابستگی کالسها
در ابزار Understand
در ادامه برای مشاهده نمودار وابستگی بین کالسها ،بر روی پوشهی پروژه کلیک راست کرده
و سپس به ترتیب گزینههای Graphical viewsو Internal Dependenciesرا
63
می توان انتخاب نمود.
استخراج مدل ارتباطی کالسها
-5نمایش گراف وزن دار وابستگی بین
کالسها در Understand
با انجام این کار ،نمودار وابستگی بین کالسها مشاهده خواهد شد که بر روی یالهای آن میزان
وابستگی بین آنها درج شده است.
64
استخراج ماتریس ارتباطی کالسها
-6ثبت ماتریس وابستگی توسط
ابزار Understand
نرمافزار ،Understandامکان گرفتن خروجی از این وابستگیها را به فرمت csvدر
اختیار قرار میدهد .بدین منظور از منوی ،Reportsبه ترتیب گزینه های
Export Matrix CSV ،Class Dependencies ،Dependencyانتخاب می
شوند.
65
استخراج ماتریس ارتباطی کالسها
-7فایل اکسل ماتریس وابستگی کالسها تولیدی
در ابزار Understand
فایل خروجی با فرمت ،CSVماتریسی است که سطرها و ستونهای آن نام کالسها و دادههای
آن ،عدد وابستگی بین کالسها را نشان میدهد.
66
تابع هدف برای خوشه بندی کالسها
تابع کیفیت Basic MQ
-1میزان چسبندگی برای خوشه iمساوی با مجموع وزن لبه های درون خوشه تقسیم بر
تعداد گره های درون خوشه به توان دو است :
i
Ni ^ 2
Ai
-2میزان اتصال بین دو خوشه iو jمساوی با مجموع وزن لبه های بین دو خوشه تقسیم
بر حاصل دو برابر ضرب تعداد گره های iدر تعداد jاست :
تابع کیفیت Basic MQبه صورت تفاضل میان میانگین چسبندگی و اتصال محاسبه می شود:
67
تعیین تابع هدف برای خوشه بندی کالسها
تابع کیفیت Turbo-MQ
-1میزان اتصال برای خوشه iمساوی با مجموع وزن لبه های درون خوشه تقسیم بر
دوبرابر این مجموع به اضافه وزن اتصالت با سایر خوشه ها :
-2میزان کیفیت سریع از رابطه ذیل محاسبه می شود :
تابع کیفیت به عنوان تابع هدف برای سنجش ارزش خوشه بندی مورد استفاده قرار می گیرد.
مقدار آن باید ماکزیمم شود.
68
خوشه بندی کالسها
ابزار خوشه بندی Bunch
-1ورودی :فایل ماتریس ارتباط وزن دار کالسها
-2خروجی :فایل خروجی می تواند متن ،عکس یا .dottyباشد.
-3برای نمایش خروجی می توان از نرم افزار Graphviz 2.28استفاده می توان کرد
69
نقش مهنسی معکوس در پیشبرد صنایع
استخراج ساختار معماری با تحلیل ایستا
تبدیل خروجی understandاز فرمت اکسل به ورودی برای
ابزار Bunch
کسل خروجی Understandرا در یک حلقه سطر به سطر خوانده
با یک برنامه C#می توان فایل ِا ِ
درون یک ماتریس و در یک فایل .txtذخیره نمود.
نام کالس متناظر با ردیف i
نام کالس متناظر با ستون j
میزان ارتباط iبا j
کسل در محیط visual studioنیاز است تا در قسمت
برای کار کردن با فایل ِا ِ
references 70مربوط به پروژه ،مرجع مربوط به Excelرا اضافه نمود.
استخراج ساختار معماری با تحلیل ایستا
ابزار Bunch
−در پنجرهی اصلی نرمافزار در سربرگ ،Basicابتدا می بایست مسیر
مربوط به فایل متنی .txtایجاد شده به فرمت قابل قبول را برای نرمافزار
مشخص کرد .از طریق دکمهی Selectمیتوان فایل ورودی را از هر
مکانی بر روی کامپیوتر خود انتخاب کرد.
−با دادن فایل ورودی ،نرمافزار بطور خودکار فایل خروجی همنام با فایل
ورودی را در مسیر فایل ورودی ایجاد میکند .نوع فایل خروجی میتواند
متن dotty ،و یا عکس باشد.
71
استخراج ساختار معماری با تحلیل ایستا
ابزار Bunch
−ر سریرگ Clustering Optionمیتوان تنظیماتی مربوط به عمل خوشهبندی را اعمال
کرد.
72
استخراج ساختار معماری با تحلیل ایستا
ابزار Bunch
با فشردن دکمهی Runنرافزار به طور خودکار خوشهبندی را انجام داده،
نتیجه در پنجرهی جدیدی همانند پنجرهی فوق نمایش داده می شود..
73
وابستگی بین کالسها.txt فایل
ab3
ac2
ad8
ba4
bc7
bd1
ca2
cd1
da5
db3
حاصل از کالسترینگ.Dot فایل
استخراج ساختار معماری با تحلیل ایستا
digraph G {
size= "10,10";
rotate = 90;
subgraph cluster0 {
label = "(SS-L0):b";
color = black;
style = bold;
Rational Rose
برای نمایش در محیطC# ورودی برنامه
"d"[label="d",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
"b"[label="b",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
}
subgraph cluster1 {
label = "(SS-L0):a";
color = black;
style = bold;
که یک
"c"[label="c",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
"a"[label="a",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
}
"b" -> "a" [color=blue,font=6];
"b" -> "d" [color=blue,font=6];
"b" -> "c" [color=blue,font=6];
"a" -> "b" [color=blue,font=6];
"a" -> "d" [color=blue,font=6];
"a" -> "c" [color=blue,font=6];
Bunch ودی
همراه
این فایل. دارد.dot قالب بندیBunch
"d"ور->"باb"
[color=blue,font=6];
"d" ->قطعات
"a" [color=blue,font=6];
استفاده می شود
برای ایجاد مدلC# بود به عنوان ورودی برنامه.txt فایل
"c" -> "a" [color=blue,font=6];
"c" -> "d" [color=blue,font=6];
}
فایل خروجی ابزار
74
استخراج ساختار معماری با تحلیل ایستا
ورودی برنامه C#برای نمایش در محیط
Rational Rose
پس از نصب رشنال رز ،برای استفاده از واسطی که رشنال در اختیار برنامه
نویسان قرار داده ،موسوم به ،RationalRose Extensibility Interface
در پروژه مربوطه در محیط ، Visual Studioتوسط گزینه Add
،referenceفایل RationalRose.tlbدر شاخهی C:\\Program
Files\Rational\Roseرا به پروژه خود اضافه باید نمود.
75
استخراج ساختار معماری با تحلیل ایستا
Rational Rose
برای نمایش در محیطC# برنامه
using RationalRose;
RationalRose برررای کررار بررا واسررط
اضافه میکنیم
private void button3_Click(object sender, EventArgs e)
{
Dictionary<string, string> classComp = new Dictionary<string, string>();
String depFile = browseFile.FileName;
String clusFile = browseFile2.FileName;
RationalRose.RoseApplicationClass();
RoseModel rmdl = rsc.NewModel();
RoseApplicationClass rsc = new
RoseClassDiagram mainClassDia = rmdl.RootCategory.AddClassDiagram("class
diagram");
mainClassDia.Visible = true;
نشرران مرریدهررد کرره هرررclassComp
کالسی متعلق به کدام کامپوننت میباشد
متغیرهررایی کرره نررام فایررل هررای ورودی را
نگه میدارند
بررررای شرررروع بررره کرررار برررا نمودارهررررای
ابتدا یک مدل از واسرطRationalRose
آن را توسط خطوط رو به رو میگیریم
جهت کشیدن نمرودار،یک دیاگرام کالس
وابستگی بین کالسها ایجاد میکنیم
76
استخراج ساختار معماری با تحلیل ایستا
RoseModuleDiagram rModDia =
جهررررت کشرررریدن،یرررک دیرررراگرام مررررایول
rmdl.RootSubsystem.AddModuleDiagram("myModuleDiagram"
نمررودار وابسررتگی بررین کامپوننررتهررا ایج راد
);
میکنیم
rModDia.Visible = true
string[] depLines = File.ReadAllLines(depFile);
- کرردن فایرلparse متغیرهرایی جهرت
string[] clusLines = File.ReadAllLines(clusFile);
RoseModule theModule ;
های ورودی
متغی ررری ک رره ی ررک نمون رره از م رراژول را در خ ررود
نگه می دارد
RoseComponentView rComView;
متغیری که با اضافه کردن مایول به نمودار
مقداردهی میشودcomponentview
Dictionary<string, RoseModule> catContainer = new
Dictionary<string, RoseModule>();
نرام هررر مراژول و مرراژول مربروط برره آن را نگرره
Dictionary<string, RoseClass> classContainer = new
Dictionary<string, RoseClass>();
نام هر کالس و کالس مربوط بره آن را نگره
int clusCounter = 0;
int i = 0 ;
short xPos = 0;
short yPos = 100;
short rowCounter = 1;
میدارد
میدارد
متغیره ررایی ک رره مک رران م ررازوله ررا در نم ررودار را
تعیین میکنند
77
استخراج ساختار معماری با تحلیل ایستا
نمایش در محیط
78
Rational Rose
استخراج ساختار معماری با تحلیل ایستا
نمایش در محیط
79
Rational Rose
استخراج ساختار معماری با تحلیل ایستا
.1استخراج معماری سه لیه از داخل کد برنامه
لیه ارایه (رابط ها و APIها)
لیه سرویس عملیات
لیه میان افزار
.2باز سازی معماری جهت افزایش امکان تعامل ،استفاده مجدد ،انعطاف
پذیری ،توزیع و مسیرهای مجزای تعامل
80
نقش مهنسی معکوس در پیشبرد صنایع
استخراج الگوهای طراحی
جستجو در مدل ارتباطی کالسها برای یافتن زیر گراف الگو
81
الگوی محصول در سیستم مزایده
مهندسی معکوس کیفیت نرم افزار
82
فاکتورهای سنجش کیفیت
.جهت سنجش کیفیت می بایست فاکتورهای ذیل را مد نظر قرار داد
• The length N of P: N = N1 + N2
• The vocabulary μ of P: μ = μ1 + μ2
• The volume V of P: V = N * log2 μ
• The program difficulty D of P: D = (μ1 ÷ 2) * (N2 ÷ μ2)
• The effort E to generate P is calculated as: E = D * V.
،N2 تعداد عملوندها،N1 : تعداد عملگرها
μ2 : انواع عملوندها،μ1 : انواع عملگرها
تعداد کامنت ها = سهم توضیحات/ ()تعداد کل خطوط برنامه
• CC: Cyclomatic Complexity
• ECC: Extended Cyclometic Complexity
83
قابلیت ترمیم ( (MI
* MI = 171 – 5.2 * ln(aveV) – 0.23 * ECC – 16.2
))ln(aveLOC) + 50 * sin(sqrt(2.4 * perCM
در رابطه فوق:
Avelمقدار میانگین volumeدر هر پیمانه های برنامه و ECCمیانگین پیچیدگی پیشرفته حقوی در حلقه های برنامه
aveLOCمتوسط تداد خطوط در پیمانه های برنامه و PERcmمیانگین درصد توضیحات در پیمانه های برنامه است
)نگهداري ضعيف قابليت ( >= MI < 65
ا
)نگهداري نسبتا خوب قابليت ( >= 65 =< MI < 85
)نگهداري عالي قابليت( >= MI >= 85
84
مهندس ی معکوس معیارهای کیفی
با استفاده از مجموعه داده هاي پروژه KC1سازمان فضايي آمریکا
كه در مخـزن داده اي اين سازمان در آدرس فـوق موج ــود مي باشد
مدلهای ریاض ی برای ارزیابی معـیارهای کیــفی را می تــوان استخراج
نمود .اين پروژه دربرگي ــرنده 43هزار خط برنامه با كد 145 ، C++
ا
كالس و مجمـوعا داراي 2107متد مربوط به يكي از سيستــمهاي
زمين ــي سازمان فضایی آمری ــکا است که عملـیات مدیریت ذخیره
سازی را انجام می دهد.
85
استخراج مدل رفتاری با پروفایلینگ
.1استخراج گراف جریان کنترلی برنامه
86
استخراج مدل رفتاری با پروفایلینگ
.2مستندگذاری-جهت ثبت وضعیت اجرایی
87
هدف
ثبت مسیرهای اجرایی قابل استفاده برای ایجاد مدل رفتاری اجرایی برنامه
روش
درح فرامین در کد برنامه برای ثبت مقدار تعیین کننده های مسیر اجرایی
کاربرد
اندازه گیري میزان پوشش مسیرهای اجرایی در طی فرایند آزمون تشخيص ناهنجاري در جريان داده ها مکانيابي خطاشرط
تاثیری بر رفتار اصلی برنامه نداشته باشد
استخراج مدل رفتاری با پروفایلینگ
.2مستندگذاری-جهت ثبت وضعیت اجرایی
)if (!err && count < size
انواع جمله های کمنرلی
;list[count++] = obj
کلمه کلیدی
نوع جمله
درج دستورالعمل
else
جمالت حلقه
for, while, do-while
جهت ثبت
جمالت تصميم گیری
;)unref(obj
if-else, switch-case
مقادیر
جمالت انشعابی
break, continue, label:,
; return count
return
ذخیره کردن مقادیرعبارات منطقی موثر بر مسیر اجرایی :
.1عبارات کنترلی
88
.2مقادیر برگشتی
ابزار TestCocoonدرآدرس http://www.coveragemeter.com/download.html
استخراج مدل رفتاری با پروفایلینگ
.3گردآوری داده های حاصل از چندین اجرای برنامه مستند گداری شده
p1
p1
p2
p3
p3
p4
p4
p5
p6
P1P3P4P6P7
p7
89
p2
مسیر اجرایی بدون خطا
P1P2P4P5P7
p5
p6
p7
مسیر اجرایی خطادار
استخراج مدل رفتاری با پروفایلینگ
int main(int argc,char**argv){
int x=0;
int y=0;
int out=0;
x=atoi(argv[1]);
y=atoi(argv[2]);
printf("x=%d,y=%d-->",x,y);
switch (x){
case 1 :
if (y>5)
out=x+y;
else
out=x-y;
break;
case 2 :
if (y>0)
out=x+2*y;
else
out=x*y;
break;
default:
if (y=x){
if (x>5)
out=x*x;
else
out=0;
}else
out=-1;
}
printf("%d\n",out);}
1
2
مسیر اجرایی برنامه
مقابل در داخل گراف
جریان کنترلی
3
4
7
10
8
11
14
12
5
6
9
13
نقش مهنسی معکوس در پیشبرد صنایع
15
90
استخراج مدل رفتاری با پروفایلینگ
ابزار TestCocoonازآدرس http://www.coveragemeter.com/download.html
بخش CoverageScannerاز نرم افزار Test Cocoonبرای مستند گذاری کد برنامه ها است.
نیاز به کامپایلر زبان برنامه مستند گذاری شونده است.
o
o
o
برای زبان Cکامپایلر gccو برای C++کامپایلرهای
Visuali Studio® 6.0و .NETقابل استفاده هستند.
o
پس از نصب کامپایلر به مسیر زیر باید ارجاع نمود:
G++
o
و یا .GNUعالوه بر اینها
®Microsoft
Start -> Control Panel -> System -> Advanced -> Environment Variables
o
و سپس در قسمت user variablesیا system variablesمسیر مذکور را به متغیر pathافزود.
o
حال می توان مبادرت به نصب بخش CoverageScannerاز Test Cocoonنمود.
91
نقش مهنسی معکوس در پیشبرد صنایع
استخراج مدل رفتاری با پروفایلینگ
استفاده از CoverageScannerبرای مستند گذاری برنامه ها :
برای کامپایل یک برنامه به زبان Cبا نام hello.cکافیست در خط فرمان
دستور زیر قرار داده می شود.
gcc hello.c -o hello
حاال برای فعال شدن برنامه CoverageScannerکافی است تا پیشوند cs
را به ابتدای gccیا هر کامپایلر مورد استفاده اضافه شود:
csgcc hello.c -o hello
در دستورالعمل ذیل سوییچ زرد رنگ به مفهوم مستند گذاری کامل است «
csgcc --cs-keep-instrumentation-files D:\program.c
csgcc --cs-keep-instrumentation-files D:\program.c
92
نقش مهنسی معکوس در پیشبرد صنایع
استخراج مدل رفتاری با پروفایلینگ
.4آموزش مدل با استفاده از داده های گردآوری شده
P3
P2
اجرای
موفق
مدل SVMایجاد شده در این شکل
وابسته به مقادیر P2 ،P1و P3
در زمان اجرا و در هر نقطه ای پیش
بینی می کند که آیا برنامه در مسیر
اجرایی صحیح و یا غلط می باشد.
P1
93
طبقه بندی رفتارهای موفق (امن) و ناموفق (ناامن) نرم افزار
اگر هر کدام از رفتارهای یک برنامه را به صورت یک نقطه در فضا نمایش دهیم،
می توان مدلی برای طبقه بندی آنها ایجاد کرد
اجرای
ناموفق
استخراج مدل رفتاری با پروفایلینگ
.5استفاده از مدل برای پیش بینی مسیر اجرایی غلط در زمان اجرا
P1
P3
P6
P2
P5
P8
P7
P9
94
P4
مقایسه مسیر
اجرایی تا P5با
بردارهای پشتیبانی
جهت تشخیص
اینکه مسیر اجرایی
متعلق به فضای
اجراهای موفق یا
ناموفق است.
ابزار رایج برای آموزش مدل
ابزار آماری SAS
ابزار آماری SPSS
ابزار آماری R
ابزار داده کاوی WEKA
ابزار داده کاوی RAPIDMINER
ابزار داده کاوی ORANGE
ابزار داده کاوی CLEMENTINE
MATLAB 95
سطوح مهندس ی معکوس
.1مهندس ی معکوس کد باینری
-2مهندس ی معکوس متن برنامه ها
-3مهندس ی معکوس داده ها
96
نقش مهنسی معکوس در پیشبرد صنایع
مهندسی معکوس داده ها -روشها
]And [descriptive
97
مهندسی معکوس داده ها
مهندس ی معکوس داده ها متمرکز بر استخراج ساختار و طرح پایگاه داده ها و
جداول مربوطه ئ ساختمان داده ها می باشد .شامل روشها و ابزارهایی است
که به سازمان کمک می کند تا ساختار فیزیکی و منطفی ،مفهوم و عملیات بر روی
داده ها را از داده های موجود استخراج و مدل جامعی ایجاد نماید.
تحلیل رگرسیونی
98
مهندس ی مجدد
.1
.2
.3
.4
.5
.6
.7
99
بازسازی خودکار ساختار نرم افزار
بازیابی طرح برنامه ها
انتقال سیستم های قدیمی به بسترهای جدید
تبدیل خودکار
تبدیل نیمه خودکار
مهندس ی معکوس و رو به جلوی کد
مهندس ی معکوس داده ها و اسکیما
نقش مهنسی معکوس در پیشبرد صنایع
مهندس ی مجدد :تبدیل برنامه ها
.1تبدیل خودکاراجزا برنامه به وب سرویس
.2تبدیل خودکار
برنامه ترتیبی به برنامه توزیعی -برنامه ترتیبی به برنامه چند نخی
100
نقش مهنسی معکوس در پیشبرد صنایع
کاربرد مهندس ی معکوس در ايجاد سازمانهای مجازی
آب
برق
عوارض
گاز
تلفن همراه
تلفن منزل
101
حاکميت ITتفکر ITميخواهد ،سرويسهايي که سازمانها ميدهند جدا جدا است.
لفافه بندی برنامه ها با کوربا
.1
.2
.3
.4
با استفاده از راه کارهای مهندس ی معکوس برنامه جهت تشخیص
قطعات توزیع شونده خوشه بندی می شود.
تشخیص امضاء رابط بین مولفه ها و ذخیره سازی امضا ها در قالب
مستندات ٍاکس ٍٍٍام ال با استفاده از یک ابزار IDL
ایجاد CORBA/IDLبر اساس مستندات اکس ام ال ایجاد شده
کامپایل برنامه ها
قطعه توزیع شده
102
برنامه ترتیبی
لفافه بندی در سطح سازمان
-1برنامه کنترل کننده بر روی سرویس دهنده وب فعال می شود
-2ارتباط با برنامه ها از طریق مرورگرهای وب
103
-3مولفه های برقرار کنند ه ارتباط در محیط کامپیوتر میزبان
تبدیل خودکار برنامه ترتیبی به توزیعی
مراحل اصلی
Class
Java Source Dependency Weighted
Cluster i
Cluster j
Class C
Class B
Class A
Class C
Class B
Class A
Partitioned
Port
7
Synchronizer Object manager
Port
Synchroniz
er
Object
manager
4
3
Call graph
Extraction
3
Distribution
Gains
Clustering
Engine
Distributed Code
Data Dependency
Analysis
Connector
Connector
CORBA Infrastructure
Component
Generator
Modify
Source
104
تبدیل خودکار برنامه ترتیبی به توزیعی
Optimal Partitioning
Class A
Class B
---------
TS
Class
A
i=a.m()
---------------------------Clustering
Use( i )
Tc
Criterion:Td
Tc
T=∑ S(ci,cj)
SpeedUp A..B
, where the amount of speed
up between clusters Ci and cj
TSerial :Ts + S(c
Td i,cj)=speedupai,bj /n
is the
average of speedups for
m( )
{
------------------------------return i;
}
Class
B
TAsynch: max(T
,2T
Any s
two
classes
in
SpeedUp
A..E
c+T
d)the clusters
Class
Sm = TSerial
C - TAsynch
SpeedUp
D..E
Speedup
A,B =
Class
SpeedUp B..E
ΣSm , for calls to m
1
... mn
SpeedUp D..E
Class
E
105
تبدیل خودکار برنامه ترتیبی به توزیعی
Cluster 2
Cluster 1
Class B
Class A
B b=new B();
b.m(p);
Handle b=Cluster2ObjectManager.CreateObject(“B”)
m(P p ){
…
}
Port1.B.m(b,p);
Port1
Static class Port1{
Static class B {
Void m (Handle h, P p ) {
Connector.SendEvent(“B”,h,”m”,p);
….
Port2
Static class Port2{
Static class B {
Void m (Handle h, parlist ){
B b=(B)ObjectManager.GetObject(h)
b.m(parlist);
…
106
….
زمینه های تحقیقاتی
ایجاد روشها و ابزاری برای استخراج و مدلسازی طرح برنامه ها
و ارتباط بین طرح و پیاده سازی به قسمی که بتوان هر بخش از
طراحی تا پیاده سازی را به سادگی جایگزین و اصالح نمود.
درج دستورالعمل هایی در کد که کار استخراج و تحلیل مدلهای
تحلیل و طراحی را ساده نماید.
ایجاد امکاناتی برای بازیابی ساختار جدول ها ،مدل پایگاه داده
و عملیات بر روی پایگاه داده ها.
107
نقش مهنسی معکوس در پیشبرد صنایع
زمینه های تحقیقاتی
ایجاد امکان بکارگیری ابزار مهندسی معکوس همگام با
تولید نرم افزار.
ایجاد ابزاری برای استخراج و بازسازی سریع معماری
نرم افزار.
108
نقش مهنسی معکوس در پیشبرد صنایع
109
نقش مهنسی معکوس در پیشبرد صنایع