زوم معنایی و مینی‌مپ‌ها: شهر نرم‌افزاری رو راحت‌تر بگرد!

Fall Back

اگه تا حالا با ابزارهای بصری (Visualization Tools) برای نرم‌افزار کار کردی، حتماً متوجه شدی که خیلی وقتا می‌تونن کمک کنن راحت‌تر کد رو بفهمی و توی معماریش گم نشی. اصل قضیه اینه که این ابزارا یه جور استعاره تصویری بهت میدن؛ یعنی به جای این‌که هی مجبور باشی متن و کد و دیتا رو تو ذهنت بچرخونی، می‌تونی تصویری اون رو ببینی.

ولی یه نکته مهم هست: وقتی داده زیاد بشه، ابزار تصویری خودش می‌تونه یه جورایی شلوغ و گیج‌کننده بشه! اینجاست که بحث «مقیاس‌پذیری بصری» (Visual Scalability) پیش میاد. یعنی ابزاری که بتونه وقتی داده کمه یا زیاده، باز هم مفید و قابل فهم باشه.

حالا تو این مقاله، دوتا راهکار باحال برای حل این مشکل پیشنهاد دادن، مخصوصاً تو محیط‌های سه‌بعدی که بهشون «شهر نرم‌افزاری» (Software City) میگن. شهر نرم‌افزاری یعنی یه جور نمایش تصویری از کل ساختار یه نرم‌افزار که شبیه به شهره؛ مثلاً ساختمان‌هاش می‌شن ماژول یا کلاس یا پکیج‌های مختلف!

راهکار اولشون اسمش هست «زوم معنایی» (Semantic Zoom). این زوم معنایی فرق داره با اون بزرگ‌نمایی ساده که فقط همه‌چی رو بزرگ‌تر نشون میده. این یکی با توجه به فاصله دوربین مجازی به هر بخش، جزییات بیشتری یا خلاصه‌تر نشون میده. یعنی اگه نزدیک‌تر شی، جزییات ریز مثل متد و ویژگی‌ها رو می‌بینی، اگر دور شی فقط بخش‌های اصلی رو نشون میده. اینجوری دیگه وقتی تو یه پروژه بزرگ گم شدی، لازم نیست همه رو بری زیر و رو کنی!

راهکار دوم هم «مینی‌مپ» (Mini-Map) هست، که خیلی‌ها باهاش تو بازی‌ها آشنا هستن! اینجا هم یه نقشه کوچیک دوبعدی از کل شهر نرم‌افزاری گوشه تصویرت میاد که نشون میده الان کجایی و بقیه چیزا کجان. با این روش پیدا کردن قسمت مورد نظر کلی آسون‌تر میشه.

جالبیش اینه که این ایده‌ها رو با یه ابزار اوپن‌سورس به اسم ExplorViz اجرا کردن. ExplorViz یه ابزار تحت وبه که دقیقا مدل شهر نرم‌افزاری هست و تمرکزش هم روی نشون دادن اتفاقات لحظه‌ای (Live Trace Visualization) تو نرم‌افزاره. یعنی هم می‌تونی ساختار رو ببینی، هم لحظه‌ای ببینی کدوم بخش‌ها دارن کار می‌کنن.

برای اینکه ببینن این دوتا راهکار واقعاً به درد می‌خورن یا نه، دوتا مطالعه کاربری (User Study) انجام دادن. نتایج این مطالعات نشون داده که هم زوم معنایی، هم مینی‌مپ خیلی به ساختارپیمایی تو نرم‌افزار کمک می‌کنن، به‌خصوص اگه پروژه بزرگی داشته باشی یا بخوای تیمی با بقیه نرم‌افزار رو مرور کنی (Collaborative Software Exploration یعنی جایی که چند نفر باهم دنبال یه بخش از نرم‌افزار می‌گردن یا بررسیش می‌کنن).

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

خلاصه‌اش: اگه دوست داری کل نرم‌افزارت رو مثل یه شهر سه‌بعدی ببینی، گم نشی و راحت‌تر بخشای مختلف رو پیدا کنی، ترکیب زوم معنایی و مینی‌مپ خیلی به کارت میاد. یه ویدیوی دموی ساده هم ساختن که می‌تونی اینجا تماشا کنی: https://youtu.be/LYtUeWvizjU

منبع: +