ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

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

 

 

mohsenmahyar@yahoo.com

mo-mah.persianblog.ir

 

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

 

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

مهندسی معکوس عمل محاسبة چگونگی اجزاء نرم‌افزار است که شما هیچ کدی برای ساختار آن در دست ندارید، یا عملیات ایجاد این کدها در سطوح متفاوت و یا ایجاد آنها از طرقی غیروابسته به آن کار می‌باشد.

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

 

_________________

پست ها: 13

           

پست باز هم مهندسی معکوس

مطمئن باشید که بحث مهندسی معکوس در بحث مهندسی نرم‌افزار بسیار اهمیت داره که من این همه براتون مطلب در این زمینه ارسال می‌کنم!

 

 

2ـ مهندسی معکوس

مهندسی معکوس به معنی بدست آوردن سطح بالایی از نمایش برنامه‌ها و سیستمهای نرم‌افزاری است. معمولاً مهندسی نرم‌افزار بوسیلة یک نمایش سطح پایین از یک سیستم (مثل مقادیر باینری، کدهای ساده، و یا اجراهای قدم به قدم ) شروع می‌شود و سعی در بدست آوردن نمایش بهتر از موارد مطروحه را دارد. بعنوان مثال بدست آوردن سورس برنامه، نماهایی از معماری، یا use caseها و ترتیب اجرای آنها در یک سیستم نمونه‌ای از این موارد است. روشهای مهندسی معکوس و تکنولوژی نقشی مهمی در بسیاری از وظایف مهندسی نرم‌افزار ایفا می‌کنند. می‌توان اداراک بهتر نرم‌افزاری، مهاجرت سیستمها رو به نسلهای جدید و تکامل نرم‌افزار را نمونه‌هایی از کاربردهای مفید مهندسی معکوس نامید [1]. در تعریفی دیگر مهندسی معکوس تفهیم یک سیستم از شناسایی اجزاء یا مصنوعات سیستم که موجب یافتن روابط میان آنها و ایجاد اجزاء انتزاعی از اطلاعات یک سیستم می‌شود را گویند. البته باید بخاطر داشته باشیم که هدف مهندسی معکوس تغییر اهداف سیستم به سمتی دیگر نمی‌باشد [2]. تعریفی دیگر از مهندسی معکوس داریم که مهندسی معکوس عبارت است از توانایی گرفتن اطلاعات از کد منبع و ایجاد یا ارتقاء مدل سیستم در زبان برنامه‌نویسی مورد نظر تیم مهندسی معکوس؛ یکی از موانع موجود بر سر راه پروژه‌های علم فناوری اطلاعات سازگار نگاه داشتن مدل آبجت با کد است. با تغییر نیازها، تغییر مستقیم کد می‌تواند وسوسه‌انگیز باشد، تا اینکه مدل را تغییر داده شود و سپس کد تغییر یافته را از مدل سیستم تولید نمائیم. مهندسی معکوس به ما امکان می‌دهد تا همیشه مدل سیستم را با کد، همسان نگاه داریم[3].

البته تعاریفی که در اینجا مطرح گردید تعاریف مثبتی از مسئلة مهندسی معکوس نرم‌افزار را مطرح کرده‌اند. در اینجا ما نیز یکی دیگر از کاربردهای مهندسی معکوس که بوسیلة سارقان نرم‌افزار بکار برده می‌شود را ارائه می‌دهیم. سارقان نرم‌افزار با در دست داشتن سیستم نرم‌افزاری تولید شده و اجرای فرآیندهای مهندسی معکوس بر روی آنها به کدهای سیستم و تمامی اجزاء آن خواهند رسید و به تغییر آنها می‌پردازند. از جملة این تغییرات می‌توان به حذف قفلهای نرم‌افزاری، تغییر عناوین و نشانهای مالکین سیستم به عناوین سارقان نرم‌افزار، تغییر روند اجرای سیستم طبق خواستة سارقان و مواردی از این قبیل اشاره نمود.

مهندسی معکوس سیستمهای نرم‌افزاری بزرگ به علت حجم بزرگ و پیچیدگی‌های آنها مشکل است. هرچند که این امر پیش‌نیازی برای نگهداری، مهندسی مجدد، و تکامل نرم‌افزار می‌باشد. چیکوفسکی مهندسی معکوس را چنین تعریف می‌کند:« فرآیند تجزیة یک سیستم برای شناسایی اجزاء سیستم و روابط میان آنها و ایجاد نمایشهایی از سیستم در شکلی دیگر یا در یک سطح بالاتر از اجزاء انتزاعی آن است». نگهداری و توسعه دادن سیستمهای نرم‌افزاری امروزی به چند دلیل مشکل می‌باشد. از جمله این موارد بالا بردن سرعت تغییر و تحول کار تولیدکنندگان، افزایش اندازه و پیچیدگی سیستمهای نرم‌افزاری، و تغییر احتیاجات ثابت سیستمهای نرم‌افزاری می‌باشد. بعنوان مثال سیستمهای قدیمی بزرگ، کامل و متشکل از سیستمهای نرم‌افزاری پیچیده‌ای هستند که نتیجة یک سرمایه‌گذاری بلند مدت توسط یک شرکت و بیشتر به همین دلیل نگهداری و پشتیبانی شده‌اند پس ملزومات جدید می‌بایست اتمام گشته و سرمایه‌گذاری شرکت باید بازگردد. پارنِس تخمین زده است که بیشتر سیستمهای قدیمی از مشکلات متنوعی مانند اینکه تولیدکنندگان اصلی ممکن است تا مدت زیادی در دسترس نباشند، روشهای پیشبرد منسوخ و یا زبانهای قدیمی، و یا مستندسازی‌های گمشده و یا غیرکافی و منسوخ می‌باشند است [4].

دلایل جدا بودن از دشواری‌های تکنیکی و گران بودن نگهداری و تکامل بعضی از سیستمها بدین ترتیب است: سامرویل و دویس تخمین زده است که هزینة حسابهای نگهداری نرم‌افزار 50 تا 75 درصد از کل هزینة یک سیستم نرم‌افزاری است. بازنویسی این سیستمها از روی چکنویس همیشه مسئله‌دار بوده است زیرا این قضیه حجم بزرگی از زمان، پول و منابع انسانی را نیاز دارد [4].

از زمانی که سیستمهای قدیمی به سمت حجیم شدن توسط هزاران خط کد نویسی بدلیل وجود مستندسازی‌های ناقص رفته است، نیاز به راهنمایی‌های خاصی که در فهمیدن و رفع نقص نرم‌افزار کمک کند احساس می‌شود. تمرکز ما بر روی سیستمهای شئ‌گرا قدیمی بوده که اساساً بدلیل وجود بسیاری سیستم متفاوت که با این روش نوشته شده‌اند و بدلیل اینکه عمر مسبب تغییر قسمتی از یک سیستم نرم‌افزاری در سیستمهای قدیمی نمی‌شود، اما سرعت در هر کدام توسعه و تغییر یافته است [4].

 

_________________

 

عپست ها: 147

           

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

یه بحث مهندسی معکوس هم در صنعت به طور کلی داریم چون به مهندسی نرم افزار مربوط نمیشد من در تاپیک زیر نوشتم و علاقمندان بخونند بد نیست

: mohsenmahyar@yahoo.com

 

mo-mah.persianblog.ir

 

   + MOHSEN GHASEMI - ۱٠:٤٥ ‎ق.ظ ; ۱۳۸٩/٩/۱