سیستمهای تعاملی (بخش دوم)
اهمیت درک تواناییهای بشری
این مهم است که کاربران بتوانند نحوه استفاده از یک سیستم بسیار تعاملی را درک کنند. دونالد نورمن[1] استاد علوم شناختی تعامل انسان و کامپیوتر را بهاصطلاح “گردابهایی از اجرا و ارزیابی” توصیف میکند. اصولاً این بدان معناست که کاربر هدفی را در ذهن داشته باشد و باید ازنظر طرحی که درنهایت شامل یکسری اقدامات روی سیستم باشد، آن هدف را اصلاح کند. این اقدامات منجر به تغییراتی در وضعیت سیستم میشود که باید توسط کاربر درک، تفسیر و ارزیابی شود. توسعهدهندگان سیستم رایانهای باید چگونگی درک، تفسیر، ارزیابی و پاسخگوییِ این کنشهای رایانهای توسط انسان را بفهمند.
اگرچه حتی بررسی اجمالی ادبیات ادراک در مورد انسان، پردازش اطلاعات انسانی و مهارتهای حرکتی انسان فراتر از این مرور مختصر است، اما مجموعه اصول گلچین شده و برگرفته از آن ادبیات ممکن است مفید باشد. صدها مطالعه پژوهشی در حدود حافظه کوتاهمدت انجامشده است. اینها شامل تحقیق در مورد چگونگی “تکه شدن اطلاعات”، در مورد چگونگی نگهداشتن “قطعه” در یکزمان و اینکه چگونه تعداد تکههای زمانی که اطلاعات حسی یا نمادین هستند، متفاوت است. بهطور مشابه صدها مطالعه تحقیقاتی در مورد چگونگی دستیابی به بهترین اطلاعات به حافظه بلندمدت وجود دارد. بهعنوانمثال با “ترسیم کردنِ” موضوعی با واقعیتی که نیاز به دسترسی به حافظه بلندمدت دارد، میتوان زمان دسترسی به مفاهیم نزدیک را بهبود بخشید. درنهایت هزاران مطالعه در مورد تیزهوشی و تغییر در قابلیتهای حسی و حرکتی انسان انجامشده است. همه این مطالعات منجر به اصولی برای:
- ساخت منو مربوط به محدودیت حافظه کوتاهمدت
- طراحی سیستم بر اساس تشبیههایی که مناطقی از حافظه بلندمدت را فعال میکنند
- اندازه نهایی دکمهها و آیکونها، بر اساس مطالعات مهارتهای حرکتی
- استفاده از نشانههای دیداری و شنیداری، بر اساس تواناییها و محدودیتهای حسی انسان
اگرچه این منابع تنها نوعی زمینه تحقیق گسترده و در حال رشد در ادراک انسان و استفاده از دادههای ارائهشده توسط رایانهها هستند، اما پیشرفتهایی را نشان میدهند که طراحی سیستم تعاملی را از یک هنر به یک علم مهندسی منتقل میکنند. همانطور که قبلاً نیز اشاره شد، یک سیستم دستکاری مستقیم یک سیستم است که در آن کاربر قادر به انتخاب یک شیء است و سپس مشخص میکند که چه اقداماتی باید انجام شود. این در تقابل با سیستمهای خط فرمان است که در آن کاربر بهطورمعمول یک عمل را مشخص میکند و سپس شیء را بر اساس اینکه چه اقدامی باید انجام شود انتخاب میکند. این تغییر پارادایم اساسی باعث تغییراتی در نحوه طراحی و پیادهسازی این سیستمها با کد شد.
الگوی اصلی برنامهنویسی باید از رویکرد فرآیندمحور به یک دیدگاه رویدادمحور تغییر کند. در سیستمهای قبلی، فرآیند اصلی برنامه آنچه کاربر میتوانست انجام دهد را کنترل میکرد. اکنون، این امکان را برای کاربر فراهم کرده است که با انتخاب یک شیء مثلاً یک پنجره، یک نماد یا یک جعبه متن یکسری اقدامات گسترده را آغاز کند. این امر برای جمعآوری حوادث و رسیدگی به آنها به روشی نیاز داشت. سیستم X Window در یونیکس یکی از سیستمهای محبوب اولیه برای این کار بود. هر جزء گرافیکی واسط قادر به تولید یک یا چند رویداد بود. بهعنوانمثال ممکن است یک پنجره برای یک رویداد باز یا بسته شود. بهطور مشابه ممکن است یک دکمه فشار داده شود، یا متن در یک جعبه متن تغییر یابد. رویدادهای ماوس نیز وجود دارد-مانند زمانی که ماوس وارد یک پنجره میشود یا روی یک دکمه حرکت میکند. این رویدادها برای مدیر پنجره ارسال میشود. برای سیستمهای اپل و تمام سیستمهای ویندوز از ویندوز 95، این قابلیت در سیستمعامل تعبیهشده است.
وظیفه برنامهنویس نمایش مجموعهای هماهنگ از مؤلفههایی است که میتوانند رویداد ایجاد کنند. برنامهنویس همچنین موظف است کدی را بنویسد که هنگام وقوع یک رویداد، برخی اقدامات را آغاز کند. به این قطعات کد، عملکردهای مربوط به وقایع گفته میشود. هنگامیکه برنامهنویس مواردی را که ممکن است باعث ایجاد رویدادها و کد برای پاسخ به آن رویدادها شوند، تعریف کرده است، وظیفه نهایی برنامهنویسی این است که کنترلکنندههای رویداد[2] را بهعنوان علاقهمندان به کلاسهای مشخصی که توسط اشیاء بخصوصی تولید میشوند، “ثبتنام” کند. هنگامیکه آن وقایع رخ میدهند، مدیر پنجره آنها را به کنترلکننده رویداد مناسب ارسال میکند. در محیطهای برنامهنویسی مبتنی بر شیء و شیءگرایی، این وظیفه رسیدگی به رویدادها از طریق کلاسهای شیء انجام میشود که روشهای پیشفرض دستیابی به رویداد را با کلاسهای خاصی از اشیاء مرتبط میکند. بهعنوانمثال کد نحوه تغییر یک دکمه هنگام فشار دادن آن، ممکن است بهعنوان یک روش پیشفرض از اشیاء دکمه ارائه شود. بهطور مشابه، کلاس ممکن است کد انتشار دکمه پیشفرض را ارائه دهد. برنامهنویس میبایست هنگام آزاد شدن دکمه، بهراحتی کد دیگری را اضافه کند که برخی از اقدامات خاص برنامه را انجام دهد.
[1] Donald A.Norman
[2] Event Handlers