شما در سایت ثبت نام نکرده اید و یا وارد نشده اید ، لطفا از اینجا ثبت نام کنید تا به تمام امکانات سایت دسترسی داشته باشید .    
  سایت علمی دانشجویان ایران


برگشت   سایت علمی دانشجویان ایران > کامپیوتر و شبكه > سایر موضوعات کامپیوتر

تابلوی اعلانات

سایر موضوعات کامپیوتر در این بخش موضوعات مختلفی که شامل دیگر بخش ها نمی شوند از قبیل ، اخبار دنیای کامپیوتر ، بازی های کامپیوتری ، مباحث عمومی بخش کامپیوتر قرار می گیرند.

پاسخ
 
امکانات حالات نمایش
قدیمی May-09-2008, 15:06   #1
F a r z a n e h
کاربر فعال تالار نرم افزار
 
آواتار F a r z a n e h
 
تاریخ عضویت: 2008-04-08
شهر سکونت: Bandar Anzali
رشته تحصیلی: تکنولوژی نرم افزار کامپیوتر
ارسالها: 150
تشکر: 337
567 تشکر در 163 ارسال
دریافت کتاب: 0
اهداء کتاب: 0
F a r z a n e h is on a distinguished road
میزان فعالیت سابقه
2/20 11/20
فعالیت امروز ارسالها
ssssss150
پیام مهندسی معکوس

مهندسی معکوس چیست؟

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

کاربرد مهندسی معکوس در نرم افزار

Reorganize کردن و تغییر دادن در یک نرم افزار موجود، بدون اخلال در کار آن نرم افزار، از عمده دلایل استفاده از مهندسی معکوس در صنعت نرم افزار است. معمولا زمانی از مهندسی معکوس استفاده می کنیم که دیگر سخت افزار یا نرم افزارهای موجود، از نرم افزارهای قدیمی تر پشتیبانی نمی کنند و همچنین برای ما توانایی و ابزار این کار وجود داشته باشد. در حقیقت برخی مواقع شما امکان دسترسی قانونی به resourceهای یک پروژه انجام شده را ندارید، ولی امکان استفاده از این علم برای شما وجود خواهد داشت ( از این پس به کار بردن مهندسی معکوس در نرم افزار را با عنوان معکوس سازی بیان می کنیم )، و به طور معمول از معکوس سازی برای به دست آوردن databaseها و اطلاعات نهفته در یک نرم افزار استفاده می شود.
در عین حال هزینه مهندسی معکوس، معمولا از develop کردن یک نرم افزار جدید خیلی کمتر است و همچنین در develop کردن یک نرم افزار جدید، مخاطرات زیادی از جمله تغییر کادر برنامه نویسی و bugهای جدید وجود دارد، که این تمایل به استفاده از مهندسی معکوس را به شدت افزایش می دهد. همچنین گاهی برای آنکه یک گروه کاری، دستاوردهای گروه کاری ای را که قبلا روی یک زمینه یا نرم افزار کار کرده اند، متوجه شوند و بتوانند آن را بهبود داده و ارتقاء ببخشند، به این روش ها نیاز است. ( در این رابطه می توان به کار افراد بر روی پروژه های open source مثل develop کردن samba یاopen office اشاره کرد.)
(شکل 1) :







به شکل 2 دقت کنید.ابتدا فرض می کنیم که یک برنامه داریم که می خواهیم آن را معکوس کنیم.در این میان نخستین مرحله انجام source code translation است که به معنای تبدیل کد از یک زبان (حتی از زبان ماشین) به زبان برنامه نویسی دیگری است که خود این کار نیز می بایست توسط برنامه ای تخصصصی در این زمینه صورت پذیرد، زیرا تبدیل کدهای بسیار بلند برای انسان کار بسیار مشکلی است و همچنین میزان اشتباه انسان دائماً زیادتر می شود(برخی از نرم افزارها از هزاران یا صدها هزار سطر برنامه نویسی تشکیل شده اند و در برنامه هایی از جمله سیستم عاملها، از میلیونها سطر برنامه نویسی استفاده شده است) پس از این مرحله،source code بدست آمده توسط انسان یا برنامه مورد تحلیل قرار گرفته و اطلاعات لازم از آن استخراج می شودو در صورت لزوم تغییراتی در ساختار برنامه داده می شود.
(شکل2




دسته بندی ابزارهای اصلی مورد استفاده در معکوس سازی

1. hex editor
2. debugger
3. disassembler
4. decompiler
5. patcher
6. compressor(فشرده ساز)
7. analyzer(تحلیل گر)
8. monitoring tools
9. protector



Hex Editor

از جمله editorهایی مانند notepad یا Tex pad محسوب می شود و تنها تفاوت آن با editorهای معمولی در آن است که محتویات فایل را به صورت hexadecimal(در مبنای 16) نمایش می دهد و امکان تغییر در محتویات فایل یا search کردن و... را به صورت های binary یا در hexadecimal یا ASII را فراهم می آورد. همچنین از جمله کارهای دیگری که hex editor ها انجام می دهند، امکان تبدیل از مبنای 16 به مبنای 2 و ... اطلاعات است.
در حال حاضر به عنوان یک ابزار مهم در روند و فرایند معکوس سازی ، hex editor های بسیار متنوعی وجود دارند که از مشهورترین آنها می توان به hiew یا Win Hex یا Hack man و یا hex workshop اشاره کرد. همچنین برخی hex editorها مثل Win Hex یا HackMan و يا hex workshop، امکاناتی مانند انجام محاسبات آماری بر روی داده های یک فایل و یا امکان encrypt يا decrypt کردن فایل ها و یا امکان مقایسه محتویات فایل ها به یکدیگر را نیز میسر می سازند. مثلاٌ WinHex ، الگوریتم های رمزی مثل AES و PCI را پشتیبانی می کند. البته WinHex الگوریتم های بیشتری را پشتیبانی می کند و یک ابزار بسیار قوی در این دسته محسوب می شود.

Debugger

Debugger به برنامه¬اي گفته مي¬شود كه به كمك آن مي توان روند اجراي يك برنامه را به طور دقیق کنترل کرد. به طور مثال برنامه را دستور به دستور اجرا کرد، یا تا سر یکinstruction خاص برنامه را اجرا کرد. احتمالاٌ تابحال از Debuggerهای معمولی برای debug کردن برنامه ایی که به یک زبان سطح بالا مثل C يا java نوشته اید، استفاده کرده اید. منظور ما اینجا از Debugger، برنامه ای است که machine code يك برنامه (file exe به طور معمول را گرفته و کد assembly آن را براي debug کردن نمایش دهد. در debuggerها معمولاً امكانات مشابهي مانند break point یا step over و watch و ... وجود دارد که امکان اجرای کنترل شده برنامه را برای کاربر فراهم می کنند.
از دیگر امکاناتی که debuggerها دارند، فراهم آوردن window هايي است كه در آنها محتويات memory و registerها CPU و stack در هر لحظه مشخص است، و امکان search در هر كدام از اين windowها مثل allocated memory را به شما مي دهد.
معمولاً از debugger ها می توان برای یافتن bugها برنامه و يا مطالعه رفتار virusها و يا backdoorها و .... و یا تشخیص نحوه عملکرد یک برنامه استفاده کرد. Debuggerها به دو دسته kernel-levelها و user-level تقسیم می شوند که توسط kernel- level debugger ها مي توان كار debuggerرا براي developmentهای سطح kernel، مثل نوشتن driverها انجام داد و همچنین امکان نظارت بر تمامی کار سیستم را فراهم می کنند که در همین زمینه از جمله مشهورترین kernel-level debuggerها، مي توان به SoftIce محصول شرکت Numega و WinDbg محصول Microsoft اشاره كرد.
از debuggerهاي user-level نیز می توان به OllyDbg و pro IDA و twr2000 اشاره کرد، که معمولاٌ به یک process خاص خود را attach می کنند و کنترل آن را به دست می گیرند


Disassembler
تفاوت debugger و disassembler در این است که disassembler امكان كنترل اجراي برنامه را براي ما فراهم نمي كند و صرفاً يك machine code را به assembly آن ماشين تبديل مي¬كند (عملاً در debugger ما ميتوانيم رفتار dynamic برنامه را بررسی کنیم، در حالی که در disassembler تنها رفتار static قابل مشاهده است). از مشهورترین آنها می¬توان به WinDasm و ILDasm و یا IDA (interactive disassembler) اشاره کرد، که البته IDA يكي از قويترين disassemblerهاست که توانایی هایی نظیر تحلیل کد و بدست آورند flow chart برنامه از روي binary file را نیز دارد (منظور از binary file در اينجا، كد ماشين فايل اجرايي است)، و همچنین توانایی disassemble کردن فایل binary file را به assembly مربوط به CPU ها مختلفي مثل AMD64 و Itanium-64 و Itanium-32 را دارد.

Decompiler
کاربرد اصلی این نوع برنامه ها آن است كه از يك فايل اجرايي (binary file)، یک فایل خروجی به یک زبان برنامه نویسی سطح میانه مثل C يا سطح بالا مانند Java تولید کنند،که درک آن برای فرد آسانتر شود،که از جمله آنها می توان به JAD براي تبديل java class file به java source code و Reflector براي تبديل فايل exe خروجی net. به source اشاره کرد. حتی برای خروجی flash هم با پسوندswf، انواع decompilerهای زیادی مثل SWF Decompiler موجود است که فایل swf را به فايل fla تبدیل می کنند و سپس شما می توانید فایل fla را توسط macromedia flash باز كرده و آن را edit كنيد و فايل fla جدیدرا به swf ديگري تبديل كنيد.

Patcher
زماني كه ما يك فايل exe (در حالت كلي يك فايل اجرايي) را تغيير داديم، مي¬توانيم به كمك patcherها، يك برنامه توليد كنيم كه با دادن فايل exe اوليه به آن، فايل exe همراه با تغييرات را از روي آن ايجاد كند. حسني كه اين برنامه ها دارند اين است كه مثلاً ممكن است فايل exe اصلي، 200 MB باشد، در اين صورت ما مي توانيم با استفاده از patcherها برنامه اي مثلاً در حدود 10 KB توليد كنيم كه هر فايل 200 Mb اولیه را به یک فایل exe تغيير كرده مورد نظر ما تبديل كند (يعني عملاً patcherها برنامه اي توليد مي كنند كه فقط تفاوتهايي را كه ما در exe فايل اصلي ايجاد كرديم، بتواند روي هر فايل exe اوليه ايجاد كند و آن را مانند فايل نهايي مورد نظر ما كند).
در واقع patcherها مي توانند عمل patching را شبيه سازي كنند (patching يعني تغيير binary file به نحوي كه كاري را كه برنامه انجام مي دهد، مطابق خواست ما كند)، كه از جمله آنها مي توان Patch Engine را نام برد.

Compressor
براي اينكه حجم فايل هاي اجرايي را تا حد امكان كم كنيم، اغلب و معمولاً از اين نوع ابزارها استفاده مي شود كه عملاً يك فايل اجرايي مثل يك exe file رابه اين صورت تغيير مي¬دهند كه ابتدا كد آن را zip كرده و سپس يك hear به آن اضافه كرده كه خود فايل exe بتواند خودش را unzip كند. ضمناً يكي از مطرح ترين الگوريتم هاي compression، UPX است كه معمولاً يك فايل exe را تا ميزان 30% مي تواند كوچك كند. (مي توانيد به سايت upx.sourceforge.met مراجعه كنيد.)

Analyzers
معمولاً به كمك اين ابزارها سعي مي كنند فايل اجرايي، مثل exe file را تحليل كنند كه مثلاً شامل چه توابعي است (در windows استفاده از توابع API اهميت بيشتري دارد و در linux استفاده از system callها) و يا نوع compilerاي كه اين برنامه به كمك آن compile شده است را تشخيص دهند و يا اينكه برنامه شامل چه stringها و نام فايل ها و directoryهايي است و يا چه dll file هايي توسط اين برنامه load مي شود (كه تحت عنوان import table شناخته مي شود) و ... كه از اين دسته مي توان به PEBrowse professional اشاره كرد كه حتي اين قابليت را دارد كه فايل هاي image درون برنامه را نيز نشان دهد و اين برنامه حتي شامل يك disassembler نيز هست!

Monitoring tools
اين دسته شامل گستره وسيعي از برنامه ها مي شوند كه از آن جمله مي توان به registry monitor ها مثل RegMon اشاره كرد كه وظيفه آنها آن است كه كوچكترين تغيير در registry مربوط به windows را اعلام كنند. به اين صورت كه اعلام كنند كه كدام برنامه يا process تمايل داشته كه كدام registry value را به چه مقداري و دقيقاً در چه زماني set كند. از جمله ديگر اين ابزار مي توان به file monitor و port monitor و process explorer ها اشاره كرد، كه برنامه¬هايي مثل fileMon و يا ListDlls و psList و TCPCiew و WinObj از اين دسته هستند.
FileMon به منظور monitor كردن تبادل و تغيير فايل هاي سيستمي يا غير سيستمي استفاده مي شود و به وسيله اين ابزار ما مي توانيم بفهميم كه در چه زمان، كدام فايل يا directory باز شده يا كدام read يا write شده است و ملاً حسن ديگري كه اين نرم افزار دارد، آن است كه امكان filtering را برايمان فراهم مي كند كه به كمك آن مي توان مثلاً تنها تغييرات در فايل هاي درون يك directory خاص را ثبت كرد يا مثلاً فقط درخواستهايي براي write را ثبت كرد.
TCOView نيز مي تواند اين كمك را به ما بكند كه تمامي connectionها و فعاليتهاي TCP و UDP مربوط به processها را روي شبكه يا internet را نمايش دهد.


Protector
به ابزاري گفته مي¬شود كه به كمك آن، نرم افزارها را در برابر مهندسي معكوس مقاوم مي¬كنند. يعني مثلاً امكان debug كردن يا disassemble كردن را به user نمي¬دهد و به محض آنكه بخواهيد آن را به كمك يك debugger باز كنيد، پيغام خطا يا error مي¬دهد و يا ايده¬هايي از اين قبيل كه البته يكي از مشهورترين protectorهاي موجود، armadillo است كه ايده هاي زيادي براي محافظت از نرم افزار در برابر معكوس شدن، در آن وجود دارد
همچنين يك دسته مهم ولي ضعيف از protectorهای موجود،armadillo است که ایده های زیادی برای محافظت از نرم افزار در برابر معکوس شدن، در آن وجود دارد.همچنین یک دسته مهم ولی ضعیف از protectorها، انواع obfuscatorها هستند كه عملاً كد برنامه نوشته شده به زبان سطح بالا به آنها داده مي شود و آنها اين كد را تا حد ممكن ناخوانا و درهم مي كنند (مثلاً اسم تمامي متغيرها را به فرم a1, a2 , … و اسم تمامي توابع را به صورت b1, b2, … و تمامي enterها و فاصله¬ها را حذف كرده و ...) به گونه اي كه حتي اگر فرد مهاجم موفق شده با decompiler ، كد برنامه را بدست آورد، اين كد براي او قابل استفاده نباشد. البته اين روش معمولاً ابتدا انجام شده و پس از compile كردن برنامه obfusxcate شده، binary file را به كمك روشهاي ديگر protection، در برابر تهاجم ها و معكوس شدن¬ها، محافظت مي¬كنند.
اگر سابقه ي صنعت و چگونگي رشد آن در كشورهاي جنوب شرقي آسيا را مورد مطالعه قرار دهيم به اين مطلب خواهيم رسيد كه در كمتر مواردي اين كشورها داراي ابداعات فن آوري بوده اند و تقریباً در تمامي موارد، كشورهاي غربي (‌آمريكا و اروپا) پيشرو بوده اند. پس چه عاملي باعث اين رشد شگفت آور و فني در كشورهاي خاور دور گرديده است؟در اين نوشتار به يكي از راهكارهاي اين كشورها در رسيدن به اين سطح از دانش فني مي پردازيم.
در صورتی كه به طور خاص كشور ژاپن را زير نظر بگيريم، خواهيم ديد كه تقریباً تمامي مردم دنيا از نظر كيفيت، محصولات آنها را تحسین مي کنند ولی به آنها ايراد مي گيرند كه ژاپني ها از طريق كپي برداري از روي محصولات ديگران به اين موفقيت دست يافته اند.این سخن اگر هم كه درست باشد و در صورتي كه كپي برداري راهي مطمئن براي رسيدن به هدف باشد چه مانعي دارد كه اين كار انجام شود.اين مورد، به خصوص درباره ي كشورهاي در حال توسعه ويا جهان سوم به شكاف عميق فن آوري بين اين كشورها و كشورهاي پيشرفته دنيا، امري حياتي به شمار مي رود و اين كشورها بايد همان شيوه را پيش بگيرند(البته در قالب مقتضيات زمان و مكان و ساير محدوديت ها) به عنوان يك نمونه، قسمتي از تاريخچه ي صنعت خودرو و آغاز توليد آن در ژاپن را مورد بررسي قرار مي دهيم:
توليد انبوه خودرو در ژاپن قبل از جنگ جهاني دوم ودر سال 1920 بوسيله ي كارخانه ها "ايشي كاواجيما" آغاز شد كه مدل ژاپني فورد آمريكايي را كپي كرده و به شكل توليد انبوه به بازار عرضه نمود.
همچنين شورلت ژاپني AE جزو اولين خودرو هاي كپي شده آمريكايي توسط ژاپني ها بود كه به تعداد زياد توليد مي شد. سپس با تلاش هاي فراواني كه انجام شد(آنهم در شرايط بحراني ژاپن در آن دوره) مهمترين كارخانه‌ي خودرو سازي ژاپن يعني "تويوتا" درسال 1932 فعاليت خود را با ساخت خودرويي با موتور "كرايسلر" آغاز نمود ، در سال 1934، نوع ديگري از خودرو را با موتور"شورلت" ساخته و وارد بازار نموده و از سال 1936، اولين تلاش ها براي ساخت خودروي تمام ژاپني آغاز شد. البته تا مدت ها ژاپني ها مشغول كپي برداري از اتومبيل هاي آمريكايي و اروپايي بودند.

آنها خودروي پاكارد و بيوك آمريكايي و رولزرويس، مرسدس بنز و فيات اروپايي را نيز توليد كردند كه همين توليدها زمينه ساز گسترش فعاليت خودروسازي ژاپن شد و سرانجام در دهه ي 1960 ميلادي پس از سعي و كوشش فراوان ، اولين اتومبيل تمام ژاپني كه ضمنا داراي استاندارد جهاني بود، توليد و به بازار عرضه شد.
در تمامي مطاب فوق رد پاي يك شگرد خاص و بسيار مفيد به چشم مي خورد كه "مهندسي معكوس"(Reverse Engineering ) نام دارد.
مهندسي معكوس روشي آگاهانه براي دستيابي به فن آوري حاضر و محصولات موجوداست. در اين روش، متخصصين رشته هاي مختلف علوم پايه و كاربردي از قبيل مكانيك، فيزيك و اپتيك، مكاترونيك، شيمي پليمر، متالورژي،الكترونيك و ...جهت شناخت كامل نحوه ي عملكرد يك محصول كه الگوی فن آوري مذكور مي باشد تشكيل گروه هاي تخصصي داده و توسط تجهيزات پيشرفته و دستگاه هاي دقيق آزمايشگاهي به همراه سازماندهي مناسب تشكيلات تحقيقاتي و توسعه هاي R&D "سعي در به دست آوردن مدارك و نقشه هاي طراحي محصول فوق دارند تا پس از مراحل نمونه سازي (Prototyping) و ساخت نيمه صنعتي (Pilot plant) در صورت لزوم ، توليد محصول فوق طبق استاندارد فني محصول الگو انجام خواهد شد . همان گونه كه اشاره شد استفاده از روش مهندسي معكوس براي كشورهاي در حال توسعه يا عقب مانده روش بسيار مناسبي جهت دسترسي به فن آوري ، رشد و توسعه ي آن مي باشد. اين كشور ها كه در موارد بسياري از فن آوري ها در سطح پاييني قرار دارند، در كنار روش ها و سياست هاي دريافت دانش فني، مهندسي معكوس را مناسب ترين روش دسترسي به فن آوري تشخيص داده و سعي مي كنند با استفاده از روش مهندسي معكوس، اطلاعات و دانش فني محصولات موجود ، مكانيزم عمل كرد و هزاران اطلاعات مهم ديگر را بازيابي كرده و در كنار استفاده ار روش هاي مهندسي مستقيم (Forward Engineering) و روش هاي ساخت قطعات ، تجهيزات ، تسترهاي مورد استفاده در خط مونتاژ و ساخت مانند قالب ها ،گيج و فيكسچر ها و دستگاههای كنترل، نسبت به ايجاد كارخانه اي پيشرفته و مجهز جهت توليد محصولات فوق اقدام نمايند. همچنين ممكن است مهندسي معكوس، براي رفع معايب و افزايش قابليت هاي محصولات موجود نيز مورد استفاده قرار مي گيرد. به عنوان مثال در كشور آمريكا ، مهندسي معكوس توسط شركت "جنرال موتور" بر روي محصولات كمپاني "فورد موتور" و نيز برعكس، براي حفظ وضعيت رقابتي و رفع نواقص محصولات به كار برده شده است.
بسياري از مديران كمپاني هاي آمريكايي، هر روز قبل از مراجعت به كارخانه، بازديدي از جديدترين محصولات عرضه شده در فروشگاه ها و نمايشگاه هاي برگزار شده انجام داده و جديدترين محصولات عرضه شده مربوط به محصولات كمپاني خود را خريداري نموده و به واحد تحقيق و توسعه R&D تحويل مي دهند تا نكات فني مربوط به طراحي وساخت محصولات مذكور و آخرين تحقيقات ، هر چه سريع تر در محصولات شركت فوق نيز مورد توجه قرار گيرد.
جالب است بدانيد كه مهندسي معكوس حتي توسط سازندگان اصلي نيز ممكن است به كار گرفته شود . زيرا به دلايل متعدد، نقشه هاي مهندسي اوليه با ابعاد واقعي قطعات (مخصوصا زماني كه قطعات چندين سال پيش طراحي و ساخته و به دفعات مكرر اصلاح شده اند)مطابقت ندارد براي مثال جهت نشان دادن چنين نقشه هايي با ابعاد واقعي قطعات و كشف اصول طراحي و تلرانس گذاري قطعات، بخش ميكروسويچ شركتHonywell از مهندسي معكوس استفاده نموده و با استفاده از سيستم اندازه گيري CMM (Coordinate Measuring Machine) با دقت و سرعت زياد ابعاد را تعيين نموده و به نقشه هاي مهندسي ايجاد شده توسط سيستم CAD منتقل مي كنند.
متخصصين اين شركت اعلام مي دارند كه روش مهندسي معكوس و استفاده از ابزار مربوطه، به نحو موثري زمان لازم براي تعمير و بازسازي ابزارآلات ، قالب ها و فيكسچرهاي فرسوده را كم مي كند و لذا اظهار مي دارند كه "مهندسي معكوس زمان اصلاح را به نصف كاهش مي‌دهد."
مهندسين معكوس، اضافه بر اينكه بايد محصول موجود را جهت كشف طراحي آن به دقت مورد مطالعه قرار دهند، همچنين بايد مراحل بعد از خط توليد يعني انبارداري و حمل و نقل را از كارخانه تا مشتري و نيز قابليت اعتماد را در مدت استفاده ي مفيد مورد تجزيه و تحليل قرار دهند. چرا كه مثلا فرايند آنيلينگ مورد نياز قطعه،ممكن است براي ايجاد مشخصات مورد نظر در هنگام عمل كرد واقعي محصول يا در طول مدت انبارداري و حمل و نقل طراحي شده و لزوم وجود آن تنها در هنگام اجراي مراحل مذكور آشكار خواهد شد.
چه بسا كه بررسي يك پيچ بر روي سوراخي بر بدنه ي محصول(كه به قطعات و اجزاي ديگر متصل نشده) ، متخصصان مهندسي معكوس را ماه ها جهت کشف راز عملياتي آن به خود مشغول كند، غافل از اينكه محل اين پيچ، امانم جهت تخليه ي هوا، تست آب بندي يا امكان دسترسي به داخل محصول جهت تست نهايي مي باشد. از سوي ديگر مهندسين معكوس بايد عوامل غير مستقيمي را كه ممكن است در طراحي و توليد محصول مذكور تاثير بگذارند، را به دقت بررسي نمايند. به دليل اينكه بسياري از اين موارد با توجه به خصوصيات و مقتضيات زماني و مكاني ساخت محصول مورد نظر، توسط سازندگان اصلي توجيه پذير باشد اما ماجراي آن به وسيله ي مهندسين معكوس فاجعه ساز باشد. مثلا فرايند توليد قطعات تا حدود قابل توجهي بستگي به تعداد محصولات مورد نياز و ... دارد . اگر تعداد محصولات مورد نياز جهت كشور ثانويه در بسيار كمتر از كشور اصلي كه در حد جهاني و بين‌المللي فعاليت نموده ، باشد پس به عنوان مثال تعيين فرايند يك قطعه با باكاليتي (نوعي مواد پليمري) از طريق ساخت قالب هاي چند حفره اي با مكانيزم عملكرد خود كاربا توجه به معضلات پخت قطعه در داخل قالب ، مي تواند براي مجريان مهندسي معكوس فاجعه ساز باشد ( اگر كه اين مهندسان از فرايند هاي ساده تر با توجه به تيراژ توليد محصول و نيز خصوصیات تكنولوژيكي كشور خود استفاده نكنند.) بنابراين، مرحله بعد از كشف طراحي، تطبيق طراحي انجام شده بر مقتضيات زماني و مكاني كشور ثانويه مي‌باشد كه بايد به دقت مورد توجه متخصصين مهندسي معكوس واقع شود.
خلاصه اينكه مهندسي معكوس ممكن است يك كاربرد غير معقول و نامناسب از كاربرد هنر و علم مهندسي به نظر برسد، اما آن يك حقيقت از زندگي روزمره ي ما به شمار مي رود.
مهندسی معکوس یا به طور کلی واژه مهندسی معکوس به یک نوع شیوه طراحی اطلاق می شود که ما طرح یا محصول ساخته شده ای را می بینیم و از روی آن یک ایده را برای پروژه خود می گیریم و ما این کار را با بررسی کار کرد یک دستگاه یا محصول انجام داده و مشخصات یا ابعاد و نکات فنی بکار گرفته شده را نگاه می کنیم مثلا دستگاهی صنعتی را نگاه کرده و ایده ای از آن گرفت و در پروژه خودکه که شاید همین دستگاه یا وسیله صنعتی باشد را دقیقتر و کاملتر میسازیم.
به طور کلی مهندسی معکوس نتنهای تقلب و سرقت اطلاعات نیست که قبلا نوشته شده است بلکه با استفاده از اطلاعات دیگران به طراحی و ابتکارات جدیدی می توان دست یافت و ما برای اینکه بخواهیم یک طرح را مهندسی معکوس کنیم اولا باید ببینیم که از چه روشهایی استفاده شده ، نقصهای آن چیست و بهتر بود چه چیزهایی دیگری داشته باشد . مبحث مهندسی معکوس از دو دیدگاه قابل بررسی است و این دو عبارتند از:

1 - دید فنی :
بدست آوردن اطلاعات و ساختار سيستم از منابع فنی موجود مانند نحوه کار کرد دستگاه ، مستندات داخل کاتالوگ یا راهنمای دستگاه و توضيحات مربوط به روش استفاده از کل سيستم .

2 - برداشت فردی از سیستم :
که به طور کلی این فرایند از سه طریق قابل انجام است
1- از بالا به پايين که در آن از بالاترين سطح کارکرد و عملکرد سيستم شروع کرده و به صورت بازگشتی کل زير بخشها را مورد بررسی قرار می‌دهيم. در این روش از روشی به نام جمع‌آوری مستندات زنده استفاده می‌کنیم. منظور از جمع‌آوری مستندات زنده، انجام گفتگو ها و برگزاری جلسات با افراد و مهندسانی است که به صورتی با پروژه در ارتباط بوده‌اند و جمع‌آوری اطلاعات از آنها ، در این مدل از کلی‌ترین سطح شروع کرده و به تدریج با افزایش میزان اطلاعات خود، مسئله را بصورت ریزتر مورد بررسی قرار می‌دهیم .
2- از پايين به بالا که در آن از پايين‌ترين سطح سيستم شروع کرده و به تدريج به سطوح بالای سيستم می‌رسيم. در این روش با بررسی کارکرد و عملکرد سيستم ، قوانین موجود در آن را استخراج می‌کنیم و به تدریج با بدست آوردن روابط موجود بین این قوانین، کلیت های بیشتری از ساختار و نکات فنی از سیستم را کشف می‌کنیم تا به بالاترین سطح برسیم.
3- مبتنی بر مدل‌بندی سيستم. در اين روش يک مدل ذهنی از اين که سيستم به چه شکلی کار می کند در نظر گرفته و به تدريج اطلاعات خود را در اين زمينه عميقتر می‌کنيم و ريز کار سيستم را به دست می‌آوريم.

برای بدست آوردن ساختار هر زیر سیستم از مراحل زیر استفاده می کنیم:
1- تعیین محدودیت ها و قابلیتهای سیستم .
2- استخراج قوانین ازدستگاه نمونه .
3- تقسیم بندی سیستم به زیر سیستها .
4- بهینه سازی اطلاعات با استفاده از مستندات زنده (دستگاه نمونه) .
5- تشکیل و بهینه سازی ترکیب سیستم با استفاده از مستندات زنده .
مهندسی معکوس از ابزارهایی بنام PBS استفاده می کند این کلمه مخفف قفسه کتاب قابل انتقال است و به طور کلی یک ابزار PBS قابل انتقال در سیستمهای مختلف می باشد که هدف از آن بدست آوردن ساختار یک سیستم به گونه ای قابل فهم و قابل دسترسی می باشد.

تقلب در طراحی نرم افزار و سخت افزار
آيا مهندسی معکوس همان تقلب و يا در اصطلاح منصفانه تر کپی برداری است؟تعريف مهندسی معکوس بصورت کاربردی نه علمی مهندسی معکوس به شيوه ای از طراحی اطلاق ميشود که طراح ايده خود را از بازبينی مراحل طراحی يک اثر خلق شده بدست می آورد.مثال : شما ماشین کوکی (اسباب بازی) را باز کرده و به مکانیزم و طراحی آن نگاه کرده و در طراحی مثلاً یک ماشین دست ساز از آن استفاده می کنید(دقت کنید از ایده طراحی نه خود طراحی ماشین کوکی ) البته در مهندسی معکوس علاوه بر استفاده از ایده طراحی از خلاقیت و ایده های طراحی های دیگر نیز استفاده می شود.
مهندسی معکوس و طراحی سخت افزار و نرم افزار
شما می توانيد با بررسی سورس (source)يک برنامه کاربردی(مثلاً بانک اطلاعاتی يک شرکت يا سازمان) از ايده طراحی آن جهت طراحی های خود استفاده کنيد و مثلاً برنامه ای که ۱۰ سال پيش با Foxpro نوشته شده است را شما کاملتر و قدرتمندتر با Oracle بنويسيد و صدها مثال ديگر.در طراحی سخت افزار نیز به همین منوال است و این چنان رایج شده است تا آنجا که شرکت Cyrix با بررسی Cpu های شرکت Intel تراشه های جدیدی را وارد بازار کرده است که از لحاظ سازگاری با مادربورد ها کاملاً شبیه تراشه های Intei می باشد.
مهندسی معکوس نه تنها تقلب و سرقت اطلاعات نيست بلکه شيوه ای است که شما با استفاده از اطلاعات ديگران به طراحی ها و ابتکارات جديدی دست می يابيد و در کشور ما در زمينه نرم افزار این قابلیت و این زمینه وجود دارد.
مهندسی معکوس ممنوع!
محققانی که در فرانسه جهت یافتن مشکلات امنیتی نرم افزارها، آنها را مهندسی معکوس می کردند، دیگر حق ندارند یافته های خود را منتشر کنند.
در سال 2001 یک محقق امنیتی فرانسوی چند مشکل امنیتی را نرم افزار ضدویروس Viguard متعلق به شرکت Tegam یافت و در مارس 2002 این مشکلات را منتشر کرد. اما نتیجه این کار از نظر شرکت Tegam مطلوب نبود و لذا اقدام به شکایت علیه این محقق کرد. دادگاهی تشکیل شد و در دادخواست آن ادعا شد که این کارشناس امنیتی بند 335.2 مالکیت فکری را نقض کرده و لذا باید به 4 ماه زندان و پرداخت 6 هزار یورو جریمه محکوم شود.
روز گذشته دادگاه حکم خود را صادر کرد. مطابق با این حکم وی نباید به زندان برود اما جریمه ای تعلیقی معادل 5 هزار یورو را باید بپردازد. یعنی درصورتی که این محق اقدام به انتشار اطلاعات بیشتری درباره مشکلات امنیتی نرم افزار کند باید این مبلغ را پرداخت نماید.
کارشناسان معتقدند این حکم باعث می شود که کاربران برای خرید یک محصول تنها با آگهی های تبلیغاتی مواجه باشند و نتوانند بررسی های فنی انجام شده توسط کارشناسان و محققان را مشاهده کنند.
Tegam هنوز دست از سر این کارشناس امنیتی برنداشته و قصد دارد برای خسارات وارده ادعای 900 هزار یورو کند.

Jump to: ناوبری، جستجو
یکی از مهمترین علومی که در برنامه‌نویسی و مهندسی نرم‌افزار از آن استفاده می شود و برای برنامه‌نویسان حرفه‌ای کاربرد فراوان دارد علم مهندسی معکوس[1] هست. در واقع برنامه نویسان توسط این علم می توانند اشکال‌های (باگ‌های) موجود در برنامه خود را پیدا کنند و به رفع آنها بپردازند.علم رخنه‌گری (کرکینگ) شاخه ای از علم مهندسی معکوس هست. از این رو برای درک معنا و مفهوم علم رخنه‌گری باید با مهندسی معکوس آشنا شویم. اما برای درک مهندسی معکوس هم باید یک پله عقب تر برویم : تا زمانی که با علم مهندسی نرم‌افزار یا همان برنامه نویسی آشنا نشویم ، متوجه مهندسی معکوس هم نخواهیم شد. به همین خاطر تمام کسانی که مایل به یادگیری علم کرک هستند باید تا حدودی با برنامه نویسی و مهندسی نرم افزار آشنایی داشته باشند.برای اینکه بتوانیم یک رخنه‌گر حرفه ای باشیم باید معنا و مفاهیم خیلی از علوم پایه ای رایانه را بدانیم. در واقع علم کرکینگ چندان علم آسانی نیست و مشکلات زیادی در راه یادگیری این علم خواهیم داشت. به عنوان مثال لازم هست بدانیم زبان ماشین چیست ، واحد پردازش مرکزی چگونه کار میکند، تا حدودی با برنامه نویسی آشنا باشیم، زبان اسمبلی را بلد باشیم، ساختار فایل‌های اجرایی (PE)را بشناسیم و... . در واقع پیش‌نیازهای یادگیری علم رخنه‌گری زیاد هستند

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

مهندسی معکوس داده ها
مهندسی معکوس داده ها روشی است که به سرعت در حال رشد می باشد. تلاش ما نیز در جهت ارتقاء و درک بهتر مهندسی معکوس داده ها است که از بخش های مهم و ضروری مهندسی معکوس می باشد و در حال حاضر نیز یکی از بخش های مهم در مهندسی نرم افزار است و جای خود را بین سایر روش های مهندسی نرم افزار باز کرده است .
در طول مدت مهندسی معکوس داده ها ، ما بیشتر از بخش عمومی مهندسی معکوس استنتاج می کنیم. تکنیک های استفاده شده در مهندسی معکوس داده ها بیشتر شامل زیر مجموعه های محدودتری نسبت به تکنیک هایی است که در مهندسی معکوس استفاده می شود. مهندسی معکوس یک فرایندی است که در کسب درک و فهم بهتر از ساختار سیستم و ارتباط متقابل آن با موضوع سیستم ما را یاری می دهد. از اهداف مهندسی معکوس ایجاد و ارائه مستندات در ارتباط با یک موضوع و تسهیل اینکه ما درک کنیم که : آنها چه هستند ؟ چطور کار می کنند ؟ و چه کاری را انجام نمی دهند
یک فرایند مهندسی معکوس می تواند در هر سه بخش اصلی و پایه یک سیستم به کار برده شود
مهندسی معکوس داده ها نیز بر روی بخش داده های سیستم در یک سازمان متمرکز شده است، که مجموعه ای از روشها و ابزار هایی می باشند که در جهت کمک به تصمیم گیری یک سازمان برای ساختارها ، توابع ، ارزش و مفهوم داده ها است. البته مهندسی معکوس داده ها در بخش داده های یک سیستم نرم افزاری دارای محدودیت هایی است که پیچیده تر شدن آن سیستم می گردد. مهندسی معکوس داده ها بیشتر از طریق این دو گرئه بسط و توسعه پیدا کرده است :
1- The Database Community
2- The Software Engineering Community


البته نحوه استفاده و تمرکز هر دو شرکت بر روی مهندسی معکوس داده ها کاملا متفاوت است. چندین سال است که پژوهش ها و نشریه ها در مهندسی معکوس داده ها به وسیله این دو انجمن انجام شده است.



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

اهداف استفاده از مهندسی معکوس پایگاه داده
همانگونه که در بخش های بالا ذکر شد مهندسی معکوس یک مرحله از چرخه حیات سیستم ها می باشد. مهندسی معکوس بخشی از نرم افزار است که شامل بخش های مختلفی در باز یافت و یا نوسازی خصوصیات تکنیکی و اصلی است و اساسا راه اندازی از داخل متن منابع برنامه ها می باشد. احساس می شود که نیاز شدید به باز یافت خصوصیات یک پایگاه داده که به اندازه کافی برای ما مناسب نیست ، داریم. مهندسی معکوس به طور کلی برای مستند سازی مجدد ، تبدیل ، ساخت مجدد ، نگهداری و یا توسعه برنامه های کاربردی سنتی می باشد.
هدف اصلی در سیستم های مهندسی معکوس درک و فهم دانش و مفهومی است که در سیستم های سنتی استفاده شده است . مهندسی معکوس پایگاه داده قصد دارد به کمک مدل ها و روش هایی که ارائه می دهد در واقع حوزه معنایی یک پایگاه داده را پوشش دهد و آنها را به صورت یک مدل مفهومی بیان کند تا مهندسین به کمک آن بتوانند به کمک ابزارهای مدرن و پیشرفته این حوزه معنایی را در حوزه کاربردی استفاده کنند . اهداف کلی این روش را می توان به شرح زیر بیان کرد :
1- تعیین محتوای پایگاه داده و روابط میان آنها ( مانند روابط خواص موجود در پایگاه داده های رابطه ای )
2- کشف و بازیابی حوزه معنایی ( مانند انواع کلیدهای و نسبت های موجود میان روابط و ... ) که اطلاعاتی را به ما می دهد که می توان در حوزه کاربرد و در مرحله تخصص طراحی پایگاه داده از آنها بهره برد.
3- تشریح راه حل های ممکن که می تواند سیستم های موجود را به سمت درک کامل سیستم و کسب حوزه معنایی هدایت کرد.
4- ارائه نتایج به دست آمده در یک الگوی مفهومی که می تواند درک بهتری از داده ها در حوزه کاربردی به ما بدهد.
در اینجا برخی از اهدافی را که بیشتر در مهندسی معکوس پایگاه داده مطرح هستند را بیان کرده ایم :
کسب دانش در توسعه سیستم ها
در طول مدت توسعه یک سیستم جدید یکی از فاز های اولیه شامل گردآوری و رسمی کردن نیازمندیهای کاربران از منابع مختلف است. منابعی نظیر مصاحبه با کاربران ، تجزیه و تحلیل مستندات ( در صورت امکان ) و در بیشتر حالات نیز ممکن است که برخی از پیاده سازی ها از قبل وجود داشته باشند که با تجزیه و تحلیل آن می توان اطلاعات مفیدی به دست آورد. همچنین باید به این نکته توجه کنیم که برای این که با نیاز کاربران سیستم های سنتی از سیستم نهایی و مدرن آشنا شویم ، باید با آن تجارت به خوبی آشنا شویم. چون این در درک و فهم بهتر ما از عملیات ها و فعل و انفعالات بین دو طرف مهم است. زیرا فهم ضعیف از سیستم های اطلاعاتی سنتی ما را به سمت مشخصات نادرستی از نیازهای سیستم نهایی هدایت می کند و می تواند باعث شکست پروژه گردد . بنابراین باید درک خوبی از داده های سیستم های اطلاعاتی سنتی ، واسط ها ، برنامه های کاربردی و ابزارهای پشتیبانی داشته باشیم:
نگهداری سلیس نگهداری نیز یکی از بخش های مهم سیستم است که در بیشتر مراحل توسعه به آن نیاز داریم . برای نگهداری سیستم باید سعی کنیم تا از ایجاد خطاها و تغییرات ناگهانی در سیستم جلوگیری کنیم و اگر خطایی ایجاد شد و یا در توابع سیستمی ( که برای فهم اجزاء مختلف مانند سیستم های داده مرکزی و یا سمان تیک و پیاده سازی ساختارهای داده ای ثابت مورد نیاز است ) تغییراتی ایجاد شد آن خطا و تغییرات تا حد امکان اصلاح و برطرف کنیم.

مهندسی مجدد سیستم ها
هنگام توسعه سیستم در مواردی ما نیاز به مهندسی مجدد سیستم ها داریم . مهندسی مجدد سیستم در واقع همان تغییر معماری داخلی سیستم و یا بازنویسی مجدد برخی از کدهای اجزاء خارجی سیستم و تغییر خصوصیات خارجی آنها می باشد. هدف کلی از مهندسی مجدد سیستم این است که هنگام شروع مجدد با یک پیاده سازی درست باید نگهداری را نیز بیشتر کنیم و تکامل سیستم را نیز تسهیل ببخشیم.

مهاجرت سیستم ها

در ارتباط با مهاجرت سیستم ها قبلا بحث شد و روش ها و دلایل استفاده از آنها نیز مطرح گردید. به طور کلی مهاجرت یک سیستم شامل جابجایی یک یا چندین تکنولوژی پیاده سازی است. همانند جابجایی مثال ها بیشماری دیگری که در این ارتباط وجود دارند. .
یکپارچگی سیستم ها
هدف ما در اینجا یکپارچه سازی دو یا چندین سیستم در قالب یک سیستم می باشد و این یک پارچه سازی می تواند شامل توابع و داده های قدیمی باشد و می تواند باعث ایجاد نتایج فیزیکی در سیستم شود که در این حالت توسعه داده شده اند.

ارزیابی کیفیت
تجزیه و تحلیل کدها و ساختارهای داده ای از یک سیستم در برخی موارد می تواند موجب تذکر های مفید و موثری در ارتباط با کیفیت این سیستم ها و درباره راه های توسعه آنها باشد. به عنوان مثال یک فروشنده نرم افزارهای پایگاه داده از میان تکنیک های یک روش خوب و مناسب را برای ارزیابی کیفیت تمام سیستم های خود انتخاب می کند.

تبدیل / استخراج داده ها
در برخی از شرایط در هنگام رها کردن سیستم های سنتی از بین اجزا فقط پایگاه داده آن را استخراج می کنیم و داده هایی را داریم که به فرمت های دیگر تبدیل شده اند و ما به برخی از دانش هایی نیاز داریم که در ارتباط با خصوصیات فیزیکی و معنایی آنها باشد. در سایر موارد بیشتر به صورت هستند که از داده های متراکم انباشته شده اند و از داخل استخراج شده اند و برای انتقال نیاز به فهم عمیقی از ساختار فیزیکی داده ها برای نوشتن روال های استخراجی و سمان تیک آنها دارد که باید به طور صحیح آنها را تفسیر کرد.

مدیریت داده ها
در مهندسی معکوس پایگاه داده وقتی ما سیستم را توسعه می دهیم برای انجام مدیریت بر روی داده ها توابع باید یک توصیفی از همه اطلاعات منابع و سازمان را بدانند و همچنین آن را در داخل خود ثبت کنند.

استفاده مجدد از اجزاء
استفاده مجدد در معماری سیستم پدیدار می گردد. مهندسی معکوس اجازه می دهد تا طراح سیستم اجزاء ، داده ها و بخش های اصلی سیستم سنتی را به طور منظم و یکپارچه در سیستم جدید شناسایی استخراج و لفافه پیچی کند.
مسائل و مشکلات مهندسی معکوس پایگاه داده ها مهندسی معکوس پایگاه داده با زیر مجموعه از مشکلات مهندسی معکوس نرم افزار در ارتباط است. مهندسین به کمک طرح های جامع و تخصص و همچنین استفاده از روش های تطبیقی سعی در برطرف کردن این مشکلات دارند. ولی استفاده از این طرح ها در پایگاه داده های قدیمی به دلیل مسائلی نظیر دسترس نبودن اطلاعات و مستندات مشکل است. مسائل موجود در مهندسی معکوس پایگاه داده ها را می توان به سه گروه کلی تقسیم کرد:
- انتخاب روش طراحی پایگاه داده به عنوان پایه ای برای مهندسی معکوس
- کامل بودن حوزه معنایی
- معیار های ارزیابی عملکرد

در پايان ذكر اين نكته ضروري است كه ابزارهاي مورد استفاده در مهندسي معكوس نرم افزار، بسيار وسيع تر از آنچه هستند كه در اينجا ذكر شد، و در اين مقاله تنها برنامه هاي اصلي و پر كاربردتر مورد بررسي قرار گرفتند.

منابع
مجله دانش و کامپیوتر
http://fa.wikipedia.org

آخرین ویرایش توسط F a r z a n e h در تاریخ Jun-13-2008 انجام شده است
F a r z a n e h آفلاين است   پاسخ با نقل قول
3 کاربر از F a r z a n e h برای ارسال مفید تشکر نموده اند:
قدیمی May-31-2008, 16:55   #2
azi1362
تــــــــــــــــازه وارد
 
تاریخ عضویت: 2008-05-31
ارسالها: 20
تشکر: 16
6 تشکر در 5 ارسال
دریافت کتاب: 0
اهداء کتاب: 0
azi1362 is on a distinguished road
میزان فعالیت سابقه
0/20 10/20
فعالیت امروز ارسالها
sssssss20
پیش فرض پاسخ: مهندسی معکوس

با سلام
از مقاله خوبتون ممنونم ولی عکسها را نمی توانم ببینم.
azi1362 آفلاين است   پاسخ با نقل قول
2 کاربر از azi1362 برای ارسال مفید تشکر نموده اند:
قدیمی May-31-2008, 17:03   #3
Soheil Hosseini
كارشناس بخش فني و مهندسي
 
آواتار Soheil Hosseini
 
تاریخ عضویت: 2008-01-28
شهر سکونت: چون ايران نباشد تن من مباد ...
رشته تحصیلی: Technical&Engineering
ارسالها: 1,377
تشکر: 2,697
4,771 تشکر در 1,375 ارسال
دریافت کتاب: 0
اهداء کتاب: 0
Soheil Hosseini is on a distinguished road
میزان فعالیت سابقه
1/20 12/20
فعالیت امروز ارسالها
sssss1377
ارسال پیام توسط Yahoo به Soheil Hosseini
پیش فرض پاسخ: مهندسی معکوس

نقل قول:
ارسالی توسط azi1362 مشاهده موضوع
با سلام
از مقاله خوبتون ممنونم ولی عکسها را نمی توانم ببینم.
ورودتون رو تبریک عرض میکنم دوست عزیز

لینک عکس ها رو چک کردم که مربوط به پرشین گیگ بوده . و متاسفانه نمایش داده نمیشه . بهتره این دوستمون عکس های این مقاله رو در جای دیگری آپلود کنند و یا سورس مقاله اصلی رو کپی کنند .
__________________
پايان فعايت رسمي در فروم .


[فقط کاربران سایت قادر به مشاهده ی لینک ها میباشند . ]
Soheil Hosseini آفلاين است   پاسخ با نقل قول
2 کاربر از Soheil Hosseini برای ارسال مفید تشکر نموده اند:
پاسخ

Bookmarks


کاربرانی که در حال مطالعه این موضوع هستند: 1 (0 عضو و 1 مهمان)
 
امکانات
حالات نمایش

قوانین ارسال
شما نمیتوانید موضوع جدید ارسال کنید .
شما قادر به ارسال پاسخ نیستید .
شما نمیتوانید فایل ارسال کنید .
شما نمیتوانید پست های خود را ویرایش کنید .

BB code فعال
Smilies فعال
[IMG] فعال
HTML غیرفعال
Trackbacks are غیرفعال
Pingbacks are غیرفعال
Refbacks are غیرفعال

مراجعه سریع

موضوعات مشابه
موضوع نویسنده انجمن پاسخها آخرین ارسال
نکاتی چند در مورد رشته مهندسی فناوری اطلاعات و دروس این رشته(خلاصه همه چيز) diamonds55 ساير رشته‌هاي فني مهندسي 1 Aug-28-2008 14:19
مهندسی ارزش بنا به درخواست دوستان زیادی diamonds55 ساير رشته‌هاي فني مهندسي 0 Apr-21-2008 03:17
تفاوت مهندسی صنایع و مدیریت صنعتی A.L.I. دانستنیهای مدیریتی 4 Mar-09-2008 02:29
مهندسی ارزش mehrgan مقالات مدیریتی 0 Feb-26-2008 02:38
رشته مهندسی صنایع, رشته پیشرفت ArasH مهندسی صنايع 0 Dec-28-2007 22:26


ساعت: 06:36 بوقت تهران


Powered by: vBulletin Version 3.8.2
Copyright © 2000-2006 Jelsoft Enterprises Ltd.
کليه حق و حقوق متعلق است به سایت علمی دانشجویان ایرانAd Management by RedTyger
Powered by  MyPagerank.Net
Inactive Reminders By Icora Web Design