كيف تقّدر تكلفة منظومة؟
#1
السلام عليكم


مقترح لمعيار تقدير تكلفة منظومات تطبيقات قواعد البيانات

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

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

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

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

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

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

منطلق المعيار الذي ساقترحه هو السوال التالي:
في منظومة قواعد بيانات؛ ما هو العنصر الذي إذا تغيرت كميته تغيرت
كمية الجهد المبذول على معظم نواحي المنظومة؟

الإجابة الأولى لدي كانت حقول قاعدة البيانات. فالملاحظ أن كل حقل
يتم اضافته لجدول في قاعدة البيانات يترتب عنه كمّ من الجهد البرمجي
يتوزّع على معظم نواحي المنظومة.

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

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

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

تطبيقا لهذه المقاربة بأبسط صورها، دعنا نقول أن تكلفة الحقل الواحد
مثلا 30 دينار. سيكون تقدير تكلفة منظومة بها 40 حقلا هو 1200 دينار.

طبعا الأمور ليس بمثل هذه البساطة، لذلك سنناقش بعض التفاصيل الأخرى.

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

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

مثال على هذه العوامل:

هل قاعدة البيانات مكتبية أم بتقنية خادم/عميل؟ إذا كانت الأخيرة
يتم إضافة قيمة أخرى إلى القيمة الأصلية للخانة ولتكن 10 دينار
مثلا.

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

هل يوجد دليل تشغيل للمنظومة، يضاف 10 دينار.

واستكمالا لمثالنا السابق، اذا افترضنا أن المنظومة ستكون بتقنية
خادم/عميل، بعشرة تقارير مع وجود دليل استخدام، فإن سعر الخانة
سيكون: 30 + 10 + (10 × 0.5) + 10 = 55 دينار.

وبالتالي تكون اجمالي تكلفة المنظومة ذات 40 خانة 2200 دينار.

(سأحاول في موضوع آخر سرد العناصر التي توثر في حجم بناء المنظومة)


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

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

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

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

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

ماذا عن تقدير الوقت اللازم للتنفيذ؟

المعيار المقترح هو لتقدير تكلفة المنظومة، لكن هل هذا المعيار سيكون
صالحا لتقديرالوقت اللازم لتنفيذ المنظومة؟ هل لو حددنا أن الزمن
المقدر لتنفيذ خانة هو نصف يوم، فهل يصلح أن نقول أن المنظومة التي
تحوي 40 خاتات سيستغرق تنفيذها 20 يوم؟

هذا أمر يحتاج لمزيد من البحث و الدراسة.

الآن؛ لا أعلم مدى نجاعة هذا الاقتراح أو مدى تطبيقه عمليا،
وانتظر أراء كم وملاحظاتكم.

وآسف على الإطالة.
#2
السلام عليكم ورحمة الله
إقتباس :لا أعلم مدى نجاعة هذا الاقتراح أو مدى تطبيقه عمليا
يمكن انشاء تطبيق ياخد المعطيات من عدد الحقول/الجداول/التقارير...الزمن وكل ماسبق الحديث عنه وفي الاخير يعطي الثمن
ان كان الثمن معقول يمكن ان نقول ان الطريقة ناجعة
الثمن المعقول هو ثمن برنامج مماثل موجود مسبقا
#3
السلام عليكم
يجب الأخذ في الحسبان أيضا عدد النسخ التي يمكن بيعها
#4
السلام عليكم

إقتباس :ان كان الثمن معقول يمكن ان نقول ان الطريقة ناجعة
ما قصدته أيضا هل تنفع هذه الطريقة لبناء جسر تفاهم بين المطور والزبون؟

إقتباس :يجب الأخذ في الحسبان أيضا عدد النسخ التي يمكن بيعها
هل تقصد عدد النسخ التي تباع للزبون نفسه؟ إذا كان كذلك فلابد من حساب الأساس أولا. أما إذا كان المقصود البيع لزبائن آخرين فذلك له حسبة أخرى.
#5
كم يبلغ السعر بالدولار الامريكي ؟ Smile
#6
إقتباس :هل تنفع هذه الطريقة لبناء جسر تفاهم بين المطور والزبون؟
هذا يرجع الى من هو الزبون، ان كان شخص لنقل مثقف أو جهة ما تقنية تفهم الامور
في هذا المجال ياخذ الجهل نسبة كبيرة تكاد تسود ما هو موجود وهذا اهم اسباب عدم وجود ضوابط لتحديد السعر
عامة الزبون يبحث عن اقل ثمن و المطور/المبرمج اعلى سعر
ما يحدد السعر عامة هو سوق العرض/الطلب + معامل الجهل
لاحظ يمكن خفض السعر لا وبل يمكن توزيع المنظومة مجانا والحصول على ثمنها من الدعم !
منظومة قواعد بيانات جيدة + متابعة + وقت = ما يكفي من مال للعيش
#7
اعتقد انه من الصعب وضع مقياس محدد على ضوءه يمكن تحديد سعر المنظومة،
فكلها تعتمد على تقديرات من قبل المبرمج. ولا ننسى ان معظم المنظومات الموجودة في السوق حاليا (على سبيل المثال منظومة المبيعات والمخازن) تعب فيها المبرمج في البداية ولكن يقوم بتسويقها لعشرات الزبائن (في حالة نجاحها)، يعني بالليبي رد حقها وزيادة.
تبقى المشكلة في المنظومات التي تصمم لزبون بعينه حسب طلبه والتي من الصعب تسويقها لانها تخدم زبون واحد فقط او عدد قليل من الزبائن فهذه تعتمد ايضا على تقديرات المبرمج.
انا اعتقد ان المنظومات الشائعة الاستخدام المفترض ان يتم فيها تحديد سعر ثابت (يالدولار مثلا ومنها يتم التحويل من الدولار الى العملة المحلية) بالاتفاق بين المبرمجين.
اما بالنسبة للنوع الثاني من المنظومات فتترك للمبرمج حسب تقديره (من حيث الحجم والتعب في البرمجة).
والله اعلم
O. M. Fares
#8
السلام عليكم

يبدو أني لم أحسن التقديم للمقترح أعلاه

ما اقترحته سابقا يخص فقط منظومة قواعد البيانات التي يجري الاتفاق عليها بين المطور والزبون قبل
تنفيذ المنظومة فعليا. دون الأخذ في الاعتبار إمكانية إعادة بيع نفس المنظومة مر أخرى لأطراف ثالثة.

السؤال الذي أطلب إجابة عنه: هل يمكن اعتماد عدد الحقول كأساس للتسعير في منظومات كهذه.

السيناريو الذي أتصوّره كالتالي:
- يأتي زبون طالبا من المطوّر إعداد منظومة.
- يتفاهمان على الحقول التي ستكون في المنظومة
- يتفاهمان على الخصائص الفنية والوظيفية التي ستكون في المنظومة، على أن تكون هذه الخصائص مفهومة ومحسوسة لعامة الزبائن.
- يطرح المطور سعره للحقل وأيضا سعره لكل خاصية وتضاف لسعر الحقل
- مجموع سعر الحقل مضروب في عددها يكون سعر المنظومة
- يمكن للزبون أن يخفض من السعر باستبعاد بعض الحقول أو الخصائص، أو أن يفاوض على سعر الخانة.
#9
أستاذي shagrouni
أنا فعلاً أمر بهذه التجربة
اتفقت على سعر 1200 دولار
ورضى العميل
و لكن المشكلة عندما أبيعه لعملاء إخرين
كيف أحدد السعر علماً أنه لو علم الطرف الأول ستصبح مشكلة بالنسبة لي
#10
السلام عليكم

إقتباس : لو علم الطرف الأول ستصبح مشكلة بالنسبة لي

إذا لم يوجد اتفاق مسبق فلا مشكلة.

إقتباس :كيف أحدد السعر
حسب مجريات العرض والطلب ، حسب السوق، وحسب مهارتك في التسويق


إقتباس :هناك نقاش/موضوع سابق: كيف تسعر برامجك المنجزة
http://www.delphi4arab.net/forum/showthr...p?tid=1543


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


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