یک نکته مهم در توسعهی سیستمهای نرم افزاری، مستندسازی معماری نرم افزار است. در ادامه یکی از مدلهای مستندسازی معماری نرمافزار به نام c4 بررسی میشود. این مدل براساس نمودار UML و نمای معماری 4+1 در سال 2006–2011 توسط آقای سایمون براون ساخته شده است. او مشاور متخصص در معماری نرمافزار و نویسنده کتاب معماری نرمافزار برای توسعهدهندگان، راهنمای توسعهدهنده برای معماری نرمافزار، رهبری فنی و تعادل چابکی، است. همچنین مجموعه ای از ابزارهای منبع باز و تجاری برای کمک به تیمهای نرم افزاری در تجسم، مستندسازی و کاوش معماری نرم افزار را ایجاد کرده است. مدل C4 یک رویکرد انتزاعی برای بصریسازی معماری نرم افزار است که نحوه تفکر معماران و توسعه دهندگان در مورد نرم افزار و چگونگی ساخت آن را نشان میدهد. این روش با کمک تقسیم نرمافزار به قسمتهای کوچکتر مدلسازی میکند. نماها در سطوح سلسه مراتبی زمینه، نگهدارنده، مولفه و کد متمایز میشوند. این مدل زمانی توصیه میشود که اشتراک سریع و کارا و بروزرسانی پیوسته معماری نرمافزار نیاز است و مناسب نمای استاتیک معماری نرمافزار است. مدل C4 معماری بصری اشتراکی و معماری تکاملی در چارچوب تیمهای چابک را تسهیل میبخشد. در ادامه مطلب ابتدا مدل C4 با جزئیات بررسی میشود و سپس یک ابزار جهت رسم این نمودارها معرفی میشود.
در صنعت نمودارسازی نسبت به مدلسازی ترجیح دارد. زیرا موانع ورودی نسبتاً کم است و سادهتر به نظر میآید. در زمان ترسیم نمودار، معمولاً به کمک ابزارهایی (مثلاً Microsoft Visio یا تخته سفید) یک یا چند نمودار جداگانه ایجاد میشود. زبان ابزارهای نمودارسازی در واقع فقط اشکال و خطوط هستند، بنابراین نمی توانند پاسخگوی سوالاتی مانند "مولفه X چه وابستگی هایی دارد؟" باشند. در این جاست که مدل C4 صرف نظر از نمودارسازی یا مدلسازی قابل استفاده است.
در این قسمت به معرفی مدل C4 پرداخته میشود. یک سیستم نرم افزاری از یک یا چند نگهدارنده (به عنوان مثال برنامههای کاربردی وب، برنامههای موبایل، برنامههای کاربردی دسکتاپ، پایگاههای داده و سیستم فایل) تشکیل شده است. هریک شامل یک یا چند مولفه است که توسط یک یا چند عنصر کد (به عنوان مثال کلاسها، رابطها، اشیاء و توابع) پیادهسازی میشود و مردم از سیستم نرمافزاری ساخته شده استفاده میکنند. سطوح نما به صورت زیر سازماندهی میشود:
سطح اول، زمینه (Context): حیطه و روابط میان کاربران و دیگر سیستمها را نشان میدهد. جزئیات در این نمودار مهم نیست و تمرکز بر روی افراد و سیستمهای نرم افزاری است و به فناوریها و جزئیات سطح پایین توجه نمیشود. این نمودار قابل نشان دادن به افراد غیرفنی است و به اکثر تیمها توصیه میشود. در شکل زیر نمونهای از نمودار زمینه آورده شده است.
سطح دوم، نگهدارنده (Container): در این سطح سیستم به نگهدارندههای مرتبط تجزیه میشود و نمای سطح بالای معماری نرم افزار و نحوه توزیع مسئولیتها نشان داده میشود. درواقع یک واحد قابل اجرا یا قابل استقرار جداگانه است که کد را اجرا میکند و یا داده ها را ذخیره میکند. این نمودار برای توسعه دهندگان نرم افزار و پشتیبانان عملیاتی مفید است. رسم این نمودار برای اکثر تیمها توصیه میشود اما برای سیستمهای بسیار بزرگ خیلی ارشمند نیست. در شکل زیر نمونهای از نمودار نگهدارنده آورده شده است.
سطح سوم، نمودار مولفه (Component): در این سطح، نگهدارندهها به نگهدارندهای مرتبط تجزیه میشود و مولفهها به سیستم های دیگر یا نگهدارندههای دیگر مرتبط میشود. اجزای هر مولفه، مسئولیت آن و جزئیات فناوری نشان داده میشود. رسم این نمودار برای تمام تیمها توصیه نمیشود و فقط در مواردی خاص نیاز به رسم دارد. در شکل زیر نمونهای از نمودار مولفه آورده شده است.
سطح چهارم، نمودار کد (Code): در این سطح جزئیات طراحی معماری که به کد نگاشت میشود، نمایش داده میشود. این سطح از جزئیات فقط برای مهمترین یا پیچیدهترین اجزا توصیه میشود و نیازی به رسم آن در تمام تیمها وجود ندارد. در شکل زیر نمونهای از نمودار کد آورده شده است.
از نمودارهای مدل c4 میتوان برای نمایش برخی دیگر از جنبههای نرمافزار استفاده کرد. به عنوان مثال، نمودار چشمانداز سیستم در حیطه سازمانی، یک نمودار زمینه بدون تمرکز بر یک سیستم نرمافزاری خاص است. نمونه دیگر، نمودار پویا برای نشان دادن چگونگی همکاری عناصر در یک مدل استاتیک در زمان اجرا، برای پیادهسازی توصیف ویژگی سیستم برای کاربر، نمونه و ویژگی است. همچنین به عنوان مثالی دیگر، نمودار استقرار جهت نمایش نحوه نگاشت سیستم نرم افزاری و یا نگهدارنده به زیرساخت مناسب مورد استفاده قرار میگیرد.
نکاتی رسم نمودارها:
هر نمودار باید عنوانی داشته باشد که نوع و محدوده نمودار را توصیف کند و دارای یک کلید باشد که نماد مورد استفاده را توضیح دهد.کلمات اختصاری و اختصارات آورده شده باید برای همه مخاطبان قابل درک باشد.
نوع هر عنصر مشخص باشد(به عنوان مثال شخص، سیستم). هر عنصر شامل توصیف کوتاهی باشد که مسئولیت های کلیدی آن را نمایان میکند. در هر نگهدارنده و مولفه تکنولوژی مربوطه مشخص باشد.
هر پیکان ارتباطی نشان دهنده یک رابطه یک طرفه است و باید برچسب گذاری شود. در روابط بین نگهدارندهها که معمولاً ارتباطات بین فرآیندهاست، تکنولوژی یا پروتکل مربوطه به کمک برچسب گذاری مشخص شود.
ابزارهایی جهت رسم این نمودار موجود است. در این قسمت یک نمونه از ابزارهای رسم نمودارهای مدل c4 معرفی میشود. به کمک Gliffy میتوان نمودارهای مربوطه را رسم کرد. مراحل رسم به شرح زیر است:
1. اشکال گوناگون برای نمودار زمینه شامل نام، توضیحی مختصر از نقش آن، تکنولوژی و فلشهایی جهت نشان دادن تعاملات رسم میشود.
2. کلید برای واضح شدن نمودار ایجاد میشود. برای مثال استفاده از رنگهای یکسان برای سیستمهای در تعامل میتواند به درک بهتر نمودارها کمک کند.
3. ارتباطات میان مولفهها به کمک پیکانها رسم مشخص میشود.
4. لایه جدید برای نمودار بعدی در مدل ایجاد میشود.
5. مراحل 1-4 برای رسم نمودار نگهدارنده تکرار میشود.
6. مراحل 1-4 برای رسم نمودار مولفه تکرار میشود.
7. مراحل 1-4 برای رسم نمودار کد تکرار میشود.
8. پیوند لایهها برای دسترسی به هر یک لایهها ایجاد شود.
10. نمودار آماده است و ذخیره میشود.
این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است.