انجمن انفورماتیک ایران انجمن انفورماتیک ایران انجمن انفورماتیک ایران
گزارش کامپیوتر شماره 234, ویژه مرداد و شهریور ماه 96 منتشر شد. دوشنبه  ٢٩/٠٨/١٣٩٦ ساعت ٠٧:١٧
 

سیستم خوب به زبان ساده

امیر صدیقی
کارشناس تحقیق و توسعه ـ شرکت تورین تن
پست الکترونیکی: amir_sedighi@yahoo.com


مقدمه
پس از سال‌های طولانی آشنایی و استفاده از سیستم‌های نرم‌افزاری گوناگون، چیزی یافته‌ام که برایم جالب و گفتنی است. اولاً بسیار خوش شانس بوده‌ام که از نوجوانی با کامپیوترهای خانگی آشنا شده و با طیف وسیعی از آن‌ها ساعات بسیاری را به سر برده‌ام.
به یاد دارم سینکلر, کمودور, آمیگا و سونی تنها سیستم‌های خانگی موجود در آن زمان بودند.
همچنین تولد و رشد کامپیوترهای شخصی را دیده و درک کرده ام. دگردیسی سری XT و تکامل آن تا آنچه هم اکنون مورد استفاده است در طی ۲۰ سال و گاهی انقراض برخی سیستم‌های قدرتمند از جمله OS/2 و آمیگا را نیز شاهد بوده‌ام. در مقایسه با آن روزها، ابزار‌های برنامه‌نویسی بسیار تغییر کرده‌اند. ولی با کمال تعجب کیفیت کاربری چندان تغییر نکرده است. چرا که همواره سیستم‌ها و ابزار‌های خوب و بد یافت می‌شده‌اند که ما را در کاربری سیستم‌ها یاری کرده یا به دشواری انداخته‌اند. از میان انبوه سیستم‌هایی که در دسترس بوده‌اند در جایی که حق انتخاب داشته‌ایم،‌ از آنچه خوشایند ما بوده است بهره گرفته‌ایم.
امروز پس از سال‌ها آشنایی با این طیف متنوع از محصولات نرم‌افزاری و سخت‌افزاری می‌توانم بگویم که در این وادی قادر به شناسایی یک سیستم خوب و ماندنی از میان بسیاری سیستم‌های ناپایدار و رفتنی هستم. که البته این به لطف علاقه شخصی و فرصت‌هایی بوده که در اختیارم نهاده شده است.
فکر می‌کنم اشاره به آنچه بر من گذشته است به خواننده حداقل اعتماد لازم برای دنبال کردن این نوشته را بخشیده و وی را ترغیب به دنبال کردن موضوع نماید.
در اینجا آنچه به آن سیستم خوب می‌گویم، می‌تواند شامل سیستم عامل،‌ محیط برنامه‌سازی، پردازشگر لغات، نرم‌افزارهای کاربردی و یا هر آنچه به طیف وسیعی از کاربران سرویس می‌دهد باشد.
برای معرفی سیستم خوب به ناچار برخی مفاهیم مرتبط را نیز به‌کار گرفته‌ام.

تعریف
تعریف سیستم خوب با توجه به علایق متفاوت و رویکردهای گوناگون کاربران ممکن است کمی دشوار به‌نظر برسد،‌ ولی با پرهیز از ورود به جزییات می‌توان به تعریفی کلان دست یافت. به‌طور کلی سیستم خوب، ‌سیستمی است که کاربران از به‌کار گرفتن آن احساس رضایت نمایند.
سطح رضایت کاربر و اندازه و مقیاس سیستم رابطه‌ای دارند که در ادامه می‌آید.
توجه فرمائید که نیاز کاربر با انتظارات وی دو موضوع متفاوت و مجزا هستند. نیاز کاربر عبارت از الزام‌هایی است که کسب و کار وی بر وی تحمیل می‌نماید. در حالی‌که انتظارات وی متناسب با محصولی است که وی به‌کار می‌گیرد.
انتظاری که شما از یک ماشین رنو 5 دارید با انتظاری که از یک مرسدس بنز 500 کلاس اس دارید بسیار متفاوت هستند. این درحالیست که ممکن است نیاز شما توسط رنو 5 یا حتی یک دوچرخه پاسخ داده شود.
در اینجا چالشی جالب جریان دارد. در حالی که کاربر با دریافت پاسخ انتظارات خود از سیستم به ارزیابی سیستم می‌پردازد، این خود سیستم است که دامنه و عمق انتظارات کاربر را تعریف می‌کند.
کاربر به‌طور نانوشته و ضمنی قراردادی را قبول کرده است. این قرارداد از سوی سیستم نیز به سادگی بیان شده و مورد تایید است. گویی کاربر و ماشین به توافقی مخفی دست یافته‌اند.
برای مثال کاربری که از Notepad ویندوز استفاده می‌کند با اجرای Notepad و بارگیری آن در حافظه ماشین،‌ انتظارات خود را در ذهن خود فراخوانی می‌نماید. وی به اندازه Notepad از ماشین انتظار دارد. و البته پاسخ خود را می‌یابد. در مقایسه با کاربری که MS-Word را در حافظه ماشین بارگیری می‌نماید و کاملاً ناخود آگاه انتظاراتی وسیعتر را در ذهن خود فرا می‌خواند انتظارات کاربر سیستم کوچکتر بسیار کمتر از انتظارات وی نسبت به سیستم بزرگتر و گرانتر است.
تا کنون دیدیم که رضایت کاربر با برآورده شدن انتظارات وی حاصل می‌شود. همچنین انتظارات وی متناسب با ادعای سیستم از نظر کمَی و کیفی رشد می‌کند.
با توجه به آنچه گفته شد به چند حکم ساده دست می‌یابیم:
میزان رضایت کاربر ارتباطی به وسعت سیستم ندارد بلکه به میزان دریافت پاسخ مناسب به انتظاراتش بستگی دارد. همچنین انتظار کاربر متناسب با ادعای سیستم رشد می‌کند. منظور از ادعای سیستم، خدمات و قابلیت‌هایی است که سیستم نسبت به ارائه آن‌ها خود را متعهد نموده است.
پس بین یک سیستم خوب و یک سیستم بزرگ الزاما ارتباطی وجود ندارد. چراکه خوب بودن یک سیستم کیفیتی است که به ابعاد آن بستگی ندارد. البته می‌توان به یک سیستم بزرگ خوب نیز اندیشید ولی باید در نظر داشت که اندازه سیستم بیانگر تعهدی است که شما در قبال کاربرخود می‌پذیرید.
برای مثال ممکن است Notepad بسیار بهتر از MS-Word کاربر خود را راضی نماید. توجه کنید با وسیع شدن سیستم بر انتظارات کاربر و هزینه کسب رضایت وی می‌افزایید.
از سوی دیگر فرآیند رشد و ارتقاء سطح کاربری در کسب و کارهای گوناگون منجر به توسعه و بهره‌برداری از امکانات بیشتر می‌گردد.
پس کاربران ناچارند برای پاسخگویی به نیازهای کسب و کار خود از سیستم‌های مناسب بهره گیرند.
در یک سیستم اطلاعاتی حداکثر میزان کاربری سیستم، کاملاً وابسته به وجود امکانات و کیفیت ارایه خدمات سیستم است.
برای مثال باوجودی که Notepad ویرایشگر مناسبی است، برای تولید متنی مانند آنچه می‌خوانید، کافی نبوده و می‌بایست از ابزارهای بزرگتر مانند MS-Word استفاده کرد.
سعی کردم این موضوع را با فرمول‌های ساده ریاضی به‌شکل زیر نمایش دهم:

 

توضیح

  فرمول

1

انتظار کاربر به تناسب اندازه و بهای سیستم رشد می‌کند.

2

رضایت کاربر در یافتن پاسخ مناسب برای خواسته‌ها و انتظاراتش است.

(توجه : فرمول‌ها برای بیان نسبت‌ها آمده‌اند و مبنای دقیق ریاضی ندارند.)

بررسی و شناسایی رشد انتظارت کاربر از یک سیستم کار دشواری نیست. به مثال زیر توجه کنید:
شما هنگام بهره‌برداری از اغلب سیستم‌های متداول انتظار دارید با کلیک راست کردن بر روی شمایل مورد نظر، پاسخی برای سطحی از نیازهای خود بیابید. این درحالی است که به‌یاد نمی‌آورید چه زمانی آموخته‌اید که کلیک راست می‌تواند به شما کمک کند. در واقع ما کلیک راست را به عنوان یک تکنیک ساده و روزمره بارها و بارها استفاده نموده‌ایم و آن‌را به عنوان یک راهکار مورد قبول پسندیده‌ایم. شاید بهره‌گیری از کلیدهای عملیاتی یا هر روش دیگری برای برخی کاربران مناسب‌تر باشد. ولی این از ارزش کلیک راست نمی‌کاهد. در واقع قابلیت کلیک راست به یکی از مفاد قرارداد (ضمنی) بر آورده‌سازی نیازهای ابتدایی کاربران بدل شده است.
این در حالی‌است که در گذشته‌ای نه چندان دور برای به‌کارگیری رفتارهای یک برنامه می‌بایست نام فایل آن را تایپ می‌نمودیم و برای شناسایی رفتارها و امکانات از سوئیچ – h یا – Help استفاده می‌نمودیم.
در سیستم‌های پیشرفته‌تر می‌توانستیم اطلاعات تکمیلی را نیز بیابیم ولی خبری از کلیک راست نبود. و البته انتظاری هم نداشتیم که با کلیک راست روی نام یک فایل اتفاقی بیافتد. زیرا هنوز موش متولد نشده بود و یا به این درجه از بلوغ نرسیده بود.
عواملی مانند گذر زمان و یا پیشرفت فناوری‌ها به کاربران سیستم‌ها، فنون و تکنیک‌هایی را می‌آموزد که آرام آرام و همچون زبان مادری در ذهن آن‌ها جا می‌گیرد.
این یافته‌ها و آموخته‌ها با استفاده بیشتر, به‌صورت قانونی لایتغیر در می‌آید. امروز به گونه‌ای به تلفن، موبایل و اینترنت عادت کرده‌ایم که گویی همواره در زندگی ما حضور داشته‌اند. این عادت‌ها در شکل‌گیری انتظارات ما نسبت به پدیده‌های محیطی مؤثرند.
پس به عنوان اولین قدم در جهت پاسخگویی به نیازهای کاربران می‌بایست یکپارچگی و سازگاری با آنچه به عنوان عادت پذیرفته شده است رعایت گردد. در این راستا ممکن است به‌کارگیری مکانیزم‌های هوشمندانه و خلاقانه ما توسط کاربران، بسیار دشوارتر از روش‌هایی باشد که در گذشته آموخته‌اند و به آن عادت کرده‌اند.
اصولا انسان با عادت‌ها زندگی را برای خود ساده می‌سازد. رانندگی پس از عادت کردن ساده می‌گردد. حال اگر کسی خودرویی بسازد که به جای فرمان ابزار دیگری را که اتفاقا از فرمان بهتر عمل می‌کند به دنیا عرضه کند، محکوم به شکست است. چرا که میلیون‌ها نفر انتظار دیگری از مکانیزم تغییر جهت خودرو دارند.
در این میان استثناهایی هم وجود دارد. بسیاری از ما رفتارهای وب را از طریق گوگل و یاهو آموخته و می‌آموزیم. حال هنگامی‌که این دو غول تصمیم به تغییر رویه‌ها و روش‌های کاربری می‌گیرند و هزاران هزار کاربر را با چالشی عظیم مواجه می‌کنند به واسطه پیشرو بودن در این صنعت، هر آنچه دیکته کنند پس از مدتی خوشایند خواهد بود. چرا که این‌گونه شرکت‌ها خود، به عادات کاربران شکل می‌دهند. عدم محبوبیت درگاه ‌های دیگر باوجود امکانات بسیار متنوعی که ارائه می‌نمایند، دلیلی بر این امر است. پس احتیاط کنید. تنها در صورتی اقدام به نو آوری‌های غریب در محصول خود نمائید که 1- بسیار بزرگ باشید. 2- از بازار محدودی با کاربران خاص برخوردار باشید.
از سوی دیگر متأسفانه برخی برنامه‌نویسان محصول خوب را با محصول پیشرفته (از نظر معماری و ساخت) اشتباه می‌گیرند. این فرایند تا جایی پیش می‌رود که پرداختن به فناوری و معماری جای جلب رضایت کاربر را می‌گیرد. همه ما سیستم‌های بسیاری را سراغ داریم که با وجود ساخت و معماری مناسب و برخورداری از فناوری روز، نتوانسته‌اند رضایت و پذیرش کاربران را به‌دست آورند. البته ما برنامه‌نویسان در این شرایط تقصیر را بر گردن کاربر بیچاره انداخته و وی را به نا آشنایی با علوم روز و کند ذهنی متهم می‌کنیم.
ولی واقعیت اینست که نرم‌افزار نیز یک ماشین است و باید بتواند مثل هر ماشین خوب دیگر خوش دست و قابل استفاده باشد. کاربری که می‌تواند با موبایل و اتوموبیل کار کند،‌ می‌بایست قادر به بهره‌برداری از سیستم‌های نرم‌افزاری هم باشد.
این رازی است که بزرگان این صنعت سال‌هاست آن را یافته‌اند ولی متأسفانه گاهی ما برنامه‌نویسان در ورطه بازی با فناوری‌های نوین گرفتار شده و رضایت کاربر را فراموش می‌نماییم.
در عرصه پایگاه داده هم این نمود دارد.
مقایسه سیستم ‌هایی که نصب آن‌ها خود تخصصی فراگیر می‌طلبد (مانند اراکل و DB2 ) در مقایسه با محصولات سبک، ساده، کم ادعا و پرکاربرد (مانند MySQL ) نیز مثالی است که مرا به‌فکر فرو می‌برد. پس از سال‌ها استفاده از اراکل و SQL Server به‌طور جد معتقدم MySQL برای سرویس‌دهی به سازمان‌ها و شرکت‌های کوچک یا بخش‌های کوچکی از سازمان‌های بزرگ کفایت می‌کند. البته این چیزی از ارزش‌های بی بدیل اراکل و DB2 نمی‌کاهد. در واقع تأکید من بر لزوم تناسب راه حل با نیاز‌های واقعی است.
برخی سازمان‌ها و شرکت‌ها مانند پیکان‌های مسافرکش که سیستم‌های صوتی گران قیمت و حرفه‌ای را بر روی خودروهای کهنه و مستعمل خود استفاده می‌کنند، اشتیاق عجیبی برای بهره‌گیری از بزرگترین و وسیعترین فناوری روز دارند. غافل از این‌که خانه از پای بست ویران است. این مشتریان با وجود اشتیاقی که به بهره‌گیری از فناوری اطلاعات دارند چنان خود را درگیر مشکلات غول‌های نرم‌افزاری و سخت‌افزاری می‌نمایند که به‌جای بهره‌مندی از مزایای فناوری تنها دردسرهای سرویس‌های پرهزینه و پیچیده را تجربه می‌کنند. آیا با خرید یا بهره‌گیری از فناوری بزرگ، خود ما یا سازمان ما بزرگ می‌شود؟
اصرار به بهره‌برداری از J2EE و دات نت و بهره‌برداری از کارسازهای کاربردی بزرگ همچون Web - Logic یا محصول سان و یا بهره‌برداری بی‌مورد از EJB نمونه‌ای از معضل یاد شده است. آیا قصد ما تولید سیستم خوب است یا بهره‌برداری از ابزار‌های بزرگ؟ آیا ابزار‌های بزرگ الزاماً خوب هستند؟ نام‌های بزرگ و غلط‌انداز شاید در جلب نظر مشتری مؤثر باشند ولی هزینه تولید را نیز به شکل نمایی بالا می‌برند. بهایی که برای جلب رضایت کاربری که از ابزار‌های گران‌قیمت بهره می‌بردِ باید بپردازیم بسیار سنگین‌تر از چیزی است که به سادگی و به ارزانی به‌دست می‌آید. کیفیت ساخت، ارتباطی مستقیم با فناوری تولید ندارد. کمااین‌که با گذشت سال‌ها هم چنان نرم‌افزارهای خوب را با خاطره‌ای خوشایند به یاد می‌آوریم.
گوگل بخش عمده کد‌های خود را توسط زبانی بسیار ساده ( Python ) توسعه می‌دهد. چرا که هدف گوگل ارائه سیستم خوب و جلب رضایت میلیون‌ها کاربر است.

  نتیجه‌گیری

  1. یک سیستم خوب الزاما سیستمی بزرگ نیست.
  2. احترام به عادت ها و آموخته‌های قدیمی کاربران منجر به افزایش رضایت آنان می‌گردد. راهکارهای جدید می‌بایست ارزش افزوده بسیاری به همراه داشته باشند تا مورد قبول واقع شوند. تغییر در رفتار و عادت ها هزینه بسیاری طلب می کند. اگر گوگل یا مایکروسافت نیستید، عادت ها را تغییر ندهید.
  3. برای پاسخگویی به سطوح گوناگون کسب و کار به سیستم‌های متفاوت (از نظر اندازه و کارکرد) نیازمندیم.
  4. سیستم‌ها در صورتی مورد پذیرش کاربران هستند که به نسبت ادعا و بهای خود انتظارات کاربران را به‌خوبی پاسخ دهند.
  5. راحت‌ترین راه برای تولید سیستم خوب، کم کردن ادعای سیستم و کاهش بهای آن است.
  6. برای افزایش بهای سیستم و حفظ رضایت کاربر باید امکانات سیستم افزایش یابد.
  7. آشنایی با ابزارهای گوناگون و انتخاب ابزار مناسب و پرهیز از شرکت در بازی‌های خانمان برانداز فناوری, در تولید سیستم خوب و ماندنی سهمی عمده دارد.