معماری نرم افزار
معماری نرم افزار
سلام، امروز میخواهیم تا درمورد مفهوم معماری نرم افزار و انواع آنها با هم دیگه صحبت کنیم.
اول از هرچیزی باید بدونیم که معماری نرم افزار در کامپیوتر یعنی چی؟
معماری نرم افزار یعنی اینکه شما در سیستم نرم افزاری، جای هرچیزی رو مشخص کنید و بدونید هر بخشی از نرم افزار چه کاری رو انجام میده و کجا قرار می گیره.
قبل از بررسی انواع مدلهای معماری نرم افزار،باید به آشنایی با انواع نرم افزارها بپردازیم.
پس در یک کلام می توان گفت که معماری نرم افزار یعنی چگونگی استقرار سیستم و جای گیری المانها.
نرم افزارهای تک کاربره
برای درک نرم افزارهای تک کاربره باید برگردیم به سالها قبل، یعنی زمانی که هنوز مفهوم شبکه ایجاد نشده بود و اینترنت مثل الان گسترده نبود.
در اون دوران، نرم افزارها مثل جزیره هایی از هم دورافتاده بودند و نمیتوانستند با هم ارتباط برقرار کنند و هر کامپیوتری نرم افزار خاص خود را داشت، نرم افزارها و برنامه هایی که توسط برنامه نویس نوشته می شد.
البته لازم به ذکر است که نرم افزارهای تک کاربره همچنان در زندگی ما وجود دارند و نرم افزارهایی هستند که در صورت قطعی اینترنت همچنان کار می کنند.
مثل نرم افزارهای ویندوزفرم (ماشین حساب، مایکروسافت آفیس ، ترسیم مهندسی و ….)
به طور خلاصه میتونیم بگیم در نرم افزارهای تک کاربره فقط شما هستید و یک نرم افزار تک و تنها!
نرم افزارهای Client-Server
حالا بیایم به سالهایی که اینترنت به وجود اومد و شبکه ها گسترش پیدا کردند.
شبکه ها خودشون به دو دسته تقسیم میشوند:
1- شبکه داخلی (LAN)
2-شبکه گسترده (WAN)
شبکه های داخلی برای خودشون یک سرور مجزا و داخلی دارن، ساده ترین مثال برای شبکه داخلی، مودم های خانگی هستند. مودم رو میتونیم سرور شبکه و خودمون رو سرویس گیرنده (Client) در نظر بگیریم که در منزل یک شبکه LAN ایجاد کردیم. سازمان های بزرگ مثل بانک ها نیز شبکه داخلی دارند که شامل یک سرور بزرگ مرکزی هست و کارمندانی که پشت سیستم کار می کنند، حکم Client رو دارن.
شبکه های گسترده هم میشه مثل اینترنت خودمون که شامل سرورهای توزیع شده جهانی و گستردست و همه در سرتاسر دنیا میتونن به کمک مرورگر ها و از طریق وب اپلیکیشن ها ، اطلاعاتشون رو به اشتراک بذارن و با یک سرور جهانی در ارتباط باشند و داده ها رو تبادل کنند.
اجزای اصلی نرم افزار
بعد از اینکه با نرم افزارهای تک کاربره و نرم افزارهای Client-Server آشنا شدید، باید بررسی کنیم که هر نرم افزار از چه اجزایی تشکیل شده است.
قبل از اینکه وارد اجزای نرم افزار بشیم، باید به یک سوال پاسخ دهیم، “چرا نرم افزار را باید به چندین اجزا تقسیم کرد؟
به تقسیم بندی و بسته بندی کردن یک سیستم به اجزای گوناگون، ماژولاریتی (پارتیشن بندی) می گوییم.
ماژولار کردن نرم افزار و دسته بندی اجزای نرم افزار چند دلیل دارد:
1-طراحی و اصلاح ماژولها به صورت مستقل، به گونه ای که اعمال تغییرات در یک بخش، روی بخش دیگر تاثیر نگذارد.
2- کاهش هزینه توسعه نرم افزار
یک مثال
فرض کنید که سخت افزار کامپیوتر به یکدیگر متصل بود و همه چیز یکپارچه بود، مثلا CPU و RAM و دستگاههای ورودی و خروجی کاملا به هم متصل بودند، اونوقت اگه یک دستگاه دچار خرابی جزئی میشد، کل سیستم میرفت رو هوا.!!
اما الان درصورتی که کیبورد خراب بشه، بدون اینکه تاثیری روی بقیه قطعات بذاره میشه تعمیرش کرد و مشکل را رفع نمود ، پس سخت افزار کامپیوتر، ماژولاره و به چندین اجزا تقسیم شده.!
نرم افزار ها هم از این قاعده مستثنی نیستند و مهندسان سعی می کنند تا اونجایی که میتونن، چندین لایه مختلف ایجاد کنند و نرم افزار را ماژولار کنند.
اجزا یک نرم افزار
حالا ما اجزای سخت افزار رو تا حدودی بلدیم، اجزای نرم افزار چیه دیگه؟
هر نرم افزار سه بخش اساسی و مهم داره:
1-لایه Presentation (رابط کاربر):
این لایه همانند front-end در صفحات وب می باشد و GUI در این لایه پیاده سازی می شود. هدف اصلی این لایه، ارتباط و تعامل با کاربران است.
شکلک های خوشگل گرافیکی، دکمه ها، عکس ها، داده های مفید و … همگی در این لایه قرار دارند و تصویر این لایه به عنوان نمایی از نرم افزار در ذهن کاربر نقش می بندد.
مثلا وقتی به شما میگویند instagram، همون صفحات گرافیکی و زیبا میاد جلوی چشمتون که میشه لایه اول نرم افزار!
2-لایه اپلیکیشن و منطق کسب و کار (Business Logic):
مهم ترین لایه و هسته اصلی نرم افزار در این بخش قرار دارد، در این بخش کدنویسی های پشت صحنه انجام می شود و اعتبارسنجی داده های وارد شده توسط کاربر در این لایه صورت می گیرد. منطق برنامه و رفتارهایی که برنامه در حین اجرا دارد در این لایه قرار می گیرد.
3- لایه داده (Data Layer):
پایگاه داده و اطلاعات موردنیاز نرم افزار در این بخش قرار می گیرد و اصطلاحا می توان این لایه را بانک و انبار داده ها دانست. در این لایه می توان به داده ها دسترسی داشت و کارهایی مثل افزودن، حذف و به روز رسانی را روی آنها اعمال کرد.
نرم افزاری که مطابق این سه لایه شکل گرفته باشد را اصطلاحا نرم افزاری با معماری سه لایه می نامیم.
تاکنون معماری 4 لایه نیز در نرم افزارها ارائه شده است و همین 3 بخش اصلی نرم افزار که گفتیم را در 4 لایه قرار می دهند. (3 لایه اصلی + یک لایه کنترل کننده)
لازم به ذکر است که معماری های تک لایه و 2 لایه نیز وجود دارند اما هیچ مهندس عاقلی از این معماری استفاده نمی کند.
معماری نرم افزار تک لایه
در معماری نرم افزار یک لایه، همه 3 بخش اصلی که مطرح کردیم به صورت یکپارچه به هم متصل اند و مثلا فرض کنید اگر یک مشکلی در لایه Data رخ دهد، کل نرم افزار نابود می شود و فاتحه اش خونده است !
معماری نرم افزار دو لایه
معماری نرم افزار دو لایه نیز تفاوت چندانی با تک لایه ندارد و لایه هایش مطابق زیر تقسیم شده است:
لایه اول: لایه Presentation + لایه Application
لایه دوم: پایگاه داده
آینده معماری نرم افزار
جهان مهندسی نرم افزار دارد به سمت معماری های چند لایه (N-Tier) پیش می رود و مهندسین نرم افزار به دنبال این هستند تا لایه های نرم افزاری بیشتری ایجاد کنند و اصل ماژولاریتی را نیز در نرم افزار به کار ببرند.
مطالب زیر را حتما مطالعه کنید
بوت کمپ آموزشی نرم افزار altium
آموزش تولید محتوا
آموزش سئو
آموزش وردپرس
آموزش network+
آموزش میکروکنترلرهای ARM
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
Very interesting points you have remarked, thanks for posting.!
Good info and right to the point. I am not sure if this is actually the best place to ask but
do you guys have any thoughts on where to employ some professional writers?
Thanks in advance 🙂 Escape room lista