چنجلاگ دیزاین سیستم چیست؟ و چرا؟

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

چنجلاگ چیه و چرا توی دیزاین سیستم‌ مهمه؟

به طور خلاصه، چنجلاگ یه سند از مستنداتیه که تغییرات یک محصول که در اینجا منظور ما دیزاین سیستم هست رو در طول زمان فهرست می‌کنه. برای دیزاین سیستم‌ها، این تغییرات می‌تونه شامل اصلاح رنگ‌ها، اضافه یا حذف شدن کامپوننت‌ها، آپدیت شدن تایپوگرافی‌ها، و حتی تغییرات توی ریزترین جزئیات مثل فاصله‌ها و پدینگ‌ها باشه. اما اهمیت اصلی چنجلاگ توی دیزاین سیستم‌ها اینه که همه اعضای تیم رو در جریان تغییرات نگه می‌داره و باعث می‌شه به سرعت به تغییرات واکنش نشون بدن.

چطور یه چنجلاگ موثرتر بنویسیم؟

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

1. شفاف و واضح بنویسید

هیچ‌کس دوست نداره که وقتش رو صرف فهمیدن جملات پیچیده و مبهم کنه. پس سعی کنید همیشه از زبان ساده، مستقیم و بدون ابهام استفاده کنید. واضح توضیح بدید که دقیقا چه چیزی تغییر کرده و چطور این تغییر روی محصول تاثیر میذاره. برای مثال:

به جای اینکه بنویسید: "چند کامپوننت آپدیت شد"، بهتره بگید: "آیکون‌ها به‌روز شدند تا با رنگ‌بندی جدید هماهنگ باشند."
یا به جای "چند باگ رفع شد"، بگید: "مشکل تراز نادرست دکمه‌ها در مرورگر Safari رفع شد."

این روش نوشتن باعث می‌شه همه بدونن که چه بخشی از سیستم تحت تاثیر قرار گرفته و چه انتظاراتی می‌تونن از نسخه جدید داشته باشن.

2. تغییرات رو دسته‌بندی کنید

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

این دسته‌بندی به افراد کمک می‌کنه سریعا تغییرات مرتبط با کار خودشون رو پیدا کنن و نیازی به جستجوی زیاد نداشته باشن.

3. چرایی تغییرات رو توضیح بدید

یکی از مهم‌ترین بخش‌های یه چنجلاگ خوب اینه که دلیل پشت هر تغییر رو توضیح بدید. توضیح اینکه چرا تصمیم به اعمال یک تغییر گرفته شده، نه تنها به فهم بهتر تغییر کمک می‌کنه، بلکه به یادآوری در آینده هم کمک می‌کنه. برای مثال:

"رنگ دکمه‌ها از آبی به سبز تغییر کرد تا هماهنگی بیشتری با برند جدید ایجاد بشه و دسترسی کاربران با نقص بینایی بهبود پیدا کنه."

این توضیحات به دیگران کمک می‌کنه که تغییرات رو بهتر درک کنن و متوجه بشن که هدف پشت هر تصمیم چی بوده.

4. تاریخ اعمال تغییرات رو ذکر کنید

ذکر تاریخ انتشار هر نسخه بسیار مهمه. این کار به تیم‌ها کمک می‌کنه نسخه‌های مختلف رو با هم مقایسه کنن و بدونن که هر تغییر چه زمانی اعمال شده. همچنین، اگه در آینده مشکلی پیش بیاد، می‌دونید که از چه تاریخی باید تغییرات رو بررسی کنید. برای مثال:

نسخه 2.0.1 - تاریخ انتشار: 5 اکتبر 2024 این‌جوری همیشه یه نقطه مرجع دارید تا بتونید دقیقاً متوجه بشید که چه چیزی کی تغییر کرده.

5. تغییرات بزرگ رو برجسته کنید

مسلما گاهی بعضی از تغییرات مهم‌تر از بقیه‌ هستن و نیاز به توجه ویژه‌تری دارن. این تغییرات بزرگ رو حتما با یه ساختار خاص یا یک نشانه‌ خاص برجسته کنید تا هم تیم‌ها و هم کاربران متوجه این تغییرات بشن. برای مثال:

ویژگی جدید: اضافه شدن تم تاریک به سیستم.
اصلاح مهم: بهبود عملکرد بارگذاری صفحه اصلی در مرورگرهای قدیمی.

این موارد معمولا تغییراتی هستن که کاربرها رو مستقیما تحت تاثیر قرار می‌دن و برجسته‌سازی اون‌ها می‌تونه از سردرگمی جلوگیری کنه. این نکات به شما کمک می‌کنه تا یه چنجلاگ منظم، شفاف و قابل فهم بنویسید که هم به تیم‌تون کمک می‌کنه و هم کاربران رو از تغییرات آگاه می‌کنه.

فریمورک‌های مدیریت چنجلاگ

نسخه نگاری معنایی (Semantic Versioning)

نسخه‌گذاری معنایی یا Semantic Versioning، روشی استاندارد و کاربردی برای شماره‌گذاری نسخه‌های جدید یک پروژه است. این سیستم از سه عدد تشکیل شده: X.Y.Z، که هر کدوم نشان‌دهنده نوع خاصی از تغییرات در سیستم هستن که سعی میکنم جدا جدا راجب هر کدوم صحبت کنیم.

  1. (نسخه اصلی یا MAJOR) X : این عدد زمانی افزایش پیدا می‌کنه که تغییرات بزرگی در سیستم انجام بشه که ممکنه باعث ناسازگاری با نسخه‌های قبلی بشه. این نوع تغییرات معمولا نیازمند اصلاحاتی در سیستم کاربران هست، چون ویژگی‌ها یا ساختارهای قبلی حذف یا کاملا تغییر پیدا کردن. برای مثال وقتی از نسخه 1.0.0 به 2.0.0 می‌رید، به این معنیه که تغییرات بزرگی اتفاق افتاده و ممکنه بعضی چیزها دیگه کار نکنن یا نیاز به آپدیت داشته باشن.
  2. (نسخه فرعی یا MINOR) Y : این عدد زمانی تغییر می‌کنه که ویژگی‌های جدیدی به سیستم اضافه بشن، بدون اینکه نسخه‌های قبلی دچار مشکل بشن یا ناسازگار باشن. برای مثال اگر یه کامپوننت جدید به دیزاین سیستم اضافه بشه یا یک ویژگی جدیدی بدون تغییر در ویژگی‌های قبلی افزوده بشه، شماره نسخه فرعی افزایش پیدا می‌کنه (برای مثال از 1.0.0 به 1.1.0).
  3. (وصله یا PATCH) Z : این عدد زمانی تغییر می‌کنه که باگ‌ها یا ایرادات کوچیک رفع بشن، بدون اینکه تغییری در ویژگی‌های اصلی یا ساختار سیستم رخ بده. این نوع تغییرات معمولا تاثیری روی کاربران نداره جز اینکه سیستم پایداری بیشتری پیدا می‌کنه یا مشکلات جزئی برطرف می‌شن (برای مثال از 1.0.0 به 1.0.1).

استفاده از Semantic Versioning باعث می‌شه تا کاربران به راحتی بفهمن چه نوع تغییراتی در هر نسخه انجام شده و اینکه آیا نیازی به تغییرات اساسی در پروژه‌شون هست یا نه.

Semantic Versioning نسخه نگاری معنایی
Semantic Versioning نسخه نگاری معنایی

کیپ چنجلاگ (Keep a Changelog)

کیپ چنجلاگ Keep a Changelog یک فرمت استاندارد برای نوشتن چنجلاگ هست که به شما کمک می‌کنه تغییرات پروژه رو به روشی سازمان‌دهی شده و شفاف مستند کنید. این روش کمک می‌کنه تا کاربران و هم‌تیمی‌های شما بتونن به راحتی تغییرات هر نسخه رو بررسی کنن و متوجه بشن چه تغییراتی انجام شده و چرا.

این فرمت به طور معمول تغییرات رو به چند دسته مختلف تقسیم می‌کنه:

  1. (اضافه شده) Added : هر ویژگی، کامپوننت، یا قابلیت جدیدی که به دیزاین سیستم اضافه شده باشه، در این بخش ثبت می‌شه. برای مثال اضافه شدن یه دکمه جدید یا یک رنگ تازه به پالت.
  2. (تغییر کرده) Changed: در این بخش، تغییراتی که روی ویژگی‌ها یا کامپوننت‌های موجود اعمال شده، ثبت می‌شن. برای مثال اگه رنگ دکمه‌ها تغییر کنه یا سبک تایپوگرافی اصلاح بشه.
  3. (منسوخ شده) Deprecated : این دسته شامل ویژگی‌ها یا کامپوننت‌هایی می‌شه که قراره در آینده حذف بشن و به مرور زمان از استفاده خارج می‌شن. نوشتن این تغییرات به تیم‌ها کمک می‌کنه تا بدونن که چه چیزهایی دیگه نباید استفاده بشن و آماده حذف‌شون باشن.
  4. (حذف شده) Removed : این بخش برای مواردی استفاده می‌شه که از سیستم کاملا حذف شدن. برای مثال
    اگه یک کامپوننت قدیمی که دیگه کاربردی نداره، به طور کامل حذف بشه.
  5. (اصلاح شده) Fixed : تمام باگ‌ها و مشکلاتی که در نسخه‌های قبلی وجود داشتن و حالا اصلاح شدن، در این بخش ثبت می‌شن.
  6. (امنیتی) Security : هر گونه به‌روزرسانی امنیتی که انجام شده، در این دسته قرار می‌گیره.
Keep a Changelog ونه فریمورک کیپ چنچلاگ
Keep a Changelog ونه فریمورک کیپ چنچلاگ

چنجلاگ به عنوان ابزاری برای بهبود ارتباطات تیمی

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

اهمیت چنجلاگ در دیزاین سیستم‌ها

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