در مهندسی نرم‌افزار، (به : inversion of control (IoC)) گونه‌ای از طراحی را توصیف می‌کند که بخش‌های اختصاصی نوشته شده یک جریان کنترل را از یک با قابلیت بازاستفاده عمومی دریافت می‌کند. ای که از این طرح به وجود می‌آید در مقایسه با برنامه‌نویسی سنتی رویه‌ای کنترل را وارونه می‌سازد: در برنامه‌نویسی سنتی کد اختصاصی که هدف برنامه را بیان می‌کند، برای مراقبت از وظایف عمومی کتابخانه‌های بازقابل استفاده را فرا می‌خواند اما با وراونه سازی کنترل این کدهای دارای قابلیت باز استفاده هستند که کدهای اختصاصی یا کدهای مربوط به وظیفه خاص را فراخوانی می‌کنند.
 وارونگی کنترل برای افزایش ویژگی برنامه و افزایش قابلیت بسط آن استفاده می ود و در و دیگر پارادایم‌های برنامه‌نویسی هم کاربرد دارد. 
 اگرچه این اصطلاح به اصل وارونگیِ وابستگی مربوط است اما با آن تفاوت دارد. اصل وارونگی وابستگی‌ها مربوط به جداسازی وابستگی‌های میان لایه‌های سطح بالا و لایه‌های سطح پایین می‌باشد. مفهوم کلی اصل وارونگی کنترل به نیز مربوط است. معمولاً با استفاده از IoC یا همان وارونگی کنترل پیاده‌سازی می‌شود، بنابراین کد اختصاصی(کدی که به عنوان event handler توسط برنامه‌نویس نوشته می‌شود) معمولاً وظیفهٔ رسیدگی به رویدادها را بر عهده دارد، در حالی که چرخهٔ رویداد و مخابرهٔ رویدادها/پیام‌ها (آگاه‌سازی event handlerها از وقوع یک رویداد) توسط چارچوپ یا محیط زمان‌اجرا مدیریت می‌شوند.
{"title": "وارونگی کنترل", "link": "https://fa.wikipedia.org//w/index.php?title=%D9%88%D8%A7%D8%B1%D9%88%D9%86%DA%AF%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84&oldid=34483708", "language": "fa"}