آرمان آذرنیک
آرمان آذرنیک
خواندن ۳ دقیقه·۱ سال پیش

روش مستند سازی نرم‌افزار C4

سایمون براون ابداع ککنده روش c4
سایمون براون ابداع ککنده روش c4

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

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

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

طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم
طرح معماری یک سیستم

همانگونه‌ که تقریبا تمام برنامه‌نویسان و افرادی که دانشجوی رشته‌های کامپیوتر بوده و درس مهندسی نرم‌افزار را گذرانده‌اند، می‌دانند یکی از بهترین روش‌ها برای ساده سازی انتزاعی از نرم‌‌افزار، استفاده از شکل،‌نمودار و تصاویر است. معروف ترین این موارد نیز نمودار UML (Unified Modeling Language) است که انواع مختلفی داشته و در عین سادگی اطلاعات مفیدی از کلاس‌ها، ماژول‌ها، توابع، اشیا، بسته‌ها و ... را به صورتی قابل فهم برای تیم‌های فنی و غیرفنی فراهم می‌سازد که امروزه که اکثر شرکت‌ها و تیم‌ها از روش‌های چابک برای فرآیند تولید نرم‌افزار خود استفاده می‌کنند و عملا فرصت زیادی برای آنکه تیم‌های فنی و غیرفنی نیازمندی‌های خود را توضیح دهند وجود ندارد این روش‌های نموداری بسیار پرکاربرد و مفید هستند.

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

نقشه یک منطقه با سطح بسیار بالای انتزاع
نقشه یک منطقه با سطح بسیار بالای انتزاع
نقشه یک منطقه با سطح بالای انتزاع
نقشه یک منطقه با سطح بالای انتزاع
نقشه یک منطقه با سطح متوسط انتزاع
نقشه یک منطقه با سطح متوسط انتزاع
نقشه یک منطقه با سطح پایین انتزاع
نقشه یک منطقه با سطح پایین انتزاع
نقشه یک منطقه با سطح بسیار پایین انتزاع
نقشه یک منطقه با سطح بسیار پایین انتزاع

اما یکی دیگر از روش‌های توصیف معماری نرم‌افزار استفاده از روش C4 است که توسط سایمون براون مطرح شده و نسبت به نمودار UML دارای notation های کمتری است. C4 قابلیت توصیف نرم‌افزار در سطح‌های مختلف انتزاع را دارد. این سطوح از بالاترین سطح انتزاع به پایین ترین سطح (کد) عبارتند از:

Context, Containers, Components, Code

سطوح انتزاع C4
سطوح انتزاع C4

که چون ابتدای هر ۴ کلمه دارای C است، سایمون این روش را C4 نام گذاری کرده است.

این سطوح مختلف می‌توانند در زمان‌های لازم برای توضیح موارد مختلف به افراد فنی و غیرفنی استفاده شوند.

نمودار context نرم‌افزار را به صورت جعبه‌ای در وسط که در حال تعامل با کاربران و سایر سیستم‌هایی که خارج از مرز و محدوده کنترل ماست نشان می‌دهد. این نمودار برای تمامی افراد فنی و غیرفنی و در تمامی مراحل توسعه مناسب و مفید است. رنگ آبی نشان دهنده‌ی سیستم‌های در حال توسعه و رنگ خاکستری سیستم‌های آماده را نشان می‌دهند.

نمودار context بانک
نمودار context بانک

نمودار container نشان دهنده‌ی یک برنامه‌ی قابل اجرا به تنهایی است که انتزاع سطح بالایی از کد و فناوری‌های به کار رفته را نشان می‌دهد و مناسب افراد فنی داخل و خارج تیم است.

نمودار container بانک
نمودار container بانک

نمودار component نشان دهنده‌ی مولفه‌های سازنده‌ی container است که برای افراد فنی داخل تیم مفید است.

نمودار component بانک
نمودار component بانک

نمودار code که قابل تولید به صورت خودکار است معمولا به شکل نمودارهای UMLمانند نمودار کلاس ساخته می‌شود.این نمودار تنها برای توسعه‌دهندکان همان بخش مفید است.

نمودار code بانک
نمودار code بانک


از مزایای روش C4 می‌توان موارد زیر را برشمرد:

قابل فهم‌تر بودن نمودار‌ها، قابلیت تغییر سطح انتزاع، کاهش شکاف طراحی و پیاده‌سازی

نمودار‌های C4 را می‌توان به کمک draw.io و gliffy.com و Microsoft Visio و Structurizr

این نمودار‌ها برای قابل درک‌تر بودن توسط همه بهتر است از نوتیشن‌های UML هم استفاده کرده و دارای عنوان مناسب، شرحی کوتاه و خطوط یک طرفه برچسب دار باشند.

نرم‌افزارمعماری نرم افزاردانشگاه شهید بهشتیc4سایمون براون
شاید از این پست‌ها خوشتان بیاید