Admin Admin
عدد المساهمات : 408 تاريخ التسجيل : 25/10/2011 العمر : 31 تعاليق : لا اله الا الله عدد ماكان وعدد مايكون وعدد الحركات والسكون
لاتكن جبانا أثبت وجودك في المنتدى
قل كلمتك
| موضوع: كيف تجعل برنامجك قابلا للاستخدام؟ الخميس نوفمبر 03, 2011 9:44 am | |
| مقدمة تعتبر هندسة التفاعل البشري Interaction Design فرع من فروع الهندسة أو هندسة النظم ولكننا في علم الحاسب الآلي أدخلناه ضمن ما نحب أن نسميه هندسة البرمجيات. هذه المقالة تتكلم عن جعل تصميم أي شيء بما فيها البرامج قابلا للاستخدام. و يجب أن لا ننسى أن منتجاتنا في النهاية هي للمستخدم. فإذا كان برنامجك قابلا للاستخدام فقد بلغ فائدته المرجوة طبعا بالإضافة إلى عمله الصحيح.
القابلية للاستخدام لكي نجعل البرنامج قابلا للاستخدام يجب أن نحقق ما يسمى أهداف الاستخدام Usability Goals. هذه الأهداف تضمن لنا جعل المنتج متفاعلا و فعالا و ممتعا بالنسبة للمستخدم. تضمن هذه الأهداف سلامة استخدام المستخدم للمنتج بفعالية لكي يؤدي نشاطاته أو عملياته بطريقة سريعة وفعالة.
الأهداف الستة - الفعالية effectivenesE. - الكفاءة Effecincy. - الأمان Security. - المنفعة Utility - قابلية التعلم Learnability. - قابلية التذكرMomorabilty.
والآن سنفصل في كل هدف من هذه الأهداف بتعريفه ومن ثم شرحه ونلحق كل هدف بمثال توضيحي صغير وفي النهاية نصيحة صغيرة للمصمم.
الفعالية effectivenesE
كيف يكون برنامج فعالا؟ تعرف الفعالية أنها مدى قدرة برنامجك على عمل ما ينبغي عمله.
ما معنى ذلك؟ معناه هنا بسيط وهو أن البرنامج يعمل ما هو مطلوب منه بالضبط بدون زيادة أو نقصان.
مثال: تخيل لو انك تريد برنامج محاسبة ولكن هذا البرنامج يقدم خدمات جيدة جدا مثلا خطوط جميلة او أداة للرسم!! فهل هذا برنامج فعال؟ بالطبع لا فأنت تريد برنامجا للمحاسبة فماذا يدعم الرسم ويترك المحاسبة.
نصيحة طبعا قد يكون المثال السابق ساذجا بعض الشيء. ولكن قد تفاجأ لو قلت لك ان الكثير من المبرمجين عند تصميمهم لبرامجهم يذهبون لأشياء يتقنونها جيدا ويبرزونها في برامجهم وقد لاتكون لها علاقة مباشرة بالمنتج ولكن المبرمج يعجبه أن يبرز مهارته في عمل هذه الشيء.
الكفاءة yEffecinc كيف يكون برنامج ذو كفاءة عالية؟ تعرف الكفاءة على أنها مدى قدرة برنامجك على دعم المستخدم لعمل شيء معين.
ما معنى ذلك؟ معناه أنه يجب أن تصمم برنامجك بطريقة معينة بحيث تدعم المستخدم في انجاز العمليات التي يريد أن يقوم بها.
مثال: تخيل لو انك تريد الحصول على معلومة في صفحة انترنت. فكيف تحب أن يكون حصولك عليها؟ هل تفضل الموقع الذي يجعلك تدخل 4 صفحات متتالية للحصول على تلك المعلومة ؟ أم نصف هذا العدد من الصفحات؟ لا حظ أيضا أن المستخدم يحرك المؤشر بين كل صفحة وأخرى ويضر لتتبع كل رابط لكي يصل إليها.
نصيحة قلل عدد الحركات التي يحتاج عملها المستخدم لعمل شيء ما. و إن لم تسطع فحاول أن تقلل من عناء الحركة المستمرة للمؤشر. فلا تجعل المستخدم يقرأ الصفحة كاملة ويضر الى الذهاب بالمؤشر من آخر الصفحة إلى أولها لكي يضغط على رابط يدعى "للخلف"!!
الأمان Security كيف يكون برنامج آمناً؟ يعرف الأمان هنا في هذا الموضع بأنه قدرة البرنامج على منع المستخدم من عمل أشياء غير مرغوب فيها أو أشياء فيها خطر إما على المنتج أو على المستخدم.
ما معنى ذلك؟ معناه أن يجب أن يكون في البرنامج شيئين مهمين هما القدرة على منع المستخدم من عمل أخطاء و القدرة على التراجع عن العمل في حالة الخطأ
مثال: تخيل لو أن لديك برنامجاً يقرأ رسائل البريد مثل الـOutLook ولكنك إذا حذفت الرسائل لا يسألك عن ما إذا كنت متأكدا من هذه العملية. ماذا يكون شعورك في حلة انك ظللت جميع الرسائل وقمت بمسحها خطأ؟ لنأخذ سيناريو آخر وهو أن وأنت في محرر النصوص الخاص بك وكتبت تقرير طويل وبعد ذلك ذهب للقائمة لتضغط على خيار الحفظ وتفاجأ انك ضغط بالخطأ على خيار الإغلاق لأنه بجانبه!!
نصيحة إذا كان هناك خيارات متاحة للمستخدم ، فحاول منع الخيارات التي لا تناسب الصفحة أو الحالة التي يكون عليها المستخدم. أيضا حاول فصل الخيارات المختلفة وباعد بين الخيارات الخطرة. فباعد مثلا بين خيار الحفظ وخيار الإغلاق. ووفر إمكانية التراجع في البرنامج في حالة قام المستخدم باختيار الخيار خطأ.
المنفعة yUtilit
كيف يكون برنامج ذو منفعة؟ تعرف المنفعة هنا على أنها مدى قدرة برنامجك على توفير الأدوات الممكنة للمستخدم على عمل ما يريد فعله.
ما معنى ذلك؟ معناه أنه يجب أن تصمم برنامجك بطريقة معينة بحيث توفر للمستخدم كل ما يحتاج لكي يؤدي العمل الذي يريده بالطريقة التي يريدها.
مثال: تخيل لو كان برنامج الرسام لا يتيح لك خاصية الرسم الحر!! ومع ذلك فأنت تستطيع أن ترسم أي شيء تريده ولكنك مجبر على استخدام الأدوات المتوفرة فيه لذا فسوف تمل استخدام البرنامج.
نصيحة دائما عند توفيرك الأدوات في برنامج حاول أن تجعل المستخدم حر في تصرفاته ووفر أدوات مرنة لعمل النشاطات التي يريد عملها.
قابلية التعلم Learnability. كيف يكون برنامج سهل التعلم؟ تعرف قابلية التعلم على أنها درجة سهولة التعامل مع البرنامج.
ما معنى ذلك؟ معناه أنه يجب أن تصمم برنامجك بطريقة معينة بحيث يكون سهل التعامل. من المعروف أن المستخدمين لا يحبون أن يضيعوا أوقاتهم في قراءة دليل المستخدم ويحبون أن يبدؤوا بالعمل مباشرة دون الحاجة إلى تدريب. فهل برنامجك بالسهولة لكي يقوم المستخدم بفهمه من أول 10 دقائق مثلا؟ هل يسطيع أن يعرف ماذا يقدم برنامجك من مجر النظر إليه؟
مثال: تخيل لو عندك برنامجين يعملان في مجال الكيمياء. فكيف تفضل أن يكون برنامجك؟ هل تفضل البرنامج الذي يوفر مساعدة ظاهرة بجانب البرنامج أم الذي يوفر دليلا للمستخدم؟
نصيحة ليس دائما يكون البرنامج سهلا بحيث يستطيع المستخدم لذلك فدليل المستخدم الممتع والواضح شيء مهم لبرنامجك. أيضا لا تجعل المستخدم يتلفت يمينا ويسارا لكي يبحث عن شيء ما وبالذات إذا كانت المساعدة.
قابلية التذكرMomorabilty. كيف يكون برنامج قابلا للتذكر؟ تعرف قابلية التعلم على أنها درجة سهولة تذكر المستخدم كيف يتعامل مع البرنامج.
ما معنى ذلك؟ معناه أنه يجب أن تصمم برنامجك بطريقة معينة بحيث إذا عاد المستخدم بعد فترة معينة ليستخدم برنامجك فلا يحتاج الى الكثير من الوقت لتذكر كيف يستخدم البرنامج مرة ثانية.
مثال: تخيل لو انك تضر للتدريب على برنامج معين كلما انقطعت عنه فترة من الزمن أو أن العمليات التي يقوم بها البرنامج صعبة لدرجة انك تشعر انك تقوم بها لأول مرة.
نصيحة استخدم الصور الصغيرة للتعبير عن الأشياء فرؤية المستخدم لصورة مغلف رسائل أسرع إدراكا فيما لو كان هناك فقط عبارة أو كلمة "بريد" مثلا. أيضا يجب أن تحاول أن تجعل المستخدم كل مرة يرى فيها الأمر المتاح له يتذكر ماذا يعمل. فليس هناك فائدة في أن ترمز لعمل ما بصورة وهذه الصورة غير مفهومة أو صعبة التذكر.
النهاية أريد أن أوضح أشياء مهمة: - قد تكون هذه النصائح عامة ولكنها مفيدة جدا إذا عملت لها اعتبار وأنت تصمم البرنامج. – احضر من يستطيع ان يقيم تصميمك من ناحية دعمه للاستخدام. – حاول أن تجعل المستخدم مرتاحا دائما وسعيدا بالعمل في برنامجك. – لاحظ أن هذه إرشادات لقابلية الاستخدام ويوجد هناك الكثير من الأشياء الأخرى التي ينبغي مراعاتها في التصميم. – وإذا كان هناك أي أسئلة فأنا مستعد إن شاء الله.
| |
|