ببخشید ابزار مهندسی نرم‌افزارتون چیه؟

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

Chester Arnold, Correction, 1987, Oil on Linen - مهندسی و ابزار
Chester Arnold, Correction, 1987, Oil on Linen

ببخشید ابزار مهندسی نرم‌افزارتون چیه؟
لطفاً این سؤال را از یک مهندس نرم‌افزار یا تیم توسعه نرم‌افزار یا یک مدیر پروژه نپرسید!

چنانچه در حوزه توسعه نرم‌افزار باشید یا مدیریت گروه‌های توسعه را بر عهده داشته باشید، احتمالاً خیلی برایتان پیش‌آمده که وقتی کسی از کار شما خوشش آمده است در اولین سؤال از شما می‌پرسد: ببخشید ابزار مهندسی نرم‌افزارتون چیه؟! یا از چه چارچوبی برای این پروژه استفاده کردید؟!

فکر نمی‌کنم این خیلی منطقی باشد که با دیدن یکی از شاهکارهای مهندسی نرم‌افزار دنیا، به این فکر کنیم که مهندسان، آن محصول را با چه روش مهندسی یا ابزار توسعه، تولید کرده‌اند؟! یا اینکه چنانچه ما هم‌چنین مدل یا ابزار یا چارچوب توسعه‌ای را در اختیار داشتیم قاعدتاً می‌توانستم اثری مشابه را خلق کنیم!

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

  1. مباحث هنری مهندسی نرم‌افزار – خلاقیت تیمی، تجربه کافی، هنر مباحثه و حل مسئله، تیم پروری و گردانی، محصول سازی، هنر نیازکاوی و نیازسنجی
  2. مباحث فنی مهندسی نرم‌افزار – استفاده از تجهیزات، ابزار، چارچوب‌های مختلف و اصول کار مهندسی

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

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

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

بنابراین بهتر است بدانیم که اگر یک محصول نرم‌افزاری یا یک کارِ گروهی چابک، چشم ما را خیره می‌کند و یا مبهوت زیبایی روابط کاری، هوش تیمی و قدرت پاسخگویی سریع آن‌ها به مشتریانشان می‌شویم و از دیدن آن لذت می‌بریم، عاملی که باعث لذتمان شده در حقیقت رعایت درست اصول هنری مهندسی نرم‌افزار در آن گروه یا محصول است و نه مدل، نسخۀ یا چارچوب طلایی و گران‌قیمت مورداستفاده‌شان!

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

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

بنابراین وقتی یک محصول یا گروه خوب می‌بینیم بهتر است آن را ازلحاظ هنر مهندسی بررسی کنیم و به‌جای این سؤال: «ببخشید ابزار مهندسی نرم‌افزارتون چیه ؟!!»، بپرسیم: «میتونم بپرسم چطور به این هماهنگی و یکپارچگی محصول دست‌یافتید؟!» و یا اینکه: «این چارچوب مهندسی را چگونه پیاده‌سازی کردید؟!»

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

👋

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *