معماری نرم افزار و فوایدش

احتمالا این اواخر زیاد اسم معماری نرم افزار رو شنیده باشید و براتون سوال باشه که واقعا چه مزیتی داره ؟پس با من همراه باشید تا به بررسی معماری نرم افزار بپردازیم .پس بزارید از همون اول شروع کنیم اصلا معماری در طراحی نرم افزار چی هست؟احتمالا شما هم مثل من قبلا تو گوگل دنبال جوابتون گشتید ولی بزارید ساده ترش کنم .معماری نرم افزار یعنی اینکه ما با رعایت یک سری استاندارد ها و قواعد، جوری کد بنویسیم که بشه پروژه رو به قسمت های مختلف، مستقل و بزرگ تقسیم بندی کرد؛ در آخر با مرتبط کردن و ارتباط این قسمت ها با هم، نرم افزارمون ساخته میشه! پس بصورت خلاصه معماری در برنامه نویسی یعنی تقسیم بندی پروژه و کد ها به قسمت های بزرگ و مشخص!اما این کار چه مزیتی داره؟با توجه به بزرگ شدن روز افزون پروژه های نرم افزاری و به طبع اهمیت بیشتر کار گروهی یه سری مشکلات بزرگ و کوچیک پدید اومد و نگه داری از کد ها سخت و سختر شد و به دنبالش خوانایی کد ها پایین اومد.اینجاست که معماری معماری نرم افزار به وجود اومد. استفاده از معماری ، به نرم افزار و سیستم شما ساختار میده و خوانایی کد رو بالاتر میبره، میتونه لایه های مختلف نرم افزارتون رو از هم جدا بکنه و هرکدوم از اونا رو از همدیگه مستقل کنه؛ با این کار شما میتونید یه نرم افزاری بسازید که همه چیزش تفکیک شده یعنی لایه View(نمایش) شما از لایه منطق و مدل هاتون جدا بشه و خب این خوانایی کد رو فوق العاده بالاتر میبره و نگهداری از کد ها رو خیلی بهتر میکنه.شاید بشه بدون معماری خاصی نرم افزار های زیادی رو ساخت اما برای نگه داری و بروز رسانی و .... به مشکل میخورید چون ساختاری مشخص وجود نداره و احتمالا با بزرگ شدن نرم افرارتون ، توش گم میشید.باور کنید استفاده از ساختاری مشخص و قاعده مند میتونه برناممون رو ساده تر کنه و از پیچیدگی نوشتاری جلوگیری کنه و در عین حال قدرت محاسباتی و کاربردی برناممون رو حفظ کنه .انواع معماری برنامه نویسیبرای اینکه مطلب طولانی نشه سراغ مهمترینشون میرم بعدا در پستی جداگانه مفصل در موردشون صحبت می کنم.معماری لایه­ ایدر سالهای اخیر، لایه‌بندی یکی از اصولی هست که در این نوع معماری استفاده میشه . لایه‌بندی باعث می‌شه که بخشهای مختلف برنامه با توجه به لایه خود، اقدامات فراخوانی شده را پردازش کنن و بدون در نظر گرفتن لایه دیگه، سرویس مورد نظر را به لایه بالاتر ارسال کنه. کاهش وابستگی لایه‌ها به همدیگه باعث می‌شه تا سرعت اجرای برنامه افزایش پیدا کنه .نکته مهمی که در معماری چند لایه در برنامه‌نویسی وجود داره ، تعداد لایه ها و این که در هر لایه چه اقدامی باید انجام بده ، هست با رشد این گونه معماری، معماری 2 لایه و 3 لایه پدید اومد. معماری ۲ لایهسیستم های دو لایه client-server نوعی معماری لایه ای بود که لایه Client یک رابط کاربری بود و سرور هم لایه ای بود که در ارتباط با پایگاه داده فعالیت می کرد.ولی بیشتر برنامه نویسان منطق را در لایه Server جای میدادن که این کار باعث تکرار شدن کد ها و طبیعتا، کاهش خوانایی برنامه، سخت شدن مشکل پشتیبانی و توسعه و... می­شد به طوری که یک تغییر ساده در کد باعث تغییر در بخش های زیادی میشه.با اینکه معماری Client-Server در محبوبیت به سر می برد ، با گسترش روز افزون شی گرایی و تلاش برای حله ایراد معماری client-server ،منجر به معرفی معماری 3 لایه شد.معماری ۳ لایهدر روش معماری سه لایه، شی گرایی نیز به مدل دو لایه اضافه شد. در معماری برنامه نویسی سه لایه، لایه کاربران یا UI، لایه منطق و لایه پایگاه داده در کنار یکدیگر قرار می گیره . همین لایه‌ها باعث میشه تا از افراد متفاوت برای ایجاد هر لایه به طور مجزا و همزمان استفاده کرد و در نهایت این سه لایه یک واحد کامل را تشکیل می‌ده.نقل قول هفته از C.A.R. Hoare :به‌ طور کلی دو راه برای طراحی معماری یک نرم‌افزار وجود داره. راه اول اینکه آن‌قدر اون رو ساده طراحی کنی که هیچ نقصی داخلش وجود نداشته باشه و راه دوم اینکه آن‌قدر اون رو پیچیده طراحی کنی که هیچ نقصی آشکارا داخلش دیده نشه.