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

معماری نرم‌افزار چیست؟

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

معماری فرآیند چیست؟

معماری فرآیند (Process architecture‎) به طراحی ساختاری سیستم‌های فرایندی عمومی اطلاق می‌شود که در زمینه‌هایی چون سیستم‌های رایانه‌ای (نرم‌افزار، سخت‌افزار و شبکه) و فرآیندهای کسب‌و‌کار (معماری سازمانی، خط‌مشی و رویه‌ها، لجستیک و مدیریت پروژه) و هر نوع فرآیندی که دارای پیچیدگی ساختاری باشد، استفاده می‌شود.

معماری سرویس‌گرا

معماری سرویس‌گرا (Service-oriented Architecture)، از معروف‌ترین روندهای طراحی نرم‌افزار است که تمرکزش بر طراحی سامانه‌های توزیع‌شده است. در این معماری کارکردهای نرم‌افزاری در قالب سرویس توسط مؤلفه‌های برنامه‌های کاربردی به دیگر مؤلفه‌ها در بستر ارتباطات تحت شبکه ارائه می‌شود. امروزه از این معماری در دستگاه‌های دولتی و شرکت‌های خصوصی برای توسعه برنامه‌های کاربردی و سیستم‌ها، یکپارچگی سیستم‌های اطلاعاتی سازمانی یا تعاملات اطلاعاتی بین سازمانی و استاندارد وب سرویس (Web Service) و پروتکل‌های آن استفاده می‌شود. یک سرویس یک واحد مجزا و مستقل از یک وظیفه‌مندی است که می‌تواند به صورت مستقل و با کمترین وابستگی از دیگر بخش‌ها استفاده، بروزرسانی و عمل کند. یک سرویس ویژگی‌های مهمی دارد. به‌طور مثال، منطقاً نشان‌دهنده یک فعالیت کسب‌وکار با خروجی معین است، خودمختار است، محتویات و جزئیات آن بر مشتریان سرویس پوشیده است و سرویس ممکن است شامل دیگر سرویس‌ها برای ارائه سرویس خود باشد.

سرویس‌های متفاوت می‌توانند برای ارائه وظیفه‌مندی برنامه‌های کاربردی بزرگتر با هم تجمیع و یکپارچه شوند. در واقع معماری سرویس‌گرا با برنامه‌نویسی مؤلفه‌گرا (modular programming) ارتباط نزدیکی دارد. معماری سرویسگرا مؤلفه‌های نرم‌افزار توسعه یافته به صورت مجزا که به صورت مستقل و توزیع شده‌استقرار یافته‌اند را با هم یکپارچه می‌سازد. این معماری توسعه نرم‌افزار مبتنی بر مؤلفه و ارتباط پیرامون شبکه مؤلفه‌ها بر مبنای اصل پنهان‌سازی در توسعه برنامه‌های کاربردی را تسهیل می‌کند.

آشنایی با مهم‌ترین پروتکل‌های معماری سرویس‌گرا

از مهم‌ترین پروتکل‌های معماری سرویس‌گرا می‌توان به موارد زیر اشاره کرد:

Simple Object Access Protocol: ساختاری برای تبادل پیام‌ها در قالب XML است که بین سرویس‌های وب تبادل می‌شود.

 Web service Description Language: زبانی مبتنی بر XML که جهت توصیف ویژگی‌های عملیاتی سرویس‌های وب استفاده می‌شود و دارای دو بخش تعریف واسط و پیاده‌سازی است.

Universal Description ,Discovery and Integration: واسطی است برای انتشار و شناسایی سرویس‌های وب و شامل یک مخزن می‌شود که ارائه دهندگان به انتشار و تبلیغ سوریس خود می‌پردازند تا دیگران بتوانند آن را شناسایی کنند.

معماری مدل-هدایت شده Model Driven Architecture استاندارد ارائه شده توسط کارگروهobject management group  OMG است.

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

معماری چندلایه برای ساده کردن پردازش رایانه‌ای استفاده می‌شود. این گونه معماری برای توصیف و تشریح فرایندی بکار می‌رود که در آن درجه‌ای از تفکیک میان اجزای گسسته بدست آمده باشد. این تفکیک توسط یک یا چند پیشکار نرم‌افزاری اعمال می‌شود. مثالی از آن کاربرد میان افزار برای افزایش بهره‌وری خدمات داده‌ای میان یک کاربر و یک پایگاه داده‌ها می‌باشد. همچنین ممکن است از این عبارت با عنوان معماری n-لایه یاد شود. بیشترین شکل استفاده آن در حالت معماری سه-لایه می‌باشد.

معماری سه لایه

معماری سه لایه یک الگوی معماری مشتری خدمتگزار در مهندسی نرم‌افزار است که در آن سه واحد واسطه کاربری (نمایش)، پردازش منطقی (منطق) و دسترسی به داده (داده) به صورت واحدهای مستقل و حتی بر روی پلت فرم‌های جداگانه، توسعه و نگهداری می‌شوند. برای اولین بار این معماری توسط جان اچ داناوان در موسسه Open Environment Corporation به کار گرفته شد. جدا از فواید ناشی از ماژولار بودن این معماری، فایده اصلی معماری سه لایه این است که هر کدام از سه واحد مذکور در صورت نیاز برای پاسخگویی به نیازمندی‌های جدید یا تغییر در تکنولوژی، به صورت مستقل و بدون نیاز تغییر لایه دیگر، تغییر کنند. به‌طور معمول؛ معمولاً لایه نمایش بر روی کامپیوتر شخصی یا workstation قرار گرفته می‌شود و دارای یک واسطه کاربری گرافیکی می‌باشد. لایه منطق خود از چندین ماجول جداگانه ساخته شده که معمولاً بر روی یک سرور برنامه به کار گرفته می‌شود. لایه داده نیز برای کار از یک سرور پایگاه داده کمک می‌گیرد. با توجه به حجم و پیچیدگی، معمولاً لایه منطق خود به چندین زیر لایه شکسته می‌شود که به چنین معماری ای، معماری چند صفحه‌ای (n-tier architecture) گفته می‌شود.

لایه نمایش

این لایه بالایی‌ترین لایه یک برنامه نرم‌افزاری محسوب می‌شود که در واقع کاربر نهایی، تنها با این لایه در ارتباط می‌باشد. وظیفه این لایه این است که اطلاعاتی از لایه منطق دریافت کرده‌است را به شکل مناسبی مثلاً در قالب یک واسطه کاربری گرافیکی به کاربر نمایش دهد.

لایه منطق (لایه میانی)

این لایه وظیفه این دارد که بر روی داده‌هایی که از لایه داده دریافت کرده پردازش‌های لازم را انجام داده و در اختیار لایه نمایش قرار گذارد. در واقع عملکرد اصلی برنامه در این لایه پیاده‌سازی می‌شود. هم چنین این لایه هیچ وقت به صورت مستقیم مثلاً با پایگاه داده صحبت نمی‌کند و به واسطه لایه داده این کار را انجام می‌دهد.

لایه داده

لایه داده شامل ارتباط به پایگاه داده، فایل سرور و غیره و هم چنین لایه دسترسی به داده که عملیات‌های مانا بر روی داده‌ها انجام می‌شود، می‌باشد. این لایه وظیفه دارد یک واسطه برای لایه منطق فراهم آورد که از طریق آن لایه منطق بتواند بدون درگیر شدن در پیچیدگی‌های مربوط به ارتباط مستقیم با پایگاه داده و ... بتواند عملیات لازم شامل ذخیره‌سازی، ویرایش، حذف و بازیابی داده‌ها را انجام دهد. اگر چه چنین معماری ای، ممکن است تأثیر منفی بر روی کارایی و سرعت برنامه نهایی بگذارد ولی باعث می‌شود که تأثیر به سزایی بر روی بهبود مقیاس‌پذیری و نگهداری برنامه بگذارد.

معماری 1+4

مدل 4+1 مدل 4+1 توسط فیلیپ کروتچن برای توصیف معماری سیستم‌های نرم‌افزاری معرفی شد. این مدل مبتنی بر استفاده از چند view است. view‌ها برای توصیف سیستم از دید مصرف کنندگان مختلف و سرمایه‌گذاران نرم‌افزار است مانند کاربران نهایی، برنامه نویسان نرم‌افزار و مدیران پروژه. 4 view در این مدل شامل مدل منطقی، توسعه، فرایند و فیزیکی می‌شود.هر یک از دیدگاه‌های این معماری با یکی یا چند نمودار uml به شرح زیر در ارتباط است:

Logical view: این دیدگاه نشان می‌دهد که عملکرد سیستم چگونه توسط طراحی داخلی فراهم میشود این دیدگاه ساختار ایستا و بویای داخل سیستم را مشخص میکند از جمله نمودار هایی با این دیدگاه در ارتباط اند می توان به class diagram & object diagram اشاره کرد.

Development View: دید توسعه برای تشریح سیستم از دید یک برنامه‌نویس است و درگیر مدیریت نرم‌افزار است. به این View همچنین Implementation View هم می گویند. در UML از نمودار Component برای توصیف کمپوننت‌های سیستم استفاده می‌کند.

Process View: دید فرایند، ، درگیر وجهه پویای سیستم است. این دیدگاه المان های سیستم و ارتباط آن ها با هم و ترتیب انجام کار ها بر اساس زمان را بررسی میکند ارز حمله نمودار های با این بخش درگیرند می‌توان بهsequence diagram /activity / state machine diagramاشاره کرد.

Physical View: دید فیزیکی سیستم را از دید یک مهندس سیستم نمایش می‌دهد. این دید درگیر توپولوژی کمپوننت‌های نرم‌افزاری در لایه فیزیکی است، به‌علاوه ارتباطات فیزیکی بین این کمپوننت ها. در UML از نمودارهای Deployment برای نمایش لایه فیزیکی استفاده می‌شود.

Use Case:این دیدگاه دید کابران خارجی نسبت به نرم افازر را مورد بررسی قرار میدهد نمودار که در uml این دیگاه را بوشش میدهد usecase diagram است.

مایکروسرویس‌ها

مایکروسرویس‌ها نوعی الگوی معماری است که در آن برنامه‌های پیچیده به بخش‌های کوچک و مستقلی شکسته می‌شوند که از طریق APIهای مستقل از زبان با هم در ارتباط هستند. این سرویس‌ها کوچک هستند و سطح بسیار خوبی از استقلال را دارند. به علاوه تمرکز هر یک بر روی انجام یکی از آن کارهای کوچک است. معماری مایکروسرویس‌ها ویژگی‌های مهمی دارد. به‌طور مثال، سرویس‌ها را به راحتی می‌توان جایگزین کرد. سرویس‌ها حول قابلیت‌ها شکل می‌گیرند (به‌طور مثال، در رابطه با واسط کاربری، محصولات مشابه و توصیه شده با کاربر وب، صورت حساب و نمونه‌های مشابه)، سرویس‌ها را می‌توان با زبان‌های برنامه‌نویسی، پایگاه‌داده‌ها، محیط سخت‌افزاری و نرم‌افزاری مختلف و متعددی پیاده‌سازی کرد. انتخاب هر یک بستگی به کاربرد و مسئله مورد نظر دارد. معماری مبتنی بر مایکروسرویس‌ها بر یک روند توسعه نرم‌افزاری تکیه دارد که در آن ارائه پیوسته (continuous delivery) اهمیت دارد. متفاوت از معماری SOA یا همان معماری سرویس محور است. زیرا که در SOA تلاش برای یکپارچه سازی چندین برنامهٔ کاربردی است در حالی که چندین مایکروسرویس تنها متعلق به یک برنامه هستند.

معماری مدل-نما-کنترل‌گر

در مهندسی نرم‌افزار، مدل-نما-کنترل‌گر یا ام‌وی‌سی (Model–view–controller - MVC) به یک الگوی معماری نرم‌افزار گفته می‌شود. الگوی ساختاری ام‌وی‌سی به جداسازی داده‌های کاربرد از مؤلفه‌های ارائه شده به‌صورت گرافیکی و منطق مربوط به پردازش ورودی‌ها اقدام می‌کند.  هدف الگوی ساختاری ام‌وی‌سی صرفاً یکپارچگی در ساختار نرم‌افزار است و به کمک آن بدست‌گیری نرم‌افزار در راستای مدیریت و گسترش به سادگی انجام می‌گیرد.

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

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

معماری وب‌گرا

معماری وب‌گرا (Web-Oriented Architecture) یک سبک معماری نرم‌افزاری است که معماری سرویس گرا (Service-Oriented Architecture) را در راستای اپلیکیشن‌های تحت وب گسترش می‌دهد. معماری وب گرا در اصل توسط بسیاری از شبکه‌های اجتماعی و وب سایت‌های شخصی ساخته شده‌است. تعریف رسمی گارتنر از معماری وب گرا اینگونه است: «معماری وب گرا یا Web-Oriented Architecture سبکی معمارگونه از معماری سرویس گرا یا همان Service-Oriented Architecture می‌باشد که به یکپارچگی سیستم‌ها و کاربران از طریق ابررسانه‌های مرتبط با هم در سطح جهانی بر اساس معماری وب می‌پردازد. این نوع معماری بر تمامی اینترفیس‌ها (رابط کاربری و رابط کاربردی برنامه‌نویسی) به منظور دستیابی به تأثیرات شبکه جهانی از طریق پنج عنصر رابط اساسی شناسایی منابع، بکارگیری منابع از طریق نمایش آنها (منابع وب)، پیام‌های خودتوصیفی، ابررسانه بعنوان قلب تپنده موقعیت برنامه و  درگیر نکردن برنامه تاکید دارد.»  معماری وب گرای سازمانی یا Enterprise Web Oriented Architecture یکی از زیر سبک‌های SOA  است. EWOA  مجموعه‌ای از عناصر، اصول و فرآیندهای معماری مبتنی بر وب است. وب‌سایت‌ها و برنامه‌های کاربردی نظیر و سرویس‌های RESTful  بر مبنای معماری EWOA کار می‌کنند. پشته معماری وب گرا WOA از مولفه‌های زیر ساخته شده است:

توزیع (HTTP , Feeds)

ترکیب (Hypermedia , Mashups)

امنیت (OpenID, SSL)

قابلیت انتقال داده (XML,RDF)

قابلیت نمایش داده (ATOM, JSON)

متدهای انتقال (REST, HTTP, BitTorrent)

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

1607870047_0.gif

نظر شما چیست؟