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

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

در مدل مهندسی معکوس در واقع خروجی فاز پیاده‌سازی، مهندسی معکوس شده و در حقیقت کد منبع آن (Source Code) به فاز آنالیز و طراحی برگشت داده می‌شود و از این نوع مهندسی معکوس با نام مهندسی مجدد یا Re-Engineering یاد می شود. در حقیقت امروزه دلایل مختلفی برای استفاده از مهندسی معکوس در جهان پدیدار شده است که در ادامه شرح مختصری بر وجود این دلایل آمده است:

کد منبع برای نرم‌افزار در دسترس است ولی در سطوح بالاتر اسناد و مدارک ضعیفی از عملکرد سیستم نرم‌افزاری مورد نظر در دسترس است یا کلا در دسترس نیست که می‌توان در این موارد از مهندسی معکوس به نحو سته برای آنالیز سیستم نرم افزاری استفاده کرد. (مهندسی مجدد)
هیچ Source Code از نرم افزار موجود نیست که در این صورت هر گونه تلاشی برای تشخیص Source code سیستم نرم افزاری ، مهندسی معکوس نام دارد.
تست جعبه سیاه نرم افزار ، که یکی از تست های رایج در مهندسی نرم افزار بوده به این صورت که تست کننده API را در اختیار دارد و سعی دارد نرم افزار را از بعد خارجی آن مورد تحلیل و بررسی قرار دهد.

و آخرین و شاید سیاه‌ترین کاربرد مهندسی معکوس را در عرصه نرم‌افزار بتوان بررسی امنیتی یک نرم‌افزار یا از بین بردن حقوق کپی رایت آن نرم‌افزار بیان داشت .(این فرآیند مهندسی معکوس در اصطلاح Cracking نرم‌افزار نامیده می شود)
در واقع مورد دوم ذکر شده در  استفاده از مهندسی های معکوس ، موردی است که بیشتر افراد با آن آشنا هستند و در واقع آنرا فرآیند بازخوانی یک بخش یا زیرمجموعه سیستم نرم افزاری بدون کمک گرفتن از طرح ها و اسناد و مدل های کامپیوتری آنان است.