تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
دليلك السريع للعمل في فرق التطوير
#1
كاتب الموضوع : Athman

مقال رائع للأستاذ تركي العسيري أحببت أن يستفيد منه الأعضاء

اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
بسم الله الرحمن الرحيم
دليلك السريع للعمل في فرق التطوير
وإدارة المشاريع الكبيرة
1. المنتج والمشاريع

في البداية عليك التفريق بين المصطلحين (المنتج (Product و(المشروع Project). فالمنتج هو التطبيق Application أو البرنامج Program الكامل من أوله إلى أخره، وهو الذي نهدف من تحقيقه وبنائه. تكون البداية بتعريف التطبيق، وتحديد مداه Scope والهدف الذي نريد الوصول إليه Objective، فعمل شيء دون هدف ليس له أي فائدة.

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

1-1. اسم المنتج

اسم المنتج هو الاسم الذي يميز المنتج عن غيره، وفي العادة يكون للمنتج أكثر من اسم:

الاسم الكودي Code Name:

وهو الاسم الابتدائي والذي يعطى للتطبيق وهو في مرحله التطوير قبل الخروج من المعامل Labs.

الأسماء التجريبية Beta Name:

مع صدور أي نسخة تجريبية Beta من التطبيق، يتم إعطائها أيضا اسم خاص.

الاسم النهائي (اسم المنتج) Product Name:

وهو الاسم النهائي للمنتج والذي يسوق به والمرشح للنزول إلى الأسواق.

1-2. رقم الإصدار Version Number

يتكون رقم الإصدار من ثلاث خانات تفصل بينها فاصلة:



Major.Minor.BuildNumber



في الخانة الأولى (Major) يوضع فيها رقم الإصدار الرئيسي للمنتج وهذا الرقم لا يتغير ابدآ من بداية التطوير حتى التوزيع والتسويق. ويمكن تغييره لاحقا عندما تنوي تطوير نسخة جديدة من البرنامج ولكن بعد صدور النسخة النهائية للأسواق –وليس قبل ذلك.

في الخانة الأخرى (Minor) تبدأ بالرقم 1 وتزيد في كل مرة يجري فيها تعديل كبير للتطبيق وهو في مرحلة التطوير، ويتم زيادة هذا الرقم أيضا عند إضافة أي وحدة برمجية Module أو ملف إضافي للبرنامج.

أما الخانة الأخيرة (Build Number) فسيتم زيادتها في كل عملية ترجمة Compiling للبرنامج وفي كل مرة يتم تنفيذ البرنامج عليها.



أمثلة:

1.44.3424

1.44.3425

1.45.1

1-3. المشاريع

كما سبق الإشارة إليه، المنتج يتكون من مجموعة من المشاريع والمتفرعة بشكل جذري. يتم في البداية تحديد المشاريع الرئيسية للمنتج، مع العلم أن هذه المشاريع ليست ثابتة. أي انه يمكن إضافة مشاريع فرعية أخرى أو إعادة أو تغيير فيها. ولكن من المهم جدا جدا عدم تغيير المشاريع الجذرية Root Projects فهي الأركان الأساسية التي يعتمد عليها المنتج.



فمثلا، عندما تنوى تصميم برنامج لإدارة قواعد البيانات، فستبدأ بوضع المشاريع الرئيسية وهما اثنان: مشروع بناء الخادم Server ومشروع بناء العميل Client:

برنامج قواعد البيانات



1-برنامج الخادم

2-برنامج العميل

مشروع الخادم كبير جدا، وسيقسم بلا شك إلى مجموعة من المشاريع الفرعية، قد تكون شيئا مثل:

1. الخادم

1-1 إدارة الخادم الرئيسي

1-2 إدارة المستخدمين

1-3 إدارة قواعد البيانات

1-3-1 عمليات دخل وخرج الملفات

1-3-2 عمليات إدارة الذاكرة

1-3-3 عمليات خدمة جمل الاستعلام SQL

ونفس الشيء يكون للمشروع الرئيسي الآخر (العميل Client) مع العلم دائما أن هذه المشاريع ليست ثابتة بل يمكن أن تتغير وتضاف مشاريع إضافية فرعية.

1-4. إدارة المنتج والمشاريع

المنتج –كما سبق الإشارة إليه- كيان واحد، شيء واحد، يقوده شخص واحد يسمى مدير المنتج Product Manager أو مدير البرنامج Program Manager. وهو المسئول الأول والأخير عن المنتج. أما المشاريع فكل مشروع يديره شخص يسمى مدير المشروع Project Manager وهو المسئول الأول والأخير عن المشروع الخاص به.

كيف سيتم بناء هذه المشاريع؟ هذا ما ستفصل فيه الفقرة 2. مراحل بناء المشروع. ولكن من المهم وجود 5 عناصر أساسية قبل البدء في أي مشروع هي:

1. اسم المشروع:

وهو اسم رمزي للمشروع يكون دائما فريد Unique أي لا يتكرر في أي مشاريع أخرى.

2. رقم المشروع:

وهو رقم يتبع التوزيع الشجري للمشاريع حتى تسهل معرفتها، فلو عدنا إلى المثال السابق لمشاريع برنامج قواعد البيانات، يمكننا ترقيمها بهذا الشكل:

1. الخادم

1-1 إدارة الخادم الرئيسي

1-2 إدارة المستخدمين

1-3 إدارة قواعد البيانات

1-3-1 عمليات دخل وخرج الملفات

1-3-2 عمليات إدارة الذاكرة

1-3-3 عمليات خدمة جمل الاستعلام SQL

2. العميل

...

...

3. وصف المشروع:

وهو وصف نصي مختصر للمشروع يعرض الهدف منه.

4. مدير المشروع:

وهو الشخص المسئول عن المشروع.

5. ملحقات المشروع:

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



1-5. البدء في بناء المشاريع

بعض المشاريع يمكن البدء فيها فورا، ولكن البعض الآخر تكون متطلب لمشاريع أخرى Required Projects. مما يعني، انه لابد من الانتهاء من هذا المشروع قبل البدء في مشروع آخر.

2. مراحل بناء المشروع

تختلف مراحل بناء المشروع من مشروع إلى آخر وذلك يعتمد على نوعية المشروع وطريقة بناءه، ولكن (بشكل عام) تكون خمس مراحل. المصيبة الكبرى والخطأ العظيم الذي يقع فيه اغلب المبرمجين العرب هو أنهم –من الحماس الزائد- يقومون بكتابة الشيفرات المصدرية دون تخطيط ولا حتى تصميم، وهذا شيء لن يحدث إلا بعد مرور وقت طويل يقضيه المشاركون في تبادل المستندات والمخططات. أي باختصار:



لا تكتب سطر واحد من الشيفرات المصدرية وآنساها ولا تفكر فيها إلا لاحقا عن مرحلة الانجاز Implementation



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

2-1. المرحلة الأولى: التخطيط Plan

في هذه المرحلة يتم فيها تعريف المشروع ووضع العناصر الأساسية له، كرقمه، الوصف، والمسئول عنه. كما يحدد فيها مدى المشروع Project Scope ووضع مخطط زمني Time Lines والمواعيد النهائية Dead Lines للمراحل المختلفة من المشروع.

يتبع مدير المشروع أسلوب التخمين Forecasting في تحديد الأوقات المستغرقة للانتهاء من المراحل المختلفة، وبعد ذلك عليه أن يحسب الأوقات الحقيقة Actual Times التي استغرقها حتى يحدد الفرق ويحسب نسبة الدقة.

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

برنامج Microsoft Project مفيد جدا لهذه المرحلة. [/TD]
[/TR]
[/TABLE]
}}}}
تم الشكر بواسطة:
#2
2-2.المرحلة الثانية: التحليل Analysis

مرحلة التحليل هي إجابة للسؤال ماذا أريد أن اعمل؟ حيث تبدأ هذه المرحلة سرد جميع المتطلبات Requirements للمشروع. ويعقد مدير المشروع اجتماعات Meetings مع باقي أعضاء الفريق لتحديد المتطلبات. كما يمكن أن تضاف متطلبات أخرى من أشخاص خارج المشروع كالمستخدمين، أفكار من برامج أخرى، وقد تكون المتطلبات أيضا من مبرمجين في المشاريع الأخرى.

بعد معرفة جميع المتطلبات والتحقق منها، تبدأ عملية التحليل الفعلية وهي عبارة عن تخطيط منطقي Logical Plan لمحتويات المشروع، حيث توضع فيها تعريفات لجميع العناصر والشروط والقوانين التي تتبعها وكيفية التفاعل معها.

مثال:

لو كنت تقوم ببناء برنامج محاسبة فستبدأ بتعريفات العناصر:

العملية Transaction:

هي معاملة مادية تحمل قيمتين Credit و Debit، وتحمل تاريخ، ووصف، والشخص الذي قام بها.

الحساب Account:

يحتوي على مجموعة من العمليات Transactions.

...

...

بعد ذلك، قد تضع قوانين Rules بين هذه العناصر:

- يمكن للحساب أن يحتوي على حسابات فرعية.

- يشترط في كل عملية أن تنتمي إلى حساب.

- الحسابات المغلقة لا يمكن إضافة عمليات بها

- صلاحيات مختلف للمستخدمين (المشرف يستطيع أن .... و...، أما المستخدم فيمكن... و ...)

...

تتم مرحلة التحليل من قبل أكثر من شخص، وبعد الانتهاء، من المهم جدا جدا توثيقها في دليل منظم وتسميته بدليل التحليل Analysis Design.

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

برنامج Microsoft Word مفيد جدا لهذه المرحلة.





2-3. المرحلة الثالثة: التصميم Design

إن كانت مرحلة التحليل هي إجابة للسؤال ماذا أريد أن اعمل؟ فان مرحلة التصميم هي إجابة لسؤال كيف اعمل ما أريد؟

في هذه المرحلة، يبدأ فريق التطوير ومدير المشروع بالتصميم الأولى للمشروع. حيث يبدأ أولا بالتصميم الخارجي External Design والتصميم الداخلي Internal Design. في التصميم الخارجي يركز المصممون على عملاء المشروع، فلو كان العملاء مستخدمون، فسيكون جل تركيزهم على واجهة الاستخدام وتفصيل لكل شيء يراه المستخدم. أما إن كان العملاء من المبرمجين، فسيتم تحديد واجهات API للمبرمجين وتعريفها. أما التصميم الداخلي، فهو خاص بفريق التطوير وتتحدث عن التصاميم الداخلية والمكونة للمشروع.

بعد التصميم الأولي، يبدأ التصميم النهائي، حيث يتم تفصيل العناصر التقنية للتصاميم وكتابة جميع الوحدات البرمجية Modules، الفئات Classes ورسم أهرام الفئات Class Hierarchy، التركيبات Enums and Structures وغيرها، ويتم توثيقها وكتابة أهم دليل وهو دليل التصميم Design Guide. وعند الموافقة النهائية على هذا الدليل، يمكن البدء فورا بمرحلة الانجاز.

برنامجي Microsoft Visio و Microsoft Word مفيدة جدا لهذه المرحلة.

2-4. المرحلة الرابعة: الانجاز Implementation

هنا تبدأ مرحلة كتابة الشيفرات المصدرية والتي ما هي إلا تطبيق فعلي لما هو مكتوب في دليل التصميم. يبدأ مدير المشروع بتعريف المهام Tasks ومن ثم توزيعها على المشاركين. يفضل أن لا يقل عدد المشاركين لكل مهمة عن اثنين حتى يتم التحقق من صحة بنائها.

بيئة التطوير Visual Studio .NET 2003 هي التي ستكون مستخدمة.

2-5. المرحلة الخامسة: الإعدادات النهائية Finalizing

تشمل الاعدادات النهائية اللمسات الأخيرة التي يمكن تعديلها في المشروع. حيث يتم إجراء عمليات الاختبار Testing والتحقق من الكفاءة Optimization وتصدير كافة تقارير الشوائب Bug Reports.

بعد التأكد من سلامة المشروع وتحقيقه للهدف المطلوب، تبدأ مرحلة التجهيز النهائية وتوفير كافة المتطلبات الضرورية للمشروع ومن ثم حزمها Pack وإرسالها إلى الجهة المطلوبة والتي تكون مدير مشروع رئيسي آخر.

3. المشاركون

بشكل رئيسي، يمكن تقسيم المشاركين إلى 4 أصناف:

3-1. مدير المنتج Product Manager

وهو الشخص المسئول الأول والأخير عن المنتج النهائي وقد سبق الإشارة إليه.

3-2. مدير مشروع Project Manager

وهو مسئول عن المشروع المكلف فيه والمشاريع الفرعية التابعة له، لابد أن يكون لكل مشروع (سواء كان رئيسي أو فرعي) مدير مشروع. وتوزيع الهيكل الإداري يتبع نفس الهيكل الشجري للمشروع والمشاريع الفرعية التابعة له. كما انه مطالب بالتقارير الأسبوعية. وعقد الاجتماعات الدورية مع كافة أعضاء الفريق.

تتطلب خبرة فنية كبيرة لهذا الشخص.

3-3. مسئول Administrator

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

3-4.مشارك Participant

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

3-5.الهيكل الإداري



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

فعمليات الاتصال والاتفاق والتفاهم تكون في مجال الهيكل الإداري، فالعضو المشارك في مشروع-1 ليس له علاقة بمدير مشروع-2، كما أنا مدير المنتج علاقته محصورة بمدراء المشاريع الرئيسية، كذلك الحال مع مدير مشروع-3 تكون علاقته مع مدراء المشاريع الفرعية التابعة له وليس المشاركين فيها. فالكل سيكون مشغول وتفكيره محصور في المهمة التي ينجزها.

4. ضرورة الالتزام بالمعايير

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

يوجد نوعان من المعايير، المعايير المشتركة Shared Specifications والمعايير الخاصة Private Specifications. المعايير المشتركة هي معايير تشمل كافة عناصر المنتج ومشاريعه المختلفة، أما المعايير الخاصة فهي خاصة بمشروع معين لا يشترط تطبيقها في مشروع آخر.

من أمثلة المعايير المشتركة، معايير تحديد أساليب كتابة التقارير الأسبوعية، كتابة أدلة التحليل Analysis Guide والتصميم Design Guide تشمل اللغة والتنسيق ومحتوياتها. كما يمكن وضع معايير لتعريف المهمة Task وكيفية تقييم أدائها، ومعايير للاختبارات Testing، ومعايير للمصطلحات Glossaries وغيرها.

ومن أمثلة المعايير الخاصة معايير لتوحيد واجهة الاستخدام وتحديدها كأشرطة الأدوات Toolbars، النوافذ Windows، نوافذ المعالجات Wizards. أو معايير لكتابة الشيفرات المصدرية Source Code كشروط التسمية، طريقة كتابة التعليقات Comments، تسمية ملفات المشروع Project Files وغيرها.

"إن معايير المشروع هي كالقيم Values في حياة الإنسان، والتي إن تم خرقها فسد المشروع"
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [اقتراح] توحيد تسمية الادوات بين فريق التطوير Prefix myalsailamy 3 99 02-12-16, 03:53 PM
آخر رد: ali.alfoly
  نظرة سريعة في الجديد في Visual Studio 2008 فيما يتعلق ببيئة التطوير RaggiTech 0 281 08-10-12, 05:45 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم