معماری نرم‌افزار | علوم کامپيوتری - رضا رمضانی
دوشنبه , تیر ۲۵ ۱۳۹۷
خانه / تحقیقات و مقالات / معماری نرم‌افزار

معماری نرم‌افزار

 

مقدمه:

 

در دهه های اخیر ، پیچیدگی نرم افزارها روز بروز بیشتر شده و تقاضا برای نرم افزارهای قدرتمندتر افزایش یافته است .

به نظر می رسد که روشهای قدیمی جوابگوی نیازهای در حال رشد کنونی نیستند و نیاز به ایجاد و بکارگیری روشهایی

است که بوسیله آن ها بتوان بر این پیچیدگی ها در زمان هایی کوتاهتر غلبه کرد .از طرفی امکان کنار گذاشتن سیستم

های نرم افزاری موجود که تا به حال مشغول سرویس دهی به مشتریان بوده اند ، وجود ندارد و می بایست سیستم های

جدید را بصورت یکپارچه و در کنار همین سیستم ها بوجود آورد .در سال های اخیر، تحقیقات درباره معماری نرم افزار،

به یکی از مباحث مهم در حوزه مهندسی نرم افزار تبدیل شده است و تحلیل معماری نرم افزار، یکی از موضوعات اصلی

در این حوزه می باشد.

معماری های متفاوتی بمنظور طراحی و پیاده سازی نرم افزار، متناسب با رشد فناوری در بخش نرم افزار ارائه

شده است. این معماری ها از یک طرف برخاسته از امکانات و ماهیت معماری سخت افزارهای زمان خود و از طرف

دیگر بسته به نوع و نگرش در تکنولوژی های ساخت نرم افزاری و انتظارات طرح شده توسط کاربران میباشند.

هر معماری دارای شاخصها و ویژگی های منحصر بفرد بوده و نر م افزارهایی که با اتکاء بر هر یکاز این معماری ها

پیاده سازی می گردند،خصایصخود را از معماری بکارگرفته شده به ارث خواهند برد.

معماری های مختلف ارائه شده شامل:

۱٫معماری MainFrame

۲٫معماری File Server

۳٫معماری Client/Server

۴٫معماری دو لایه ای

۵٫معماری چند لایه ای

۶٫معماری سرویس گرا

۷٫معماری داده گرا

معماری نرم افزاری یک سیستم به صورت روبرو تعریف می شود، ” ساختار یا ساختارهایی از سیستم که مولفه های نرم

افزاری، ویژگی های قابل رویت از خارج این مولفه ها و روابط بین آن ها را نشان دهد. ” این تعریف فقط بر روی جنبه های داخلی یک سیستم تمرکز دارد و بیشتر روش های تحلیل نیز بر پایه آن می باشند.

۱٫معماری MainFrame

معماری فوق به زمان کامپیوترهایMainFrame در دهه ی ۱۹۶۰-۱۹۷۰ باز می گردد. در این معماری، کامپیوترhost تمام پردازش ها را انجام می دهد و کاربران با استفاده از ترمینال ها، با سیستم اصلی(MainFrame) ارتباط برقرارمی کنند.

۲٫معماری File Server

این معماری پس از بوجود آمدن کامپیوتر شخصی و پایین آمدن قیمت آن ها مطرح شد که داد ه ها را روی سرور ذخیره می کند و پردازش ها را روی client ها انجام می دهد. در این معماری از سرویس دهنده های متعدد، بصورت متمرکز استفاده می گردد و نیز منابع متفاوتی نظیر چاپگر و یا فضای ذخیره سازی به اشتراک گذاشته می شوند.

۳٫معماری Client/Server

بعد از اینکه توانستند تکنیک های انتقال اطلاعات را تقویت کنند و مشکلات شبکه های کامپیوتری را بهبود بخشند،  این معماری مطرح شد و در حال حاضر نیز به طور گسترده از آن استفاده می کنند. در معماری گفته شده از سرویس دهندگان وسرویس گیرندگان که هرکدام خصوصیات متفاوتی دارند استفاده می شود.

۴٫معماری Two Tier

بعد از اینکه بانک های اطلاعاتی بوجود آمدند، طراحان معماری برای اینکه بتوانند از مزایای پیمانه ای استفاده کنند نیاز پیدا کردند که پردازش های مربوط به داده ها را در لایه ای مستقل پیاده سازی کنند، برای این کار این مدل طراحی شد و مشابه مدل Client/ server می باشد.

۵٫معماری Multi Tier

این مدل نیز مانند مدل دو لایه ای است با این تفاوت که رابط کاربر به صورت لایه ای مجزا پیاده سازی شده است،که  این کار باعث بوجود آمدن مزایایی از قبیل: جداسازی منطق برنامه از رابط کاربر و سهولت استفاده از اجزای آماده برای این بخش می شود. در این مدل از یک لایه میانی دیگر بین سرویس گیرنده و سرویس دهنده بانک اطلاعاتی استفاده می  شود.

۶٫معماری سرویس گرا

معماری سرویس گرا، با تکیه بر محاسبات توزیع شده و بر پایه شبکه ها و لایه های میانی و همچنین زبان هایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، بعنوان راه حلی مناسب جهت از میان برداشتن مشکلات روش های قدیمی تر مطرح گردیده است.تا کنون تعاریف زیادی از معماری سرویس گرا شده است که من در ادامه یک نمونه ی آن را ارائه می کنم:” معماری سرویس گرا روشی برای ساخت سیستم های توزیع شده ای است که در آن ها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویس ها قرار می گیرد”. محاسبات سرویس گرا SOC نمونه ای از محاسبات است که در آن طراحی و توسعه سیستم های کاربردی بر پایه سرویس انجام می گیرد.

۷٫معماری داده گرا

آنچه که در برنامه های کامپیوتری دارای نقشی بسیار مهم بوده، داده ها می باشند و همواره نحوه ذخیره و بازیابی آنان از مهمترین مباحث در دنیای گسترده نرم افزار بوده. از ویژگی های خاص این معماری می توان به موارد زیر اشاره کرد:

۱٫ لازم بودن یک اتصال پیوسته با شبکه  ۲٫ قابلیت انجام عملیات مورد نیاز در زمان دلخواه و ارتباط با منبع داده  ۳٫استفاده کاربران دیگر از ارتباط   ۴٫ بهبود کارآئی و توسعه برنامه

درباره‌ رضا رمضانی

رضا رمضانی

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*