بسم الله نبدا في الشرح
برامج الحاسب أوبرمجيةمصطلح عام يُستخدم لوصف مجموعة من عمليات الحاسب متكاملة لحل مسألة رياضية معينة أو القيام بعملية إحصائيةأو لتصحيح صيغة تحريرية أو غير ذلك . هي صياغة البيانات و الإجراءاتوأدلة التعليمات الفنيةالتي تؤدي مهمة ما في نظام تشغيل الحاسب. ]1[
يتضمن مصطلح السوفتوير ما يلي:
*. برامج التطبيقات: مثل برامج معالجة الكلماتالتي تؤدي بعض المهام المطلوبة لمستخدمي الحاسب.
*. برنامج ثابت: برنامج صغير يتحكم في الأجهزة الإليكترونية، وهذا البرنامج يكون مخزنًا على شرائح ذاكرة مبرمجة إليكترونيًا ومثبتة على اللوحة الرئيسية )اللوحة الأم( أو أنواع أخرى من حاملات المكونات المادية المتكاملة للأجهزة.
*.Middleware: عبارة عن برنامج وسيط يتحكم في النظم الموزعةويعمل على التنسيق فيما بينها.
*. برامج النظم: مثل نظم التشغيلالتي تشترك مع مكونات الحاسب المادية في تقديم الخدمات اللازمة لبرامج التطبيقات.
*.اختبار البرامج: عبارة عن مجال مستقل يهتم بالبرمجة وتطوير البرامج. وتوجد عدة طرق لاختبار المنتج والتأكد من جودته قبل طرحه للاستخدام من قبِل فرد أو مجموعة. جدير بالذكر أن العديد من الاختبارات الخاصة بكفاءة البرنامج ومستوى أدائه وشكله تُجرى من خلال مجموعة من برامج الاختبار الحديثة التي تشتمل على أدوات متنوعة، مثل برامج QTP وLoad runner وBlack box وما إلى ذلك، وذلك لتحرير قائمة المتطلبات في الكود المطور. إن شهادة ISTQB ضرورية للغاية بالنسبة للمهندسين الذين يرغبون في العمل في مجال اختبار البرامج. ]2[مهندس اختبار برامج حاصل على درجة الماجستير في إدارة الأعمال.
*. فحص البرمجيات : مصطلح شامليتضمن جميعالبرامج المساعدةوالبرامج التطبيقية التي تعمل معًا لاختبار أيةحزمة برمجية، ولكن ليس ذلك بالضرورة؛ حيث إنها يمكن أن تستخدم أيضًا في أغراضتشغيليةأخرى. وبالتالي، فإن عملية الاختبار ليست عملية توصيف أو ضبط، ولكنها مجرد بيئة عمل لبرامج التطبيقات أو مجموعات فرعيةمنها.
يشمل مصطلح السوفت وير مواقع الويبوالبرامج وألعاب الفيديووغيرها من البرامج والتطبيقات التي يتم تكويدها )أي كتابة الكود الخاص بها( باستخدام لغات البرمجة، مثل لغة C و++C...إلخ.
هذا ويستخدم مصطلح "السوفت وير" في بعض الأحيان في سياق أوسع بحيث يعني أي شيء غير مكونات جهاز الحاسب، ولكنهيُستخدممع مكونات جهاز الحاسب مثل الأفلام والأشرطة والسجلات. ]3[
لمحة عامة
غالبًا ما يشمل مصطلح "السوفت وير" كل شيء في جهاز الحاسب عدا عتاد الحاسوب؛ أيالمكونات المادية للحاسب، ولكن البرامج عبارة عن مواد غير ملموسة داخل جهاز الحاسب. ويشمل "السوفت وير" أو "برامج الحاسب" مجموعة كبيرة للغاية من المنتجات والوسائل التقنية المطورة باستخدام تقنيات مختلفة، مثل لغات البرمجةأولغات النصوص البرمجيةأو حتىالميكروكودأوFPGA. ومن بين أنواع "السوفت وير" تأتي المواقع الإليكترونيةالمطورة من خلال بعض التقنيات الحديثة، مثل لغات HTML وبي إتش بي وبيرل وJavaServer وASP.NET وXML، بالإضافة إلىتطبيقات سطح المكتب، مثلبرنامج "مايكروسوفت وورد"وبرنامج التطبيق المكتبي OpenOfficeالذين تم إنشاؤهما باستخدام بعض التقنيات الحديثة، مثل لغة c و++c وJava و#c...إلخ. وعادةً ما تعمل برامج الحاسب معتمدة على بعض نظم التشغيل والتليفزيوناتومحمصة الخبز الكهربائية...إلخ.
العلاقة بين البرامج والمكونات المادية لجهاز الحاسب
سميت برامج الحاسوببهذا الاسم لتمييزها عن مكونات جهاز الحاسوب"الهارد وير"التي تشمل ا أو ما يُعرف باسم لغة الآلة )Machine Langu* "السوفت وير" عبارة عن سلسلة مرتبة من التعليمات لتغيير حالة "الهارد وير" بتسلسل معين. وعادةً ما تكون هذه التعليمات مكتوبةبلغة برمجة عالية المستوىيمكن للإنسان التعامل معها بسهولة وكفاءة )وهي أقرب إلىلغة البشر الطبيعية( من اللغة البرمجية التي يفهمها جهاز الحاسب لغة الآلة )Machine Language(. ويتم تحويل جميع الجمل البرمجية المكتوبة بلغات برمجة عالية المستوى وتنفيذها جملة جملة باستخدام المفسر)Interpreter(أو تنفيذها دفعة واحدة باستخدام المترجم Compiler. والشفرة الناتجة من هذا التحويل يُطلق عليها لغة الآلةMachine Language أو شفرة الهدف Object Code. يمكن أيضًا كتابة البرامج باستخدام لغة الأسيمبلي) Assembly(- وهي - عبارة عن ترميز للغة البرمجية التي يفهمها الحاسب باستخدام الأحرف الهجائية الإنجليزية. هذا ويجب تحويل لغة Assembly إلى اللغة البرمجية التي يفهمها الحاسب باستخدام أداة Assembler.
أول من استخدم مصطلح "سوفت وير" بهذا المعنى"جون وايلدر توكي"في عام 1958. ]4[إن النظرية التي تعتبر الأساس لمعظم برامج الحاسب الحديثة قدمها لأول مرة"آلان تورينج"في مقاله الذي تم نشره عام 1935Computable numbers with an application to the Entscheidungsproblem. "مايك هالي" 2005.
أنواع البرامج
بنية طبقية توضح مكان وجود نظم التشغيل في نظم البرامج المستخدمة عمومًا على سطح المكتب
تقسِّمنظم الحواسيبالعمليةنظم البرامجإلى ثلاث فئات رئيسية: برامج النظاموبرامج البرمجة وبرامج التطبيقات، على الرغم من أن هذا التصنيف قد يبدو اعتباطيًا وكثيرًا ما يكون غير واضح.
برامج النظم
تساعدبرامج النظمفي تشغيل مكونات جهاز الحاسوب ونظام التشغيل. تشمل برامج النظم:
*. برنامج تشغيل الأجهزة
*. نظم التشغيل
*. وحدات الخدمة
*. برامج مساعدة
*.نظم الإطاراتالتي تساعد مستخدم الحاسوب على فتح عدة برامج في الوقت نفسه وكل برنامج في إطار أو نافذة خاصة به.
)ليس من الضروري التعرف على هذه البرامج بالتفصيل(
إن الهدف من برامج النظم هو مساعدة مطوري التطبيقات لتفادي الخوض في التفاصيل الخاصة بجهاز الحاسوب بما في ذلك الأجهزة الملحقة، مثل وسائل الاتصال والطابعات وأجهزة العرض والقراءة ولوحات المفاتيح ...إلخ. هذا بالإضافة إلى التفاصيل الخاصة بتقسيم مصادر الحاسوب، مثل الذاكرة وزمن المعالجة بطريقة آمنة وثابتة.
لغات البرمجة
مقالة مفصلة: لغة برمجة
توفر لغات البرمجةفي الغالب أدوات لمساعدة المبرمج في كتابة برامج الحاسوبباستخدام لغات برمجة مختلفة، ولكن بطريقة سهلة. تشتمل الأدوات على:
*. المترجمCompiler )يتم من خلالها تحويل جميع الجمل البرمجية وتنفيذها دفعة واحدة(.
*.المصحح)أداة اكتشاف الأخطاء(
*. المفسرInterpreter )يتم من خلالها تحويل جميع الجمل البرمجية وتنفيذها جملة جملة(.
*.الرابط)حاسوب(Linker )أداة للربط بين نصوص الكود البرمجي التي يتم تحويلها باستخدام المترجم Compiler ودمجها للحصول على برنامج تنفيذي واحد(
*. برنامج تحرير النصوص
*. إن بيئة التطوير المتكاملةIDE عبارة عن تطبيق واحد يهدف إلى المساعدة في إدارة جميع هذه الوظائف.
برامج التطبيقات
تسمحبرامج التطبيقاتللمستخدمين النهائيين بالقيامبمهمةواحدة أو أكثر )لا ترتبط بشكل مباشر بتطوير الحاسوب(. وتتضمن التطبيقات النموذجية:
*. الأتمتة الصناعية
*.البرامج التجارية
*.ألعاب الحاسوب
*. وسائل الاتصال السلكية واللاسلكية)مثل، الإنترنتوكل ما يتعلق به(
*. قواعد البيانات
*. البرامج التعليمية
*.البرامج الطبية
وهناك العديد من الموضوعات المتعلقة ببرامج التطبيقات.
موضوعات متعلقة بالبرامج
البنية
طالع أيضًا:Software architecture
غالبًا ما يرى مستخدمو الكمبيوتر الأمور بصورة مختلفة عن المبرمجين. فالأشخاص الذين يستخدمون أجهزة الكمبيوتر الحديثة الخاصة بالأغراض العامة )في مقابل النظم المضمنةوأجهزة الكمبيوتر التناظرية وأجهزة الكمبيوتر كبيرة الحجم وفائقة السرعة...إلخ( عادةً ما يصنفون برامج الكمبيوتر التي تؤدي مهام متنوعة في ثلاث طبقات وهي: برامج نظم التشغيل وبرامج التطبيقات وبرامج المستخدمين.
*.برامج نظم التشغيل: تشملبرامج نظم التشغيلبرامج التحكم الصغيرةالمعروفة باسم )Firmware(وبرامج تشغيل الأجهزة ونظم التشغيل وواجهة المستخدم الرسومية)GUI( - بشكل عام - وجميع هذه البرامج تسمح للمستخدم بالتفاعل مع جهاز الكمبيوتروالأجهزة الملحقة)الأدوات المساعدة(. غالبًا ما يأتي برنامج نظام التشغيل الأساسي مع جهاز الكمبيوتر. بيد أنه يمكنك تغيير نظام التشغيل الموجود على جهاز الكمبيوتر.
*. برامج التطبيقات: إن برامج التطبيقات أو التطبيقات هي التي تتبادر إلى ذهن معظم الناس عند التفكير في كلمة "سوفت وير". وتتضمن الأمثلة النموذجية على ذلك مجموعة برامج "الأوفيس" وألعاب الفيديو. وغالبًا ما يتم شراء برامج التطبيقات بشكل منفصل عن مكونات جهاز الكمبيوتر. وفي بعض الأحيان يتم الحصول على برامج التطبيقات مع جهاز الكمبيوتر، ولكن هذا لا يغير حقيقة أنها تعمل كتطبيقات مستقلة. وغالبًا ما تكون التطبيقات في أغلب الأحيان عبارة عن برامج تعمل بشكل مستقل عن نظام التشغيل، على الرغم من أنها كثيرًا ما يتم تصميمها للعمل مع نظم تشغيل معينة. وكثير من مستخدمي الكمبيوتر يعتبرون أداة Compiler وقواعد البيانات وغيرها من "برامج النظام" بمثابة تطبيقات.
*.البرامج المكتوبة من قِبل المستخدم: إن خاصيةالتطوير بواسطة المستخدمينيعمل على قيام المستخدم النهائي بتعديل بعض البرامج التي يستخدمها حتى تلبي احتياجاته الخاصة. وتشمل برامج المستخدم قوالب الجداول الإليكترونية ووحدات الماكرو الخاصة بمعالج الكلمات وبرامج المحاكاة العلمية والنصوص البرمجية للجرافيكس والرسوم المتحركة. حتى فلاتر رسائل البريد الإليكتروني تعتبر نوعًا من أنواع برامج المستخدم. وفي الحقيقة، يقوم المستخدمون بإنشاء البرنامج بأنفسهم، وغالبًا ما يغفلون عن مدى أهميته ؛؛ فقد لا يدري المستخدمون الفرق بين الحزم البرمجية الأصلية وما أضافه زملاء العمل اعتمادًا على مدى كفاءة دمج البرامج التي يصممها المستخدم مع حزم التطبيقات الافتراضية.
دليل التعليمات الفنية
مقالة مفصلة:Software documentation
تحتوي معظم برامج الكمبيوتر علىدليل تعليمات فنية للبرنامجحتى يتمكنالمستخدم النهائيمن فهم البرنامج وما يفعله وكيفية استخدامه. وإذا لم يكن هناك دليل تعليمات فنية سهل وواضح، فقد يكون من الصعب استخدام البرنامج، وخاصةً إذا كان برنامج متخصص ومعقد نسبيًا، مثل برنامج"فوتوشوب"و"أتوكاد"...إلخ.
وربما يكون دليل التعليمات الفنية للمطور موجودًا أيضًا إما مع الكود في شكل تعليقات و/أو في شكل ملفات منفصلة تشرح كيفية تشغيل البرنامج وكيفية إدخال بعض التعديلات عليه.
مجموعة الملفات )مكتبة الملفات(
مقالة مفصلة: مكتبة برمجية
إن الملفات القابلة للتنفيذ لا تكون عادةً كاملة بالشكل الكافي الذي يجعل من الممكن تنفيذها بشكل مباشر. تتضمنمجموعة ملفات البرنامج)Software Libraries( مجموعات من الوظائفوالاستخدامات يمكن تضمينها في تطبيقات أخرى. وتحتوي نظم التشغيل على العديد من ملفات البرامج القياسية، وغالبًا ما يتم توزيع التطبيقات مع الملفات الخاصة بها.
استخدام معايير قياسية للبرامج
مقالة مفصلة:Software standard
بما أنه يمكن تصميم برامج الكمبيوتر باستخدام العديد من لغات البرمجةالمختلفة وفي العديد من نظم التشغيلالمختلفةوبيئات التشغيل، فإننا بحاجة لوضعمعايير قياسية لبرامج الكمبيوترحتى يمكن للبرامج المختلفة أن تعمل مع بعضها البعض وتتبادل المعلومات فيما بينها. على سبيل المثال، إذا تم إرسال رسالة بريد إلكترونيمنبرنامج "مايكروسوفت أوت لوك"، فينبغي أن تكون قابلة للقراءة إذا تم فتحها في برنامج"ياهو ميل"والعكس صحيح.
تنفيذ برامج الكمبيوتر
مقالة مفصلة:Execution )computing(
ينبغي "تحميل" برامج الكمبيوتر في الجزء المخصص للتخزين في الكمبيوتر )مثل، القرص الصلبأوالذاكرةأو ذاكرة الوصول العشوائي( المعروفة باسم RAM.وبمجرد الانتهاء من تحميل البرنامج، فإن الكمبيوتر يصبح قادرًا علىتشغيلالبرنامج. ويتضمن ذلك تمريرالتعليماتمن برنامج التطبيق وعبر برنامج النظام إلىالهارد وير)مكونات جهاز الكمبيوتر( الذي يتلقى التعليمات في النهاية في شكل لغة برمجةيفهمها جهاز الكمبيوتر نفسه. هذا ويقوم كل سطر برمجي بجعل جهاز الكمبيوتر يتولى تنفيذ عملية معينة، مثل نقلالبياناتأو إجراءعمليات حسابيةأو تغييرالتحكم في تدفقالتعليمات.
عادةً ما يكون نقل البيانات من مكان إلى آخر في الذاكرة. وفي بعض الأحيان يتضمن الأمر نقل البيانات بين الذاكرة الرئيسية )Memory( ومناطق التخزين في وحدة المعالجة المركزية )Register(؛ مما يتيح الوصول السريع إلى البيانات في وحدة المعالجة المركزية. إن نقل البيانات، وخاصةً إذا كانت بكميات كبيرة، قد يكون مكلفًا. ومن ثم، فإنه يمكن تجنب هذا الأمر في بعض الأحيان عن طريق استخدام "مؤشرات" لبيانات. وتشمل العمليات الحسابية إجراء بعض العمليات البسيطة، مثل زيادة قيمة العنصر الخاص ببيانات المتغير. وربما تطلبت العمليات الحسابية الأكثر تعقيدًا استخدام العديد من العمليات وعناصر البيانات معًا.
مستوى جودة البرامج وفاعليتها
مقالات مفصلة: جودة البرمجيات فحص البرمجياتSoftware reliability
إن نوعية برامج الكمبيوتر مهمة جدًا، وخاصةً البرامج التجارية والبرامج التي تعمل مع نظام التشغيل، مثل مايكروسوفت أوفيسوكذلك برامج نظام التشغيل نفسه مثل مايكروسوفت ويندوز ولينكس...إلخ. وإذا كان هناك عيب في البرنامج، فإنه يمكن أن يحذف ملفات العمل ويعطل جهاز الكمبيوتر ويتسبب في حدوث أشياء أخرى غير متوقعة. يُطلق على الأخطاء والمشكلات اسم أخطاء برمجية)Bugs(. جدير بالذكر أنه يتم اكتشاف العديد من الأخطاء والتخلص منها في أثناء اختبار البرامج. ومع ذلك، فإنه نادرًا ما تستطيع عملية اختبار البرامج التخلص من كل الأخطاء، ويقول بعض المبرمجين إن "كل برنامج يحتوي على خطأ واحد على الأقل" )قانون "لوبارسكي"(.إن جميع شركات برامج الكمبيوتر الكبيرة، مثل "مايكروسوفت" و"نوفيل" وصن مايكروسيستمزلديها أقسام لاختبار البرامج الخاصة بها هدفها الأساسي اختبار مستوى جودة البرامج وضمان فاعليتها. يمكن اختبار برامج الكمبيوتر من خلال اختبار الوحداتواختبار مشكلات البرنامجبالإضافة إلى طرق أخرى يتم إجراؤها يدويًا أو أوتوماتيكيًا وهذا هو الأكثر شيوعًا؛ حيث إن كم الكود الذي يتم اختباره قد يكون كبيرًا للغاية. على سبيل المثال، طبقت ناساإجراءات صارمة للغاية لاختبار برامج الكمبيوتر الموجودة في مكوك الفضاءوبرامج أخرى؛ لأن أي سوفت وير مشتمل على أخطاء يمكن أن يوقف البرنامج بأكمله ويعطل المركبة ويتسبب في خسائر فادحة.
ترخيص برنامج الكمبيوتر
مقالة مفصلة: رخصة البرمجيات
إنترخيصبرنامج الكمبيوتر يمنح المستخدم الحق في استخدام البرنامج ضمن إطار وشروط هذا الترخيص. وتأتي بعض البرامج مزودة بترخيص استخدامها عند شرائها بنفسك أو قد تأتي مزودة بترخيص OEM من الشركة الأصلية عندما يأتي جهاز الكمبيوتر الذي تم شراؤه مثبتًا عليه البرنامج. في حين أن هناك برامج أخرى تأتي بترخيص استخدام مجانيويُمنح المستخدم حق تعديل البرنامج وإعادة توزيعه. هذا بالإضافة إلى أنه توجد بعض البرامج المجانيةأو التجريبية. انظر أيضًا: License Management.
براءة الاختراع
مقالات مفصلة:Software patentSoftware patent debate
يمكن تسجيلبراءة اختراع لبرنامج كمبيوتر، إلا أن هذا الأمر قد يكون موضع خلاف في مجال البرمجيات؛ حيث يوجد العديد من الآراء المتباينة إزاء هذا الأمر. إن نقطة الخلاف المثارة حول موضوع براءات اختراع برامج الكمبيوتر تتمثل في عدم السماح بنسخلوغاريتمأو تقنية معينة يتضمنها البرنامج من قبِل أشخاص آخرين، فهي تعتبر ملكية فكريةويحذر نسخها إو إعادة نشرها، وذلك وفقًا لدرجة أهمية البرنامج. وهنا يعتقد البعض أن تسجيل براءة اختراع لبرنامج كمبيوتر يعوقتطوير البرنامج، في حين يجادل البعض الآخر قائلين إن براءات الاختراع تعتبر حافزًا قويًا يشجع على ابتكار برامج