وارونگی کنترل

در مهندسی نرم‌افزار، وارونگی کنترل (به انگلیسی: inversion of control (IoC)) گونه‌ای از طراحی را توصیف می‌کند که بخش‌های اختصاصی نوشته شده یک برنامه رایانه‌ای جریان کنترل را از یک کتابخانه با قابلیت بازاستفاده عمومی دریافت می‌کند. معماری نرم‌افزاری ای که از این طرح به وجود می‌آید در مقایسه با برنامه‌نویسی سنتی رویه‌ای کنترل را وارونه می‌سازد: در برنامه‌نویسی سنتی کد اختصاصی که هدف برنامه را بیان می‌کند، برای مراقبت از وظایف عمومی کتابخانه‌های بازقابل استفاده را فرا می‌خواند اما با وراونه سازی کنترل این کدهای دارای قابلیت باز استفاده هستند که کدهای اختصاصی یا کدهای مربوط به وظیفه خاص را فراخوانی می‌کنند.

وارونگی کنترل برای افزایش ویژگی پودمانی برنامه و افزایش قابلیت بسط آن استفاده می ود و در برنامه نویسی شیئ گرا و دیگر الگوواره های برنامه‌نویسی هم کاربرد دارد.

اگرچه این اصطلاح به اصل وارونگیِ وابستگی مربوط است اما با آن تفاوت دارد. اصل وارونگی وابستگی‌ها مربوط به جداسازی وابستگی‌های میان لایه‌های سطح بالا و لایه‌های سطح پایین می‌باشد. مفهوم کلی اصل وارونگی کنترل به برنامه‌نویسی رویداد محور نیز مربوط است. معمولاً برنامه‌نویسی رویداد محور با استفاده از IoC یا همان وارونگی کنترل پیاده‌سازی می‌شود، بنابراین کد اختصاصی(کدی که به عنوان event handler توسط برنامه‌نویس نوشته می‌شود) معمولاً وظیفهٔ رسیدگی به رویدادها را بر عهده دارد، در حالی که چرخهٔ رویداد و مخابرهٔ رویدادها/پیام‌ها (آگاه‌سازی event handlerها از وقوع یک رویداد) توسط چارچوپ یا محیط زمان‌اجرا مدیریت می‌شوند.

منابع 

اصول برنامه‌نویسی
الگوهای طراحی نرم‌افزار
الگوی معماری (علم رایانه)
جاوا (زبان برنامه‌نویسی)
معماری نرم‌افزار
مهندسی نرم‌افزار بر پایه مولفه