# عملية البرمجة الفردية

عملية البرمجة الفردية (بالإنجليزية: Personal software process)‏ اختصاراً PSP، هي عملية تطوير برمجية منظمة ومصممة لمساعدة مهندسي البرمجيات على فهم وتحسين أدائهم للشكل الأفضل، ويُنفّذ ذلك من خلال تنظيم الطريقة التي يعتمدونها لتطوير البرمجيات وتتبع تطويرها الفعلي والمتوقع للكود. توضح العملية للمطورين كيفية إدارة جودة منتجاتهم وكيفية وضع خطة منطقية وتقديم التزامات، وتُقدم لهم البيانات لتبرير خططهم.
يمكن للمطورين تقييم عملهم واقتراح إجراء التحسينات من خلال تحليل ومراجعة وقت التطوير والعيوب وحجم البيانات. أسس المهندس واتس همفري عملية البرمجة الفردية لتطبيق المبادئ الأساسية لنموذج نضج القدرة التابع لمعهد هندسة البرمجيات على ممارسات تطوير البرمجيات الخاصة التابعة لمطور واحد. تدعي العملية توفير المهارات العملية اللازمة للعمل لمهندسي البرمجيات في فريق عملية برمجة الفريق.

## الأهداف

تهدف عملية البرمجة الفردية إلى تزويد مهندسي البرمجيات بطرق منظّمة لتحسين عمليات تطوير البرمجيات الفردية، إذ تساعد مهندسي البرمجيات على:
* تحسين مهاراتهم في التقدير والتخطيط.
* تقديم التزامات يمكنهم تنفيذها.
* إدارة جودة مشاريعهم.
* تقليل عدد العيوب في عملهم.
* هيكل عملية البرمجة الفردية
يتبع تدريب عملية البرمجة الفردية نهج تحسين تطوري، فيبدأ المهندس الذي يتعلم دمج عملية البرمجة الفردية في العملية الخاصة به من المستوى الأول للعملية (المستوى 0)، ويتقدم في نضج العملية إلى المستوى النهائي (المستوى 2.1). يحتوي كل مستوى على برامج نصية وقوائم المراجعة وقوالب جاهزة لتوجيه المهندس من خلال الخطوات المطلوبة، ويساعد المهندس على تحسين عملية البرمجة الفردية الخاصة به. يشجع همفري المهندسين المخضرمين على تخصيص هذه البرامج النصية والقوالب الجاهزة لأنها تُكسب فهمًا لنقاط قوتها وضعفها.

## العملية

تُعرف المُدخلات إلى عملية البرمجة الفردية بالمتطلبات التي تسُتكمل وتُسلم إلى المهندس.

### مستويا عملية البرمجة الفردية 0 و0.1 (تنظيم وقياس العملية)

يحتوي المستوى 0 على 3 مراحل: التخطيط والتطوير (التصميم والترميز والتجميع والاختبار) والاستدراك. وُضع خط أساس لقياس العملية الحالية، أيّ قياس الوقت المُستخدم في البرمجة والأخطاء التي تُحقن/تُزال وحجم البرنامج. يضمن المهندس تسجيل جميع البيانات الخاصة بالمشاريع وتحليلها بشكل صحيح في حالة الاستدراك. يُطور المستوى 0.1 العملية عن طريق إضافة معيار ترميز وقياس للحجم وتطوير خطة تحسين العملية الفردية. يسجل المهندس أفكارًا لتحسين عمليته في خطة تحسين العملية الفردية.

### مستويا عملية البرمجة الفردية 1 و1.1 (التقدير والتخطيط)

يقدّر المهندس حجم البرنامج الجديد ويُعد تقريرًا بالنتائج بناءً على بيانات خط الأساس التي جُمعت من المستويين 0 و0.1 (المستوى 1). تُستخدم البيانات المتراكمة من المشاريع السابقة لتقدير الوقت الإجمالي. سيسجل كل مشروع جديد الوقت الفعلي الذي يقضيه، وتستخدم هذه المعلومات لتخطيط وتقدير المهام والجدول الزمني. (المستوى 1.1).

### مستويا عملية البرمجة الفردية 2 و2.1 (إدارة الجودة والتصميم)

يضيف المستوى 2 مرحلتين جديدتين: مراجعة التصميم ومراجعة الكود. يُركز هذا المستوى على الوقاية من العيوب وإزالتها إن وُجدت. يتعلم المهندسون تقييم وتحسين عمليتهم من خلال قياس المدة التي تستغرقها المهام وعدد العيوب التي يحقنوها ويزيلونها في كل مرحلة من مراحل التطوير. يبني المهندسون ويستخدمون قوائم المراجعة لمراجعات التصميم والكود. يقدم المستوى 2.1 مواصفات التصميم وتحليل التقنيات.

## أهمية البيانات

تستخدم إحدى الجوانب الأساسية لعملية البرمجة الفردية البيانات التاريخية لتحليل وتحسين أداء العملية. تدعم جميع بيانات عملية البرمجة الفردية أربعة عناصر رئيسية:
* البرامج النصية
* المقاييس
* المعايير
* النماذج
تقدم البرامج النصية في عملية البرمجة الفردية إرشادات على مستوى الخبراء لاتباع خطوات العملية، وتوفر إطارًا لتطبيق مقاييس العملية. تمتلك عملية البرمجة الفردية أربعة مقاييس أساسية:
* الحجم: قياس حجم أحد أجزاء المنتج مثل أسطر الكود.
* الجهد: الوقت اللازم لإكمال المهمة، وعادة ما تستغرق بضع دقائق.
* الجودة: عدد العيوب في المنتج.
* الجدول الزمني: وهو مقياس لتقدم المشروع ويُتبع مقابل تواريخ الإنجاز الفعلية والمخططة.
يمكن أن يضمن تطبيق المعايير لهذه العملية دقة واتساق البيانات. تُسجّل البيانات في النماذج عادةً باستخدام أداة عملية البرمجة الفردية. طوّر معهد هندسة البرمجيات هذه الأداة وذلك بالإضافة للخيارات مفتوحة المصدر مثل لوحة معلومات العملية.
تتمثل البيانات الرئيسية التي تجمعها أداة عملية البرمجة الفردية ببيانات الوقت والعيوب والحجم، وذلك كالوقت المستغرق في كل مرحلة ومتى وأين حُقنت ووُجدت وثُبتت العيوب وحجم أجزاء المنتج. يستخدم مطورو البرمجيات العديد من المقاييس الأخرى المشتقة من هذه التدابير الأساسية الثلاثة لفهم وتحسين أدائهم. تشمل التدابير المشتقة ما يلي:
* دقة التقدير (الحجم/الوقت)
* فترات التنبؤ (الحجم/الوقت)
* وقت توزيع المرحلة
* توزيع حقن العيب
* توزيع إزالة العيب
* الإنتاجية
* إعادة استخدام النسبة المئوية
* مؤشر أداء التكلفة
* القيمة المخططة
* القيمة المكتسبة
* توقع القيمة المكتسبة
* كثافة العيوب
* كثافة العيوب حسب المرحلة
* معدل إزالة العيوب حسب المرحلة
* رافعة إزالة العيب
* مراجعة الأسعار
* نتاج العملية
* نتاج المرحلة
* فشل تكلفة الجودة
* تقييم تكلفة الجودة
* نسبة تقييم/فشل تكلفة الجودة

## التخطيط والتتبع

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

## استخدام عملية البرمجة الفردية

تهدف عملية البرمجة الفردية إلى مساعدة المطور على تحسين عمليته الفردية، فمن المتوقع أن يواصل مطورو العملية تكييف العملية لضمان تلبية احتياجاتهم الفردية.

### عملية البرمجة الفردية وعملية برمجيات الفريق

تُستخدم مهارات عملية البرمجة الفردية في بيئة فريق عملية برمجيات الفريق في الممارسة العملية. تتكون فرق عملية برمجيات الفريق من مطورين مدربين من عملية البرمجة الفردية متطوعين في مجالات تصب في مسؤولية المشروع، فلذلك يُدار المشروع من قبل الفريق نفسه. يضع الفريق الخطط والتقديرات ويتحكم في الجودة باستخدام البيانات الفردية التي تجمعها مهارات عملية البرمجة الفردية الخاصة بهم.

### عملية البرمجة الفردية وغيرها من المنهجيات

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

### الجودة

تُعد البرمجيات عالية الجودة هدفًا مهمًا لعملية البرمجة الفردية، وتُقاس الجودة من حيث العيوب. يجب أن تنتج عملية الجودة –في عملية البرمجة الفردية– برمجيات منخفضة العيب تلبي احتياجات المستخدم.
تُمكّن بنية مرحلة عملية البرمجة الفردية مطوري العملية من اكتشاف العيوب مبكراً. يمكن للعملية تقليل مقدار الوقت التي تقضيه في مراحل لاحقة عن طريق إجراء اختبار لاكتشاف العيوب في وقت مبكر.
تنص نظرية عملية البرمجة الفردية على أنه من الأكثر اقتصادًا وفعالية إزالة العيوب بشكل أقرب لوقت ومكان حقنها، فلذلك يُشجع مهندسو البرمجيات على إجراء مراجعات شخصية لكل مرحلة من مراحل التطوير. تتضمن بنية مرحلة عملية البرمجة الفردية مرحلتي مراجعة:
* مرحلة مراجعة التصميم
* مرحلة مراجعة الكود
يجب اتباع عملية مراجعة مهيكلة للتطبيق المراجعة الفعالة. توصي عملية البرمجة الفردية باستخدام قوائم المراجعة لمساعدة المطورين على اتباع إجراء منظم بشكل ثابت.
تتبع عملية البرمجة الفردية الفرضية القائلة إنه عند ارتكاب الأشخاص للأخطاء فتكون أخطاءهم عادةً قابلة للتنبؤ بها، إذ يمكن لمطوري العملية تخصيص قوائم المراجعة الخاصة بهم لاستهداف أخطائهم الشائعة. من المتوقع أيضًا استكمال مهندسي البرمجيات لمقترحات تحسين العمليات لتحديد نقاط الضعف في أدائهم الحالي والتوجه نحو تحسينها. تساعد بيانات المشروع التاريخية المطورين على تحديد المناطق التي يجب تحسينها.
من المتوقع أيضًا أن يُجري مطوري العملية مراجعات شخصية قبل أن يخضع عملهم لمراجعة النظراء أو الفريق.

## الشهادة

يُعطي معهد هندسة البرمجيات شهادة تضم عملية البرمجة الفردية في جامعة كارنيجي ميلون. تتجسد خطوات حصول الأشخاص للشهادة بتعلم سياق عملية البرمجة الفردية والتقدّم لامتحان الشهادة والحفاظ على المؤهلات. يعتمد اختبار مطور العملية على المفاهيم الموجودة في مجموعة المعلومات الخاصة بالعملية. يحافظ معهد هندسة البرمجيات على الأسئلة الشائعة والمتكررة بشأن الشهادة.