اصول کلیدی در معماری نرم افزار

اصول کلیدی در معماری نرم افزاردر این قسمت از سری آموزش معماری و طراحی نرم افزار که به صورت رایگان از وب سایت پرووید به شما تقدیم می گردد، قصد داریم در رابطه با مهمترین اصول کلیدی در معماری و طراحی نرم‌افزار صحبت کنیم. معماری نرم افزار در واقع سازماندهی یک سیستم است که در آن یک سیستم از اجزای تشکیل دهنده مختلفی که هر کدام قرار است وظایف خاصی را ایفا کنند، تشکیل شده است.سبک معماری و یا architectural styleمنظور از سبک معماری و یا architectural style که تحت عنوان الگوی معماری و یا architectural pattern نیز شناخته می شود، مجموعه ای از اصول است که یک محصول نرم افزاری را تشکیل می‌دهند. سبک معماری مشخص کننده یک چهارچوب مجرد و انتزاعی است که در آن مجموعه ای از سیستم ها با الگوهای خاصی از لحاظ معماری در کنار هم سازماندهی می‌شوند. وظایف سبک معماری به قرار زیر می باشند:یک مجموعه از اجزای تشکیل دهنده و ارتباطات بین آنها را تعریف می کند.باعث می شود که سیستم به قطعات کوچکتر تقسیم گردد و قابلیت استفاده مجدد از هرکدام از قسمت های مختلف را فراهم می کند.مشخص کننده یک روش خاص برای پیکربندی مجموعه ای از اجزای تشکیل دهنده (ماژول هایی که interface های خوش تعریف، قابل استفاده مجدد و قابل جایگزینی) بوده و البته، مشخص کننده اتصالات و ارتباطات بین این اجزای تشکیل دهنده نیز می باشد.سیستم نرم افزاری که بر اساس سبک های معماری مختلف نوشته می شود، می‌تواند نسبت به دیگر محصولات نرم افزاری، موفقیت بیشتری را کسب کند. هر سبک معماری شامل موارد زیر می باشد:مجموعه ای از انواع component ها که یک عملیات خاصی را در سیستم اجرا می کنند.مجموعه ای از اتصالات و یا ارتباطات، از قبیل؛ subroutine call ها و remote procedure call ها وdata stream ها و socketها که باعث برقراری ارتباط، هماهنگی و همکاری بین component های مختلف می‌شوند.قیود معنایی و یا semantic constraint ها که مشخص می‌کنند چگونه component ها برای شکل دهی سیستم نهایی با یکدیگر یکپارچه می‌شوند.یک چیدمان توپولوژیکی از component ها که مشخص کننده روابط فی مابین آنها در زمان اجرای برنامه است.طرح های معماری معمولدر ادامه در رابطه با سبک های معماری معمول و ویژگی های خاص هر کدام با یکدیگر، صحبت خواهیم کرد.دسته بندی سبک های معماری شرح Communication Message bus مشخص کننده‌ی استفاده از سیستم‌های نرم‌افزاری برای ارسال و دریافت پیام ها و شکل‌دهی ارتباطات بین component ها می باشد. Service–Oriented Architecture (SOA) مشخص کننده نرم افزارهای می باشند که برخی عملیات را در قالب service و یا خدماتی با استفاده از قراردادها و پیام هایی در اختیار دیگر برنامه‌ها قرار می‌دهند. Deployment Client/server سیستم نرم‌افزاری را به دو برنامه به نام client و server می شکند که در آن client درخواست‌هایی را به server ارسال می‌کند. 3-tier or N-tier عملیات مربوط به برنامه را به قسمت ها و لایه های مختلف می شکند که هر کدام از آنها می‌توانند بر روی سیستم های فیزیکی مختلفی قرار بگیرند. Domain Domain Driven Design بر اساس مدل سازی business domain و یا دامنه تجاری و تعریف کردن business object ها، بر اساس entity ها عمل می کند. Structure Component Based برنامه را به قسمت های کوچک تر و قابل استفاده مجدد می شکند که هر کدام برای ارتباط بین یکدیگر، دارای interface های می‌باشند. Layered قسمت های مختلف برنامه را به لایه‌های مختلف می شکند. Object oriented بر اساس تقسیم کردن مسئولیت های یک برنامه و یا سیستم به object های مختلف است که هر کدام شامل داده و رفتارهای مربوط به آن object می باشند. انواع معماری هابه طور کلی در طراحی و معماری نرم‌افزار، چهار نوع معماری از نقطه نظر یک سازمان (کسب و کار) و یا enterprise وجود دارد که اصطلاحاً به آنها enterprise architecture می گوییم. در رابطه با هر کدام از آنها در قسمت زیر صحبت خواهیم کرد.معماری تجاری و یا business architecture: مشخص کننده راهبردهای تجاری، مدیریتی، سازماندهی و فرایندهای تجاری اصلی در یک کسب و کار است و بر روی تجزیه و تحلیل و طراحی فرایندهای تجاری تمرکز می‌کند.معماری نرم افزار و یا application software architecture: به عنوان یک نقشه و یا راهنما برای سیستم‌های نرم‌افزاری عمل می‌کند و ارتباطات و تعاملات بین فرایندهای تجاری یک سازمان را مدل می‌کند.معماری اطلاعاتی و یا information architecture: مشخص کننده دارایی های اطلاعاتی فیزیکی و منطقی و همچنین منابع مدیریت داده می‌باشند.معماری فناوری اطلاعات و یا IT architecture: مشخص کننده اجزای تشکیل دهنده نرم افزاری و سخت افزاری می باشد که سیستم نهایی مربوط به سازمان مورد نظر را تشکیل می دهند.منبع: وبسایت پرووید