یکی از مباحث جالب که در درسهایی مثل «سیستمهای اتکاپذیر» و همینطور در «آزمون نرمافزار» و خیلی جاهای دیگر حتی جالب است که در مترجمی زبان هم در بحث اطمینان از صحت ترجمه توسط مترجم مطرح میشود، بحث جالبی است به نام Diversity یا «تنوع».
بحث کلی این است که برای اینکه مطمئن شوید که چیزی که تولید کردهاید، مطمئن (خالی از اشکال) است، در صورتی که برایتان ممکن است (که البته وقتی بحث مهمی مثل جان انسانها در یک فضاپیما مطرح باشد، ممکن میشود) آنرا در شرایط متنوعی دوباره تولید کنید.
در محصولات مختلف، Diversityهای مختلفی قابل تصور است، مهمترین تنوعها عبارتند از:
۱- Design Diversity یا تنوع در طراحی:
یعنی به طور مثال اگر قرار است یک نرمافزار مهم را تولید کنید، بدهید افراد یا تیمهای مختلف آنرا طراحی کنند. در این صورت اگر یکی یک مشکل داشته باشد به راحتی با مقایسه با بقیه آن مشکل کشف میشود. همان کاری که ما در آفتابگردان در مورد محصولاتمان انجام میدهیم. یک محصول تا بخواهد به مرحله نهایی تولید برسد، چندین بار به صورت پایلوت طراحی میشود. این کار باعث میشود اگر در طراحی و تحلیل پروژه زوایای پنهانی وجود داشته که ما در نظر نگرفتهایم، بالاخره خودش را در یکی از طراحیها نشان دهد و همه این موارد جمعآوری شود و نهایتاً یک طراحی که کاملتر است انتخاب شود یا دوباره طراحی با توجه به همه نکاتی که کشف شده انجام شود.
۲- Time Diversity یا تنوع زمانی:
یعنی اگر به طور مثال قرار است یک محصول را تست کنید، در زمانهای مختلف تست کنید. ممکن است شما الان که اواخر شب است یک محصول آنلاین را تست کنید و ببینید مشکلی نیست اما اگر مثلاً ساعت ۱۱ صبح که معمولاً بیشترین بار ترافیک اینترنت در این ساعت است آنرا تست کنید، میبینید به خاطر فشار زیادی که به سرور آمده، محصول نتوانسته این فشار را تحمل کند و Crash کرده.
۳- Platform Diversity یا تنوع در بستر اجرا یا Space Diversity (تنوع در فضای اجرا):
یعنی محصول را در فضاهای مختلف و اگر نرمافزار است، در بسترهای مختلف اجرا و تست کنید. مثلاً یک نرمافزار آنلاین را در مرورگرهای مختلف، در سیستم عاملهای مختلف، در گوشیها و تبلتهای مختلف تست کنید... ممکن است در مرورگر پی.سی هیچ مشکلی وجود نداشته باشد اما در موبایل اصلاً قابل استفاده نیست...
یا مثلاً یک محصول سختافزاری الان اینجا درست کار میکند اما در محیط یک شرکت که قرار میگیرد به خاطر تداخلات مغناطیسی درست کار نمیکند.
۴- Data Diversity یا تنوع در داده:
یعنی محصول را با دادههای متنوع تست کنید. مثلاً شما میخواهید یک سیستم ثبت نمره را تست کنید، در همه تستها عددهای بین 0 تا 20 وارد میکنید و سیستم هم درست کار میکند و معدل را به درستی نشان میدهد اما یک بار هم عدد منفی یا خارج از رنج 20 وارد کنید یا اصلاً یک «رشته» به جای عدد وارد کنید و بررسی کنید عکسالعمل سیستم چیست.
۵- Tester Diversity یا تنوع در تستکنندگان:
یعنی محصول را به افراد مختلف با شرایط مختلف بدهید تا با آن کار کنند و آنرا تست کنند. ممکن است ما یک نرمافزار تولید کنیم و فقط بدهیم دانشجویان رشته کامپیوتر آنرا تست کنند و اعلام کنند هیچ مشکلی نبود، اما پس از انتشار، وقتی محصول به دست افرادی که رشتهشان کامپیوتر نیست و طبیعتاً با خیلی از مفاهیم و پیشنیازهای کامپیوتری آشنا نیستند میرسد، میبینیم چقدر در کار با آن مشکل دارند! (مثلاً تقریباً همه دانشجویان رشته کامپیوتر میدانند Flash Player چیست و چطور نصب کنند که مرورگرشان را به آن مجهز کنند، یعنی قبلاً روی مرورگرشان نصب بوده اما یک کاربر معمولی که اینها را نمیداند در کار با محصول دچار مشکل میشود و خیلی نمونههای دیگر...)
یا مثلاً در بحث ترجمه، اگر ترجمه برایتان خیلی مهم است، آنرا بدهید مترجمهای مختلف ترجمه کنند و با هم مقایسه کنید.(که البته اینجا این بحث پیش میآید که از کجا بفهمیم کدام ترجمه بهتر بوده که بحث Voter پیش میآید. در مجموع اگر خودتان چندان اطلاعات ندارید، به یک Consultant یا مشاور نیاز خواهید داشت)
خیلی Diversityهای دیگر نیز قابل تصور است که نسبت به محصول و مبحث متفاوت است. (البته گاهی همه اینها را در زیرمجموعه همان Design Diversity یا «تنوع در طراحی» مطرح میکنند)
خلاصه:
به هر حال، خلاصه بحث این است که برای تولید یک محصول مطمئن (هر نوع محصولی؛ ترجمهی یک صفحه نیز یک محصول است) باید در همه مراحل به «تنوع» فکر کرد.
موفق باشید؛
حمید رضا نیرومند