اصل Single Responsibility در توسعه نرم افزار

همانطور که احتمالا می‌دانید اصل تک وظیفه‌ای و یا Single Responsibility Principle بیشتر در بحث طراحی شی گرا مطرح می‌شود. در رابطه با این اصل می توانید از آموزش ویدئویی اصول سالید (SOLID) در برنامه نویسی شی گرا استفاده کنید. البته می‌توان از اصل Single Responsibility Principle به عنوان یک اصل در معماری نرم افزار شبیه به separation of concerns نیز استفاده کرد. بر اساس اصل Single Responsibility یک آپجکت فقط باید یک مسئولیت را داشته باشد و فقط باید به یک تک دلیل تغییر کند. به عبارت دیگر تنها شرایطی که در آن یک آبجکت نیاز به تغییر دارد ایجاد تغییر در همان تک وظیفه‌ای است که انجام می دهد. با در نظر گرفتن و پیاده سازی کردن این اصل بسیار مهم در نرم‌افزار تان می توانید یک سیستم loosely coupled و modular را ایجاد کنید. به عبارت دیگر استفاده کردن از این روش شما به جای لحاظ نمودن وظایف چندگانه در یک کلاس می توانید کلاس های جدید ایجاد کنید و به هر کدام از آنها فقط یک تک مسئولیت اختصاص بدهید. فراموش نکنید که اضافه کردن کلاس های جدید و داشتن کلاس‌های متعدد و کوچکتر همواره در نرم‌افزار بهتر از داشتن کلاس های بزرگ و یا تغییر دادن کلاس های از قبل موجود می باشند. این موضوع نیز یکی دیگر از اصول پنجگانه SOLID به نام اصل Open-Closed Principle می باشد که طبق آن کدهای جدید می بایست اضافه شوند و از تغییر دادن کدهای از قبل موجود باید جلوگیری گردد. در رابطه با این موضوع نیز در آموزش ویدئویی اصول سالید (SOLID) در برنامه نویسی شی گرا بیشتر صحبت کرده‌ایم.

در یک اپلیکیشن monolithic می توانیم Single Responsibility Principle را در یک سطح بالا به لایه‌های برنامه لحاظ کنیم. برای مثال وظیفه نشان دادن ظاهر برنامه می بایست در پروژه UI قرار بگیرد. پروژه Data Access نیز فقط باید یک وظیفه داشته باشد و آن نیز دسترسی پیدا کردن به داده ها می باشد. Business logic برنامه نیز می بایست در پروژه application core قرار بگیرد. با انجام این کار می توانید به سادگی کدهای مربوط به Business logic را تست کرده و آنها را به طور مستقل از دیگر Responsibility های مربوط به برنامه تکامل ببخشیم. در رابطه با این موضوع در بسته های مختلفی از وب سایت پرووید در رابطه با تست نرم‌افزار صحبت کردیم که در صورت تمایل می توانید از آن ها استفاده کنید. یک بسته آموزشی فوق العاده در این رابطه بسته ی آموزش ویدئویی معماری نرم افزارهای ASP.NET Core MVC برای تست پذیری می باشد. زمانی که اصل Single Responsibility Principle در معماری یک اپلیکیشن لحاظ بگردد و در سطوح منطقی درنظر گرفته شود می‌توانیم به معماری مایکروسرویس ها برسیم. برای یادگیری مایکروسرویس‌ها را میتوانید از بسته ی آموزش ویدئویی مباحث اساسی معماری مایکروسرویس ها دیدن کنید. یک مایکروسرویس‌ها فقط یک تک وظیفه مشخص را داراست و آن را انجام می دهد اگر نیاز به گسترش دادن رفتار یک سیستم که با استفاده از معماری مایکروسرویس‌ لحاظ شده است دارید بهتر است که مایکروسرویس‌های اضافه ای را لحاظ بفرمایید تا اینکه مایکروسرویس‌ها ی از قبل موجود را تغییر داده و به آنها مسئولیت های جدید لحاظ کنید.