بایگانی برچسب: s

رفتار نرم افزار دربرابر خطا

تصویری که کاربری خیالی را در مواجهه با خطا نشان می دهد

مدتها بود تمایل داشتم مقاله ای درباره رفتار نرم افزار در برابر خطا بنویسم. بسیاری از نرم افزارها رفتار درستی در زمان بروز خطا از خود نشان نمی دهند. این رفتار اشتباه، منجر به آزردگی کاربر می شود و او را در استفاده از نرم افزار با مشکل مواجه می کند. امروز سرانجام فرصتی برای نوشتن این مقاله به دست آوردم. امیدوارم مورد استفاده قرار بگیرد.

در سال ۱۹۸۶ دون نورمن (Don Norman) و کلیتون لوییس (Clayton Lewis) مقاله ای را با عنوان طراحی برای خطا (Designing for error) در کتاب User-Centered System Design چاپ کردند. آنچه در ادامه می خوانید خلاصه این مقاله (با کمی تغییر) است.

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

  • فایل یا دایرکتوری مقصد موجود نیست
  • خطا در اتصال به سرویس دهنده
  • خطا در نوشتن فایل در دایرکتوری مقصد

اما آیا استفاده از کلمه خطا (Error) در چنین شرایطی درست است؟ نویسندگان مقاله می گویند خیر! چون خطا کلمه ای است که عموما با شنیدن آن، دنبال مقصر می گردیم. این کلمه بار منفی دارد و کاربر با دیدن آن احساس می کند ناتوانی او باعث خطا شده، در حالیکه نرم افزار نتوانسته به درستی به درخواست یا ورودی کاربر پاسخ دهد. بنابراین نویسندگان مقاله استفاده از هر کلمه دیگری را در این شرایط، بر خطا، مقدم می دانند. به علاوه انسانها همان طور که با دیگر انسانها در تعاملند، با کامپیوترها تعامل (Interact) می کنند. سیستمی که مدعی تعاملی بودن است باید همان طور که دو طرف یک گپ و گفت سعی در رفع اشکالات کلامی و مفهومی هم می کنند (تا حرف هم را بفهمند) سعی کند به کاربر کمک کند و اشکالات او را رفع کند.

اما آیا می توان “خطاهای” کاربر را دسته بندی کرد؟ به طور کلی کاربران هدف یا مقصودی (Intention) برای استفاده از نرم افزار دارند:

  • اگر هدف و مقصود کاربر درست باشد اما عملی که برای دست یافتن به آن انجام می دهد اشتباه باشد او مرتکب لغزش (Slip) شده است
  • اگر هدف و مقصود به کلی اشتباه باشد کاربر مرکتب اشتباه (Mistake) شده است

عموما کسانی که در استفاده از نرم افزار خاصی خبره هستند دچار لغزش می شوند چون کارها را ناخودآگاه (به علت تمرین و تکرار) و بدون دقت انجام می دهند.

اما رفتار نرم افزارها در برابر خطا به چند دسته تقسیم می شود؟ به طور کلی می توان رفتار نرم افزارها در برابر خطا را به شش دسته زیر تقسیم کرد:

  1. Gag: در این حالت سیستم کار مورد نظر کاربر را انجام نمی دهد. این توقف کاربر را آگاه می کند که خطایی رخ داده، اما کاربر متوجه نمی شود این خطا چیست. برای مثال وقتی سعی می کنید ماشین را روشن کنید اما هیچ اتفاقی نمی افتد. در این حالت متوجه می شوید که مشکلی وجود دارد اما نمی توانید تشخیص دهید این مشکل چیست؟
  2. Do Nothing: در صورت بروز خطا سیستم، هیچ عکس العملی از خود نشان نمی دهد. این روش تنها در شرایطی قابل استفاده است که کاربر متوجه شود در پاسخ به درخواست وی هیچ اتفاقی نیفتاده است، در غیر این صورت ممکن است کاربر به اشتباه فکر کند درخواستش انجام شده است.
  3. Warn: در این حالت در صورت بروز خطا یک اخطار به کاربر نمایش داده می شود اما سیستم به کار خود ادامه می دهد. برای مثال در حین کپی فایل سیستم به کاربر اطلاع می دهد دیسک در حال پر شدن است اما به کپی فایل ادامه می دهد.
  4. Self-Correct: در این روش در صورت خطای کاربر، سیستم سعی می کند به صورت خودکار هدف کاربر را تشخیص و کار مورد نظر او را انجام دهد. این مکانیزم تنها در شرایطی مفید است که بتوان کار انجام شده توسط سیستم را به راحتی لغو کرد. مثالی از این سیستم ها را می توان در برنامه هایی که به صورت خودکار کلمات تایپ شده کاربر را کامل می کنند مشاهده کرد.
  5. Teach Me More: در این حالت اگر نرم افزار نتواند درخواست کاربر را به درستی درک کند از کاربر می خواهد اطلاعات بیشتری در اختیارش قرار دهد. برای مثال دیکشنری هایی که برخی از کلمات را ندارند به کاربر امکان می دهند کلمه ناموجود را اضافه کند.
  6. Let’s Talk About It: این روش که قدمی به سوی تعاملی تر شدن برنامه ها است سعی می کند با برقراری دیالوگ با کاربر مشکل را حل کند. برای مثال با پرسیدن مجموعه ای از سوالات.

توجه داشته باشید رفتار نرم افزار در برابر خطا می تواند ترکیبی از موارد فوق باشد.

آخرین نکته ای که باید در مورد رفتار نرم افزار دربرابر خطا به آن توجه شود پیغام های خطا هستند. پیغام خطا (در صورت نمایش) باید دو نوع اطلاعات مختلف در اختیار کاربر قرار دهد:

  1. اینکه خطایی رخ داده است (Detection of error)
  2. اینکه خطا در چه سطحی از نرم افزار اتفاق افتاده (Identification of error)

عموما پیغام های خطا مورد اول را در اختیار کاربر قرار می دهند اما اطلاعات دقیقی در مورد مکان و علت دقیق رخ دادن خطا به کاربران نمی دهند و این امر می تواند باعث سردرگمی کاربران شود.

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

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

دروغ های فنی در پروژه های نرم افزاری

دروغ گویی در پروژه های نرم افزاری بسیار رایج است!  اصولا دروغ گو ها در پروژه های نرم افزاری خوب پیشرفت می کنند. به نظرم یکی از دلایل این پیشرفت، ماهیت غیر قابل لمس نرم افزار است. اگر در پروژه های نرم افزاری کار کرده باشید احتمالا با این پدیده مواجه شده اید. در این باره مقالات متعددی وجود دارد. در یکی از این مقالات که رابرت گلس و سایرین با عنوان “Lying on software projects” به چاپ رسانیده اند اطلاعات جالبی در این باره وجود دارد. که در این پست باهم به بررسی آن می پردازیم.

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

  • افزایش میزان فروش نرم افزار
  • دروغ گویی در مقایسه با گفتن حقیقت مزایای بیشتری دارد
  • خوب جلوه کردن در نظر مدیران یا مشتریان
  • اعتماد به نفس کاذب
  • پنهان کردن اشتباهات
  • تلاش برای کاهش بار کاری

طبق مشاهدات من بیشتر دروغ ها به علت خوب جلوه کردن در نظر مدیران (یعنی حقوق و مزایای بهتر)، پنهان کردن اشتباهات (بازهم حقوق و مزایای بهتر) و اعتماد به نفس کاذب (خود نابغه پنداری) بسیاری از نیروهای مدیریتی و اجرایی است که در حیطه نرم افزار کار می کنند.

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

این دروغ گوهای خوش خط و خال به راحتی با مجموعه ای دروغ که اثبات خلاف بودن آنها به راحتی ممکن نیست و تنها با گذشت زمان و به بار آوردن خسارات برای مدیران مشخص می شود اعتماد مدیران را جلب کرده و به سادگی یک شبه ره صد ساله می روند. البته به نظر من اگر مدیر خود دروغ گو نباشد اما به راحتی فریب این دروغ گویان را بخورد یعنی مدیر خوبی نیست! مدیریت صحیح نیازمند سنجه (Metric) است تا بتوان با سنجه ها تصمیم گیری کرد. ویژگی که اکثر مدیران ما از آن بی بهره اند.

البته ماه هیچ گاه پشت ابر نمی ماند…

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

نرم افزارهایی برای مراقبت از چشم

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

مدتی قبل ارائه دنیل جرجیو در تد با موضوع “چگونه تکنولوژی بینایی ما را از بین می برد” را دیدم. پیشنهاد می کنم این ویدئو را مشاهده کنید. در این ویدئو سخنران نحوه آسیب دیدن چشمان در مقابل صفحه نمایش کامپیوتر را شرح داده و راه حلی نرم افزاری و رایگان به نام Iris که روی همه سیستم عامل ها قابل استفاده است، ارائه می دهد. می توانید نسخه این نرم افزار که با سیستم عامل مورد استفاده تان سازگار است را از اینجا دانلود کنید.

اما Iris تنها راه حل موجود نیست. نرم افزارهای بسیار دیگری هم وجود دارند. در این میان از نظر بنده Eye care plus هم نرم افزار بسیار خوبی است. این برنامه قابلیت نصب روی گوشی اندروید شما را داشته و روزی سه بار (صبح، ظهر و شب) مجموعه تمرینات بسیار خوبی به شما پیشنهاد می دهد. اگر تا به حال به اپتومتریست مراجعه کرده باشید ممکن است با برخی از این تمرینات آشنا باشید. این نرم افزار طراحی و رابط کاربری بسیار مناسبی دارد و پیشنهاد می کنم حتما آن را امتحان کنید. می توانید این نرم افزار را از اینجا دانلود و نصب کنید

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

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید