هندسة البرمجيات: المنهجيات

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

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

ما حصل فعليا في النقاط بين البداية والنهاية هي الطريقة المتبعة لاخراج المشروع وهي من مهمة software methodology، وسنحاول أن نستعرض بعض هذه المنهجيات.


اثناء سير البرنامج من بدايته الى نهايته يمر في عدة مراحل كما اتفقنا، هذه العملية تسمى دورة حياة المشروع software life cycle
في دورة حياة المشروع هنالك مجموعة عمليات وأنشطة وفعاليات ومهام تقسم وتوزع، طريقة سير هذه المهام تسمى نموذج model

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

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


منطقيا أول نموذج استخدمه البشر او المبرمجون هو نموذج اللا نموذج، أي العمل بدون وجود نموذج، وهو ما يمكن أن نطلق عليه نموذج ابني وصلح او كوّد وصلح build and fix , code and fix
build and fix
وحين الحديث عن هذا النموذج حيث لا طريقة علمية مستخدمة فمن البديهي ان تكون مزاياه أنه يمكنك العمل مباشرة، ولا تحتاج الى تخطيط، لا يحتاج إلى تدريب أو دورات خاصة، كذلك لا تحتاج إلى قواعد للسير عليها، أنت المدير وأنت المحلل، وأنت المبرمج، وأنت مختبر النظام، ولكن حين الحديث عن عيوب هذا المنهج، فحدث ولا حرج، سأقول بعضها، وأترك لكم الباقي، صعوبة صيانة النظام، وصعوبة تطويره مستقبلا، صعوبة فهم النظام من قبل مبرمج آخر إذا أردت أن تسلمه المشروع.... إلخ.

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

لعل الصورة ما زالت مشوشة لديك ولكن في المرات التالية ستتضح الصورة أكثر إن شاء الله

مشروع مفتوح المصدر لتحويل قوالب CSS إلى RTL

فقط تدخل النص ومن ثم يقوم بقلب الاتجاه ومن ثم طورته وجعلته يقلب مجلد بالكمال يحتوي على مجموعة ملفات CSS ،
 لتسهيل العملية أثناء عملي قمت بتقديمه للعديد من الأصدقاء،
فكرت لماذا لا أجعله مفتوح المصدر حتى يساهم فيه الجميع هذا رابط المشروع
http://rtlcss.codeplex.com/
قمت بعمل مكتبة واستخدمتها في مشروع WPF .
 
يسعدني انضمام أي شخص للعمل على المشروع وتعديله.
 أسأل الله أن يكون مشروع مفيد للعرب

إنشاء ملفات DOC & DOCX & PDF برمجيا في ASP.NET

لا شك أنك في عملك المباشر مع مواقع ويب متوسطة إلى كبيرة أو في تطبيقات سطح مكتب، أن تتعرض لمشكلة إنشاء مستندات، مثلا شهادة أو فاتورة أو تقرير، ولا شك أن نوع الملف الهدف بالتأكيد سيكون إما وورد Microsoft Word  أو أكروبات Adobe PDF.

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

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

السؤال إذا ما هي حلول إنشاء ملفات وورد برمجيا ( أو التعديل ) ، شرط أن تكون هذه الطريقة مجانية
الإجابة هنالك عدة حلول سأعرض أفضلها هنا
أفضل وأسهل هذه الحلول هو استخدام مكتبة DocX وهي مكتبة مفتوحة المصدر موجودة على موقع CodePlex ، عبر هذا الرابط http://docx.codeplex.com
يتوافر في الرابط نفسه  رابط لمدونة تضع أمثلة وحلول يمكن الاستفادة منها.
هذه المكتبة توفر دالة بحث واستبدال، وهي المطلوبة لحل مشكلتنا، وقد هداني الله لهذا الحل بعد مدة لا بأس بها من المعاناة، حيث تقوم بعمل شهادة محترمة بالوورد، ووضع مكان الاسم أي اسم مثلا XName  ومكان اسم الدورة XCourse ، وتقوم باستبدال الاسم برمجيا وتوتة توتة توتة ، خلصت الحدوتة.

ويا فرحة ما تمت هنالك مشكلة، وهي تصدير الملف إلى PDF ، هذه المكتبة لا تعطيك هذا الخيار، فقط هي تتيح لك إنشاء وتعديل ملفات الوورد.

لا تقلق هنالك حل حيث تتواجد مكتبة Microsoft.Office.Interop.Word المتواجدة في حزمة مايكروسوفت أوفيس عند تنصيبهاـ وهي تتيح لك القيام بهذه الخطوة.
نعلم أن الوورد فعليا له مكتبات تقوم بعمله، وهنالك واجهة تستدعي هذه المكتبات، ومكتبتنا هذه من المكتبات الأساسية ( هي الوورد نفسه ) ، تمكنك من فتح ملف الوورد برمجيا وحفظه باسم ، واختيار الامتداد الذي تريده، مثلا PDF أو HTML أو RTL ، وهذه ميزة رائعة.
تجد هذه المكتبة متوافرة عند إضافة Referece  وتجد العديد من الشروحات حولها.

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

ما طرأ فوق بحد ذاته مشكلة، فأنت غالبا لن تستطيع الوصول للسيرفر، لأنك تكون تملك استضافة عادية، وهنا يجب البحث عن حلول، قد تخبرني بأنك تملك سيرفر، ولكن العميل غالبا يشتري استضافته بنفسه، أو سيرفره بنفسه، ولا تريد دخول دوامة معه.
إحدى الحلول الأخرى هو استخدام مكتبة Open XML SDK المجانية التي تقدمها مايكروسوفت نفسها، إلا أن هذه المكتبة للأسف لا تتيح لك تصدير إلى PDF ، فقط تتيح لك إنشاء ملفات doc & docx ، وهو للأسف أمر ليس جيد في حق مايكروسوفت.

لكي لا أطيل، هنالك حل سحري جربته من القدم وما زال يعمل بكفاءة هو استخدام مكتبات GemBox.Document وهي مكتبة مدفوعة، ولكن النسخة المجانية منها تتيح لك التعامل مع ملفات وورد لغاية 20 فقرة، وهو أمر كافي لمشكلتنا ( تعديل على شهادة صفحة واحدة ) ، وانا بصراحة ألجأ لهذا الحل كثيرا.
وحتى يكون المقال متنوع، أجد أشهر الحلول المدفوعة استخدام مكتبة Aspose.Words فهي قوية وبها خيارات كثيرة وسهلة الاستخدام، إلا أن ما يعيب هذه المكتبات سعرها الغالي نسبيا.
وكعادتي أنبه بالابتعاد عن المكتبات المسروقة والمكركة، التزم بالحلال، وكن قابض على الجمر.
بالتوفيق

تعديلات على واجهة الموقع

متابعينا الكرام ، قمت بتطوير واجهة الموقع باستخدام bootstrap  ، وأثناء عملي أتاني مشروع فاضطررت أن أوقف العمل  مؤقتا ، على أن أتم العمل لاحقا

شكرا لكم على صبركم

خيارات إعداد البريد الإلكتروني لموقع

بصفتي مطور مواقع بالدرجة الأولى، يتطلب مني دائما أن أقوم بإعداد خدمة البريد لمواقع إلكترونية أقوم ببرمجيتها ليكون بمقدور الشركة أو الشخص إنشاء بريد باسم الشركة مثل : info@aaaaa.com وهنا الخيارات المتاحة

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

الخيارات المدفوعة متعددة، لكثرة الشركات التي تقدم خدمة استضافة البريد الالكتروني على النطاق ( الدومين )، وتتمايز الشركات فيها بينها، مثلا في مساحة البريد الإلكتروني، الحماية،  التصفية (الفلترة)... إلخ
المشكلة في الخيارات المدفوعة هي تكلفتها المرتفعة نسبيا، فمثلا : متوسط أسعار إنشاء بريد إلكتروني واحد هي 5 دولار شهريا، أي سنويا 60 دولار، ولو أرادت الشركة إنشاء 10 حسابات بريد إلكتروني سيتوجب عليها دفع ما يزيد عن 500 دولار سنويا لاستضافة الايميلات.
وفي نفس الوقت تكون الشركة قد دفعت ثمن الاستضافة العادية لموقعها مبلغ لا تزيد عن 150 دولار سنوي ( أتكلم عن أي موقع متوسط )، وحينما تخبر العميل بأنه يتوجب عليه أن يدفع 500 دولار كي يحصل على خدمة بريد فاخر  ( أغلب مزاياه لن يستخدمها أبدا )، فيتعجب منك لأن تكلفة البرمجة طوال العمر أقل من 1000 دولار، والحديث يطول.
أما عن الشركات وأفضلها، كلها ممتازة لأنه في حالة الدفع الكل يتنافس، وصراحة لم أجرب أي منها في بيئة فعلية لمدة طويلة، تستحق أن أقوم بتقييمها.

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

الآن لكي لا نطيل، ندخل في القسم الأهم ، وهو الخيار المجاني.

أغلب شركات الاستضافة تقدم لك خدمة البريد الإلكتروني مجانا على نفس الاستضافة، حيث تقوم بالولوج إلى لوحة تحكم الاستضافة وإنشاء الحساب الإلكتروني، وتعطيك خيار الدخول إليه إما عبر برامج البريد الإلكتروني Email Clients  أو عن طريق صفحة ويب مثل mail.aaaaa.com.
وهو خيار تعتمده الكثير من المواقع ولكن له  ما عليه هذا الخيار .
العيوب
1- مرتبط بالاستضافة: أي أن العميل إذا أراد بعد فترة تغيير شركة الاستضافة لأي سبب كان، فإنه سيخسر الحسابات ومحتواها ، وعليه أن يقوم بإنشاء حسابات من جديد، والمشكلة ليست بالحساب، بل في محتوى البريد السابق الذي خسره، وهو لا يقدر بثمن، صحيح أن هنالك خيارات نقل الرسائل Migration، ولكن أغلب الشركات لا تقدمه، أيضا يمكن إتباع حل هنا وهو استخدام برامج البريد الالكتروني Email Clients والتي تقدم خدمة حفظ الرسائل حتى لو تم تغيير الحساب، وأشهرها Microsoft Outlook & Mozilla ThunderBird ، ولا عجب أن الشركات الرسمية تصر على استخدام برنامج الأوتلووك

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

3- المشاكل الأمنية: حيث هنالك قاعدة في مجال الشبكات والسيرفرات وهي One Machine, One Service  ، أي جهاز واحد تعمل عليه خدمة واحدة فقط، مثلا كان في خادم IIS ثغرة، فتم اختراق السيرفر، فطبيعي ستضرر كل الخدمات الأخرى مثل خدمة البريد المستضافة على السيرفر، لذلك يفضل دائما أن تكون كل خدمة مستضافة على سيرفر خاص.

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

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

أنسب خيار هو : الخيار المجاني الآخر ، هو استضافة البريد الالكتروني عند شركة تقدم خدمة مجانية.

وهنا يجب أن أعقب أن مشكلة إعداد حسابات البريد الإلكتروني وتكاليفها كانت قديما لا شيء، بسبب أن كبرى الشركات مثل مايكروسوفت وجوجل كانت تقدم هذه الخدمة مجانا، فمثلا مايكروسوفت كانت تقدم خدمة إنشاء حسابات لغاية 500 حساب ( عدد مهول ) وكل حساب لديه مساحة تزيد عن 3 جيجا، وأمست 7 جيجا لاحقا، ويمكن للمستخدمين الوصول إلى حسابهم كأنه حساب هوتميل تقليدي ، من خلال موقع الهوتميل أو الأوتلوك ، ولا أخفيكم أن بريد الشركة وحساباتها كانت على هذه الخدمة ، ولدي بريدي الخاص khalil@developers.ps .
ثم بدأت الشركات بالطمع، فقامت جوجل بجعل الخدمة مدفوعة، ومن ثم مايكروسوفت، وهو عار عليهم بكل معاني العار، ويتوجب علينا قبل نهاية العام أن نجد شركة أخرى، بل حتى أن مايكروسوفت وفرت خدمة بديلة مدفوعة ( 5 دولار شهريا لحساب الواحد ) ولم توفر أداة لنقل الحسابات والرسائل من الخدمة القديمة ( تخلف واضح ).

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

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

حسنا كيف أبدأ باستخدام خدمة بريد زوهو
الطريقة سهلة، اذهب إلى موقع Zoho.com  قم بإنشاء حساب، ومن ثم يطلب منك إدخال الدومين، وبعد إدخال الدويمن يتطلب منك تعديل خوادم الدي أن اس NS nameservers مثلا MX و cname ، وهي خطوة ليست سهلة، ولكنها ليست صعبة أيضا، فهم سيضعون لك الشرح، في كل الأحوال إذا واجهتك مشكلة يمكنك محادثتي لأساعدك في ضبطها.
يمكن أيضا لحسابات زوهو أن ترتبط ببرنامج الأوتلوك وهذه ميزة .
نقطة أخيرة، أنه أأمل على أي زائر أو قارئ للمقال إذا كانت عنده حلول مجربة أخرى ن يشاركنا فيها لتعم الفائدة.
بالتوفيق للجميع.

حل مشكلة IpOverUsbSvc في الويندوز فون

في أحيان كثيرة عند وصل هاتفك الويندوز فون بالويندوز، تظهر رسالة Windows Phone IP Over USB Transport(IpOverUsbSvc) service is running ، وهذا حل المشكلة ، وهو بسيط .
المشكلة خلاصتها أن الخدمة المسؤولة عن إعطاء الويندوز فون أي بي للاتصال به كأنه على
 شبكة معطلة.

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



بالتوفيق

حل أغلب مشاكل الويندوز فون وخصوصا مشاكل الإنترنت

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

الحل ان شاء الله بسيط وهو عبر خطوتين سهلتين   


الأول
ضبط تاريخ ووقت الهاتف


والثاني
تعديل الدولة : فاغلب الدول العربية والعالمية غير مدعومة لذلك يجب وضع دولة مدعومة وانا انصح باختيار الولايات المتحدة


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


هندسة برمجيات : from z to Agile الجزء الأول


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

نبدأ بسؤال بسيط ما هو ال Software
الإجابة سهلة : هو برنامج
النتيجة : الإجابة خطأ

البرنامج هو Program ، أما ال Software فله قصة أخرى.

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

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

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

قرر مهندسوا البرمجيات أن ال Software ليس مجرد برنامج ، ولكنه نظام بمعنى أوسع، له العديد من الأجزاء، لعل آخرها هو الكود، ولربما لا يكون الكود منها أحيانا.

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

إذا ما هو ال Software
هو مجموع كل من التوثيق، وإدارة المشروع، والكود، وفحص الجودة والكفاءة، وكافة الاختبارات، وفترة الصيانة

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

قام مهندسوا البرمجيات، بوضع خطط وآليات حول كيفية سير ال Software ( سأطلق عليه الآن البرنامج )
وهذه الخطط لضمان النجاح الأمثل لدورة حياة البرنامج، وتضمنت العديد من الآليات والنماذج.

سميت هذه الآليات بالنماذج Models ، بها خطة دقيقة وعمليات معينة يجب أن يسير عليها المشروع لضمان نجاحه

لكي لا أطيل، قام المهندسون بوضع بنموذج لإتمام العمل اسمه الشلال waterfall ، هذا النموذج ينص على بعض المفاهيم منها


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

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

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

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

إضافة دعم ملفات HTML5 في مشروعك مثل svg

أضافت HTML5 و CSS3 العديد من الامتدادات الجديدة، والتي لن تعمل بمشروعك مباشرة حين رفعه على الويب، إلا بإضافة الدعم لها عن طريق ملف Web.Config

افتح ملف الويب كونفيج، وفي وسم
<system.webServer>
أضف فيه التالي
 <staticContent>
      <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
      <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
      <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
      <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
      <mimeMap fileExtension=".webm" mimeType="video/webm" />

      <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
      <mimeMap fileExtension=".spx" mimeType="audio/ogg" />

      <mimeMap fileExtension=".svg" mimeType="images/svg+xml" />
      <mimeMap fileExtension=".svgz" mimeType="images/svg+xml" />

      <remove fileExtension=".eot" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <mimeMap fileExtension=".otf" mimeType="font/otf" />
      <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
    </staticContent>

حل خطأ Unable to get property 'UI' of undefined or null reference

عند استخدامك لأداة ScriptManager  في ASP.NET الإصدار الأخير ، تجد أن هذا الخطأ يظهر
Unable to get property 'UI' of undefined or null reference
ويعكر صفوك مع الصفحة. الحل بسيط وهو كذلك

عليك باستبدال أداة ScriptManager  بأداة ajaxToolkit:ToolkitScriptManager
وستكون بالشكل التالي
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>

تمام تم حل المشكلة بنجاح
بالتوفيق