محسن نوشته

چهار بعلاوه یک چیه باز؟
منتشر شده در: — Apr 15, 2020

توی این پست می خواهیم با هم بصورت خلاصه راجع به مدل ‍‍‍1+4 یاد بگیریم. من از این مدل برای توصیف معماری نرم افزار خیلی استفاده می کنم و به نظرم برای نرم افزارهای توزیع شده خیلی مفیده. قبل از اینکه شروع کنیم باید یه نکته را یادآوری کنم و اونم اینه که 1+4 یک مدل هستش و این یعنی اینکه از توصیف و تشریح جزئیات توی مدل پرهیز میشه و 1+4 تلاش میکنه روی اصولی متمرکز بمونه که به کمکش همه ي ذینفع های پروژه نرم افزاری به سادگی به درک مشترک از معماری نرم افزار برسن. اما ذینفع ها از نگاه 1+4 عبارتند از: کاربر نهایی، توسعه دهندگان نرم افزار یا همون برنامه نویسای خودمون، مهندسای سیستم و مدیر پروژه.

همونطوری که از اسم مدل مشخصه ما احتمالا با ۵ تا (1+4) موجودیت سروکار خواهیم داشت. مدل پیشنهاد میکنه هر چهار تا از این موجودیت ها را به عنوان دید یا View در نظر بگیریم. عدد 4 که توی نام مدل هستش هم بهین خاطره و اشاره به چهار دید مختلف داره. این دیدها عبارتند از:

1
2
3
4
Logical View
Process View
Development | Implementation View
Physical | Deployment  View

حالا بریم سراغ اون 1 ی که توی نام مدل هست. توقع اینه که باید چیزی متفاوت از دید یا View باشه! هنوز برای من پذیرش اینکه آیا اون 1 واقعا View هست یا نه اتفاق نیفتاده. توی خیلی از منابع اونم View در نظر میگیرن اما بنظر من چیزی متفاوت از View هستش. اسمشScenario هست و کمک میکنه تا ذینفع ها با استفاده از Use-Case ها یا سناریوها به درک بهتری از مولفه های معماری رسیده و متعاقبا ارزیابی کارایی بهتری از معماری پیشنهادی برسند.

حالا بریم و دقیق تر با اون اون چهار تا دید (که مرتبط با عدد 4 توی نام مدل هستن) آشنا بشیم:

Logical View: این دید با فیچرها یا قابلیت هایی که سیستم به کاربر نهایی یا End-User ارائه میکنه، سروکار داره. برای نمایش این View دیاگرام های Class و State از UML بهترین انتخابن.

Process View: این دید با مسائل مرتبط با دینامیک سیستم سروکار داره، دقیقا همون چیزهایی که ما توی Run-Time داریم. توی این دید ما روی مسائلی مانند: همزمانی، توزیع شدگی، یکپارچگی، کارایی، مقیاس پذیری، تاب آوری در برابر خطا، تاب آوری در برابر بار و … تمرکز داریم. برای نمایش این دید دیاگرام های Sequence ، Communication و Activity از UML مناسبن

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

Physical | Deployment View: دید استقرار هم معماری را از نگاه مهندس سیستم یا SysAdmin خودمون توصیف میکنه. دیاگرام Deployment از UML برای این بخش کاربرد زیادی داره. معمولا SysAdmin ها میخوان بدونن سرویس ها روی چه پورت هایی با هم ارتباط میگیرن. مسیر جریان داده ها چیه، یکپارچه شدن قابلیت های جدید، تست و استقرارشون چطور انجام میشه و البته چیزهای دیگه…

حالا بریم سراغ چندتا Best-Practice:

اول اینکه باز تاکید می کنم ما با استفاده از 1+4 داریم معماری را مدل می کنیم و مدل اسمش روشه نباید توقع جزئیات داشت، چرا که جزئیات جلوی رسیدن ذینفع ها به درک مشترک را خواهد گرفت.

لازمه ذینفع ها شناختی از UML و دیاگرام های مرتبط با خودشون داشته باشن.

اگه معماری از مولفه هایی تشکیل شده که اون مولفه ها پیچیدگی دارن براشون بهتره1+4 مستقل طراحی شه. اما نباید جزئیات مولفه ها توی مدل اصلی مطرح شه.

بهتره همیشه قبل از هر اقدامی 1+4 محصول را آماده کنیم و بعنوان یک سند بالادستی همه طرفین یهش متعهد باشم. متاسفانه خیلی وقت های بنا به n دلیل از این کار طفره میریم اما باید بدونیم این سند خیلی خیلی کمک میکنه طرفین به حاشیه یا بیراهه نرن.