مهندسی معکوس به معنی بدست آوردن سطح بالایی از نمایش برنامهها و سیستمهای نرمافزاری است. معمولاً مهندسی نرمافزار بوسیلة یک نمایش سطح پایین از یک سیستم (مثل مقادیر باینری، کدهای ساده، و یا اجراهای قدم به قدم ) شروع میشود و سعی در بدست آوردن نمایش بهتر از موارد مطروحه را دارد. بعنوان مثال بدست آوردن سورس برنامه، نماهایی از معماری، یا use caseها و ترتیب اجرای آنها در یک سیستم نمونهای از این موارد است. روشهای مهندسی معکوس و تکنولوژی نقشی مهمی در بسیاری از وظایف مهندسی نرمافزار ایفا میکنند. میتوان اداراک بهتر نرمافزاری، مهاجرت سیستمها رو به نسلهای جدید و تکامل نرمافزار را نمونههایی از کاربردهای مفید مهندسی معکوس نامید. در تعریفی دیگر مهندسی معکوس تفهیم یک سیستم از شناسایی اجزاء یا مصنوعات سیستم که موجب یافتن روابط میان آنها و ایجاد اجزاء انتزاعی از اطلاعات یک سیستم میشود را گویند. البته باید بخاطر داشته باشیم که هدف مهندسی معکوس تغییر اهداف سیستم به سمتی دیگر نمیباشد . تعریفی دیگر از مهندسی معکوس داریم که مهندسی معکوس عبارت است از توانایی گرفتن اطلاعات از کد منبع و ایجاد یا ارتقاء مدل سیستم در زبان برنامهنویسی مورد نظر تیم مهندسی معکوس؛ یکی از موانع موجود بر سر راه پروژههای علم فناوری اطلاعات سازگار نگاه داشتن مدل آبجت با کد است. با تغییر نیازها، تغییر مستقیم کد میتواند وسوسهانگیز باشد، تا اینکه مدل را تغییر داده شود و سپس کد تغییر یافته را از مدل سیستم تولید نمائیم. مهندسی معکوس به ما امکان میدهد تا همیشه مدل سیستم را با کد، همسان نگاه داریم.
البته تعاریفی که در اینجا مطرح گردید تعاریف مثبتی از مسئلة مهندسی معکوس نرمافزار را مطرح کردهاند. در اینجا ما نیز یکی دیگر از کاربردهای مهندسی معکوس که بوسیلة سارقان نرمافزار بکار برده میشود را ارائه میدهیم. سارقان نرمافزار با در دست داشتن سیستم نرمافزاری تولید شده و اجرای فرآیندهای مهندسی معکوس بر روی آنها به کدهای سیستم و تمامی اجزاء آن خواهند رسید و به تغییر آنها میپردازند. از جملة این تغییرات میتوان به حذف قفلهای نرمافزاری، تغییر عناوین و نشانهای مالکین سیستم به عناوین سارقان نرمافزار، تغییر روند اجرای سیستم طبق خواستة سارقان و مواردی از این قبیل اشاره نمود.
مهندسی معکوس سیستمهای نرمافزاری بزرگ به علت حجم بزرگ و پیچیدگیهای آنها مشکل است. هرچند که این امر پیشنیازی برای نگهداری، مهندسی مجدد، و تکامل نرمافزار میباشد. چیکوفسکی مهندسی معکوس را چنین تعریف میکند:« فرآیند تجزیة یک سیستم برای شناسایی اجزاء سیستم و روابط میان آنها و ایجاد نمایشهایی از سیستم در شکلی دیگر یا در یک سطح بالاتر از اجزاء انتزاعی آن است». نگهداری و توسعه دادن سیستمهای نرمافزاری امروزی به چند دلیل مشکل میباشد. از جمله این موارد بالا بردن سرعت تغییر و تحول کار تولیدکنندگان، افزایش اندازه و پیچیدگی سیستمهای نرمافزاری، و تغییر احتیاجات ثابت سیستمهای نرمافزاری میباشد. بعنوان مثال سیستمهای قدیمی بزرگ، کامل و متشکل از سیستمهای نرمافزاری پیچیدهای هستند که نتیجة یک سرمایهگذاری بلند مدت توسط یک شرکت و بیشتر به همین دلیل نگهداری و پشتیبانی شدهاند پس ملزومات جدید میبایست اتمام گشته و سرمایهگذاری شرکت باید بازگردد. پارنِس تخمین زده است که بیشتر سیستمهای قدیمی از مشکلات متنوعی مانند اینکه تولیدکنندگان اصلی ممکن است تا مدت زیادی در دسترس نباشند، روشهای پیشبرد منسوخ و یا زبانهای قدیمی، و یا مستندسازیهای گمشده و یا غیرکافی و منسوخ میباشند است .
دلایل جدا بودن از دشواریهای تکنیکی و گران بودن نگهداری و تکامل بعضی از سیستمها بدین ترتیب است: سامرویل و دویس تخمین زده است که هزینة حسابهای نگهداری نرمافزار 50 تا 75 درصد از کل هزینة یک سیستم نرمافزاری است. بازنویسی این سیستمها از روی چکنویس همیشه مسئلهدار بوده است زیرا این قضیه حجم بزرگی از زمان، پول و منابع انسانی را نیاز دارد .
از زمانی که سیستمهای قدیمی به سمت حجیم شدن توسط هزاران خط کد نویسی بدلیل وجود مستندسازیهای ناقص رفته است، نیاز به راهنماییهای خاصی که در فهمیدن و رفع نقص نرمافزار کمک کند احساس میشود. تمرکز ما بر روی سیستمهای شئگرا قدیمی بوده که اساساً بدلیل وجود بسیاری سیستم متفاوت که با این روش نوشته شدهاند و بدلیل اینکه عمر مسبب تغییر قسمتی از یک سیستم نرمافزاری در سیستمهای قدیمی نمیشود، اما سرعت در هر کدام توسعه و تغییر یافته است .
طراحی مجدد فرآیند ها یا مهندسی مجدد فرآیندها، یعنی شناخت دقیق با نگرش فرآیندگرا به سازمان، ترسیم دقیق رابطه فعالیت ها و شرایط اجرای فرآیندها، برآورد منابع و هزینه تمام شده و زمان انجام فرآیندها، سپس اصلاح و بهینه سازی رابطه فعالیت ها و اجرای فرآیندها از طریق به کارگیری روش ها، فناوری اطلاعات و تجارب جدید.
نتیجه ی طراحی مجدد فرآیندها عبارت از دستیابی به سرعت بیشتر و هزینه ی کمتر در انجام فعالیت های سازمان و تامین اهداف کلیدی از قبیل موقعیت برتر در رقابت، خدمات بهتر به مشتری یا مشترکین و جلب رضایت آن ها و ارزش افزوده ی بیشتر برای سازمان و مشتری است. امروزه طراحی مجدد فرآیند ها قبل از به کارگیری فناوری اطلاعات از قبیل اینترنت و انواع سیستم های اطلاعاتی جهت بهبود فرآیندها و توسعه ی کارایی مدیریت و سازمان اجرا می گردد. به منظور رفع تنگناها و موانع استفاده از فناوری های جدید و روان سازی فعالیت ها در راستای اهداف هر سازمان و برای درک دقیقتر BPR بهتر است با سابقه و چگونگی خلق آن آشنا شد.
مهندسی هسته ای، به لحاظ اسم ،در وهله اول ممکن است به نظر رشته ای مربوط به فیزیک هسته ای بیاید ودر حال حاضر نیز این توهم در برخورها ومذاکرات برای بعضی اشخاص پیش می آیدولی با همه ی تشابه اسمی عملا مشابهتی بین این دو وجود نداردومهندسی هسته ای همانقدر به فیزیک هسته ای مربوط است که مهندسی مکانیک ،مهندسی شیمی ویا سایر رشته های مهندسی ممکن است به فیزیک هسته ای مربوط باشند.به طور کلی مهندسی هسته ای شاخه ای از مهندسی است که در آن مسائل تکنولوژی راکتورهای هسته ای مورد مطالعه وتجزیه وتحلیل قرار می گیرد ومطالعات عالیه درطرح مکانیکی،انتقال حرارت،متالوژی،ترمودینامیک،آنالیزتنش،کنترل،عمل شیمیایی وفیزیک نوترونی جزو معلومات الزامی مهندسی هسته ای انجام می گیرد.
می توان گفت اولین تخصص مهندسان هسته ای طراحی و گسترش راکتورهای شکافتی پیشرفته ، تحقیقات بنیادی در گسترش و تعمیق استفاده از انرژی همجوشی ،گسترش انرژی هسته ای هم در زمینه تئوری و هم کاربردی برای پسمانداری زباله های رادیواکتیو، مدیریت مواد هسته ای ،تولید رادیو ایزوتوپها برای کاربردهای پزشکی و دیگر کاربردهای صنعتی، با تاکید بر افزایش رفاه بشریت درحال حاضر و حفظ بهتر محیط زیست برای آیندگان است.