المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مجلة بي سي العربية: التوثيق ياعزيزي !



الاسهم الخليجية
06-09-2007, 08:48 PM
بقلم: د. حامد نصار - مجلة بي سي العربية.

أرسل لي صديقي المصري المهاجر في أمريكا يطلب إفادته عن إمكان كتابة برامج في مصر لحساب شركته التي يملكها ويديرها هناك، أي طلب ما يسمى في المهنة بالتعهيد (outsourcing).كنت أعلم من خلال علاقتي المتصلة بصديقي أن شركته تعمل لحساب شركات الطيران الأمريكية ، وتحديدا تصمم وتنتج نظم مدفونة embedded systems للطائرات تؤمن وظائف حساسة في الطائرة، مثل التحكم في الوقود ومراقبة المحركات ومتابعة وضبط الاتزان، كما أعلم أن شركته ناجحة جداً في هذا المجال، ولها سمعة طيبة بين شركات الطيران الأمريكية، حيث الأمان متطلب أساسي مهما بلغ ثمنه .
شرح لي صديقي في سياق طلبه أن شركات هندية عديدة تعمل في مجال التعهيد هذا، وتربح في المقابل ملايين هائلة من الدولارات، وأنه قد عز عليه ألا تشارك بلده الأصلي ولو في قطعة من هذه الكحكة المغرية خاصة وهو يعلم أن في مصر عقولاً مميزة ومبرمجين مؤهلين.
سألت صديقي عن اللغة المطلوب كتابة البرامج فيها فقال إنها لغة التجميع assembly الخاصة بمعالجات إنتل سلسلة 8086، وهي بالمصادفة لغة أعرفها جيداً من خلال تدريسي لها طيلة حوالي عشر سنوات. على الفور طلبت منه إرسال نموذج لأحد هذه النظم حتى يتسنى لي الإجابة على طلبه.
لم يمض يومان حتى وجدت في صندوق بريدي الإلكتروني النموذج المطلوب ويالهول ما رأيت! لم يكن المدهش البرنامج، فقد كان كله لا يتجاوز عشر صفحات، ولا كان تعليمات اللغة فقد كانت في المتناول. إنما كان التوثيق documentation والذي كان يحتل أكثر من مائة وخمسين صفحة! حقاً إن الموضوع يخص الطيران حيث أن أي خطأ ولو كان ضئيلا غير مقبول.
ينبغي توثيق البرامج بكتابة تعليقات وهذا يتم إما داخل التعليمات in code أو خارجها. ففي داخل التعليمات تكتب بجوار كل تعليمة وظيفتها في البرنامج، ويكون هذا التوثيق مثالياً إذا ظهر عند قراءته مسلسلاً، وكأنه قصة أو مقال مترابط ومنسجم. أما خارج التعليمات فتكتب في صدر كل دالة اسمها والهدف منها وملخص لها وتاريخ تطويرها وتعديلها وسرد بالنسخ السابقة منها وأية خلفيات علمية أو هندسية استخدمت كأساس لها، ويكون هذا التوثيق مثالياًَ إذا أعطى القارئ الفكرة كاملة عما يفعله البرنامج ولماذا كتب بهذا الشكل.
من خلال التوثيق يصبح من السهل جداً الدخول إلى البرنامج مستقبلاً (سواء من كاتب البرنامج الأصلي أو من الآخرين) للتعديل أو التحسين بالحذف أو الإضافة أو التغيير في التعليمات. أي أن التوثيق يؤدي إلى سرعة إنتاج البرمجيات وإلى رفع مستواها أيضاً، حيث يتم البناء دوما من حيث انتهى الآخرون.
من المعروف في الغرب أن للبرمجة جناحين لهما الدرجة ذاتها من الأهمية: التعليمات والتوثيق، وعندما يتقدم مبرمجون للتوظّف في شركة لصناعة البرمجيات يتم اختبارهم في الجناحين، لماذا؟ لأن المبرمج نادراً ما يظل في الشركة طوال حياته العملية، فهو إما يتركها إلى شركة أفضل، أو يتقاعد أو يصاب بمرض يمنعه من مزاولة العمل. فإذا فشل في توثيق برنامجه جيداً سيأتي سلفه ليكتبه "من الصفر" بدلاً من أن يبذل أضعاف الوقت في فك طلاسمه، ومن ثم تعديله أو تحسينه. ولا ريب أن هذه الكتابة المتكررة لا تؤدي إلى انخفاض سرعة إنتاج البرمجيات فحسب، بل إلى انخفاض في مستوى أدائها أيضاً، حين لا يتم استثمار ما أنجز سابقاً.
إذا انتقلنا إلى المنطقة العربية، نجد أن الانطباع السائد هو أن البرمجة هي فقط التعليمات، أما التوثيق فهو للأسف إما غير معروف مطلقاً، أو أنه لا يتم بالشكل العلمي الصحيح. وهذا الوضع هو في الواقع نتاج لثقافة سائدة تغلب الشفهي على المكتوب (كما يقول المثل الشعبي: العلم في الراس مش في الكراس!) ولقد حاولت مراراً على المستوى الشخصي زرع ثقافة التوثيق في طلابي الذين أشرف عليهم في مشروعات التخرج من دون أن أحقق النجاح المنشود. ففي سنة من السنوات فرضت على طلابي استكمال مشروع أنجز في السنة السابقة، وكان قد طلب من القائمين عليه توثيقه بشكل جيد. لكن طلاب المشروع الجديد وبعد مرور أكثر من شهرين أخبروني أنه أهون عليهم أن يكتبوا المشروع السابق من جديد، ثم يستكملوا الجزء المطلوب في المشروع الجديد من أن يمكثوا سنوات في محاولة تفسير ما كتبه سلفهم. فوافقت ولكن اشترطت عليهم أن يوثقوا مشروعهم جيداً، متخذين مما حدث عبرة وعظة، حتى يمكن لزملائهم استكماله في السنة اللاحقة. وكنت أعلمهم القواعد اللازمة لذلك من دون أن أكتب ذلك التوثيق بنفسي. ولكن التجربة لم تنجح هذه المرة أيضاً حيث حدث في السنة اللاحقة رد الفعل ذاته، ورأى الطلاب أنه أهون عليهم كتابة المشروع من جديد!

باسترجاع كل هذه التجارب والمعلومات عن المجتمع وثقافته السائدة من ذاكرتي أصبحت في وضع يمكنني من الرد على طلب صديقي المهاجر في أمريكا، حيث أشفقت عليه وعلى سمعته وما يمكن أن يناله من سوء إذا استورد برامج منخفضة المستوى، خاصة وأن أي خطأ في مجال الطيران يساوي أرواحاً ستزهق لا محالة، فكان ردي: آسف يا عزيزي!


http://www.itnews.co.ae/article.php?id=EEZllpEZkyxovhqVAP