نمایش معماری نرم افزار با مدل C4

هر نرم افزار از قسمت ها و المان های مختلفی تشکیل شده که توسط معمار نرم افزار طراحی می شوند. در معماری نرم افزار یکی از چالش های اصلی نوع نمایش ساختار ها و اجزاء نرم افزار می باشد. از یکپارچه سازی مدل های نرم افزاری برای انتقال بهتر معماری نرم افزار و مستند سازی آن استفاده می شود.در این بحث، مدل های مختلفی طی سال های پیشرفت معماری نرم افزار ارائه شده اند. یکی از این مدل ها، مدل C4 می باشد. مدل C4 از لایه های مختلفی برای نمایش معماری نرم افزار استفاده می کند که این لایه ها درجه های متفاوتی از انتزاع معماری را نشان می دهند. دلیل نامگذاری این مدل نیز لایه هایی هستند که با این مدل از نرم افزار به نمایش گذاشته می شود که به ترتیب زیر می بشاند.مدل C4 توسط Simon Brown معرفی شد. این مدل هر معماری نرم افزاری را در 4 لایه به تصویر می کشد. هر لایه میزان درشت دانگی مصور کردن سیستم را نشان می دهد، لایه های آن به شرح زیر می باشد. در قدم اول کلیات اصلی و قدم های رسم نمودار را بررسی می کنیم و در مثالی یک سیستم بانکی را با این روش نمایش می دهیم.1- Contextاین لایه کلی ترین دید ازسیستم را به تصویر می کشد و مفهوم کلی سیستم، ارتباط و وابستگی های سیستم را به صورت درشت دانه مشخص می کند.2- Containersلایه دوم یک درجه ریز تر از لایه ی اول به بررسی محتویات داخل هر قسمت از بخش های کلی نرم افزار می پردازد. این لایه اجزاء کلی سیستم و تکنولوژی هایی که انتخاب شده را مشخص می کند. در این قسمت توجه شود که این Container با آن که با Docker است متفاوت می باشد.3- Componentsلایه ی سوم دید جزئی تری نسب به اجزاء به تصویر کشیده در لایه ی دوم دارد که این اجزا هر کدام به طور معمول یک وظیفه به خصوصی در نرم افزار به عهده دارند. مانند مصور کردن اجزاء بخش امنیت برنامه.4- Codeلایه ی آخر ریز دانه ترین لایه به محتویات تشکیل دهنده لایه ی قبل را بررسی میکند. این لایه معمولا از کد های نرم افزار تشکیل شده. مثالدر این قسمت اجزاء مختلف یک سیستم بانکی را با مدل C4 را به صورت مرحله به مرحله نمایش می دهیم. Banking System Contextدر مرحله ی اول کلی ترین نمای سیستم را رسم می کنیم. در این مثال برای نمایش یک سیستم بانکی کاربران سیستم که با این سیستم در ارتباط اند، خود سیستم بانکی اینترنتی و سیستم های دیگری که با سیستم اینترنتی بانک در ارتباط هستند نمایش داده می شود.Internet Banking System Componentsدر مرحله دوم سیستم بانکی را با دید اجزاء بررسی می کنیم و در نمودار سرویس هایی که درون سیستم بانکی وجود دارند به همراه سیستم های خارجی ای که هر کدام از این سرویس ها با آن در ارتباط هستند نمایش داده می شود.API Application Componentsدر مرحله سوم به طور مثال می خواهیم container مربوط به API Application را جزعی تر بررسی کنیم. اجزائ موجود درون آن را و ارتباطات درون آن و ارتباطات با container های خارجی را در این مرحله مشخص می کنیم.Mainframe Banking System Codeدر مرحله ی آخر درون هر کدام از component های مرحله ی قبل کد هایی هستند که آن را تشکیل می دهند. آن ها را در این مرحله با نمودار هایی مانند ER و وابستگی های تابعی آن کد ها نمایش می دهیم. معمولا در مدل C4 این مرحله به محیط های کد مربوط می شود و آن را به IDE های مربوطه واگذار می کنند. در مدلسازی نرم افزار با روش C4 سختی های نمایش نرم افزار از بین می رود و برای نشان دادن هر نوع انتزاع مد نظر یک سطح وجود دارد. این موضوع باعث می شود در انتقال این طراحی به تمامی تیم از منظر های مختلف معماری قابل نمایش باشد. همچنین تا حد مورد نیاز تیم مورد نظر را از جزئیات لازم مطلع می شود. این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.مراجعفیلم معرفی توسط Simon Brownسایت رسمی مربوط به روش C4&lt;br/&gt;