الرئيسة
عن الشركة
الخدمات والمنتجات
أشقاؤنا
عملاؤنا وشركاؤنا
مكتبة شور
مقدمة في هندسة البرمجيات 2-5 

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

الأسئلة المذكورة أدناه هي تلك الأكثر تكرارًا، وبالتالي تشكل هذه الأسئلة مع أجوبتها ملخصًا موجزًا وبليغًا عن هندسة البرمجيات.

الأسئلة الأكثر تكراراً حول هندسة البرمجيات

السؤال

الجواب

ما هي البرمجية؟

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

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

هو ذلك الفرع الهندسي الذي يعنى دراسة جميع جوانب إنتاج البرمجيات

ما الفرق بين هندسة البرمجيات وعلوم الحاسب؟

تهتم علوم الحاسب بدراسة النظريات، أما هندسة البرمجيات فتهتم بالجوانب العملية لتطوير برمجيات مفيدة.

ما الفرق بين هندسة البرمجيات وهندسة الأنظمة؟

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

ما هي إجرائية تطوير البرمجيات؟

إنها مجموعة من النشاطات التي تهدف إلى تطوير أو صيانة النظام البرمجي.

ما هو نموذج إجرائية تطوير البرمجيات؟

إنه أسلوب معين في تنظيم نشاطات إجرائية تطوير البرمجيات.

ما هي التكاليف في عملية إنتاج البرمجيات؟

ستون بالمائة تقريباً من التكاليف هي تكاليف تطوير النظام، في حين أن أربعون بالمائة هي تكاليف الاختبار.

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

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

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

ما هي الأدوات CASE؟

 

هي عبارة عن أنظمة برمجية تساعد مهندس البرمجيات في عملية تطوير البرمجيات. بمعنى أنها تدعم مناهج هندسة البرمجيات.

ما هو المنتج البرمجي الجيد؟

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

ما هي أهم التحديات التي تواجه هندسة البرمجيات اليوم؟

التعامل مع التنوع الكبير في عالم البرمجيات، وتخفيض مواعيد تسليم المشاريع البرمجية، وتطوير برمجيات جديرة بالثقة.

 
ما هي البرمجيات ؟

يخلط العديد من الأشخاص، حتى من الاختصاصين، بين المصطلح "برمجية" (Software) والمصطلح برنامج (Program) رغم اختلافهما. إن مصطلح "برمجية" أعم من مصطلح "برنامج"، حيث أن البرمجية الواحدة تحتوي عادة على عدة برامج منفصلة إضافة إلى معطيات التوثيق (Documentation data) ومعطيات التشكيل (Configuration data). ومعطيات التشكيل هي جملة الملفات الضرورية لإعداد (Setup) هذه البرامج، أما معطيات التوثيق فهي تعنى بتوثيق النظام الضروري لتوصيف هيكلية النظام (ترابط عناصر هذا النظام مع بعضها البعض)، وبتوثيق الاستخدام الذي يهتم بتقديم بعض الخطوط الإرشادية لمستخدم النظام حول كيفية الاستخدام. واليوم تترافق العديد من البرمجيات مع موقع ويب، بحيث سيكون بإمكان المستخدمين تحميل آخر المعلومات حول المنتج البرمجي. يتم تطوير البرمجيات بواسطة أشخاص يدعون "مهندسي البرمجيات".

تقسم المنتجات البرمجية من وجهة نظر السوق إلى نوعين أساسين:

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

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

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

ومع تطور البرمجيات اليوم، أخذ هذان النوعان بالتداخل نوعًا ما. فقد أصبحنا نرى العديد من شركات البرمجيات التي تطور أنظمة عامة ثم تخصصها بناءً على طلب زبون محدد. ومن أشهر هذه الأنظمة نجد أنظمة تخطيط موارد الشركات مثل (Enterprise Resource Planning) مثل النظام SAP.

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

"هي ذلك الفرع الهندسي الذي يعنى بكل جوانب إنتاج البرمجيات ابتداءً بالمراحل الأولى المتمثلة بتوصيف النظام ووصولا إلى مرحلة صيانة هذا النظام بعد أن وضع قيد العمل".

 من قراءتنا للتعريف السابق نجد أنفسنا مضطرين للوقوف عند نقطتين هامتين:

1. فرع هندسي: يهتم المهندس بجعل الأشياء تعمل. أي أنه يوظف كل النظريات والمنهجيات والأدوات المتاحة بين يديه لإيجاد حلولٍ لمشكلات معينة. بل يعني المهندس إلى ما هو أبعد من ذلك, إذ يحاول جاهدًا أن يوجد حلا للمشكلة حتى في غياب وجود أي نظرية. يعمل المهندس ضمن جملة من القيود التنظيمية والمالية، لذلك فإن حلوله يجب أن تكون متلائمة مع هذه القيود الحتمية.

2. كل جوانب إنتاج البرمجيات: لا يعنى مهندس البرمجيات بالجانب التقني (الهندسي) فقط لعملية إنتاج البرمجيات، بل إنه يدرس أيضًا نشاطات أخرى مثل إدارة المشاريع البرمجية وتطوير نظريات ومنهجيات جديدة. في بعض الحالات تتحول عملية تطوير البرمجيات إلى مهمة إبداعية أكثر من كونها مهمة هندسية، وبالتالي - في هذه الحالة - لسنا مضطرين إلى اتباع أسلوب منظم في عملية الإنتاج ولعل ذلك يبدو جليًا في تطوير الأنظمة القائمة على الويب (Web-based system).

م. زاهر الحاج حسين (بتصرف عن  Ian Sommerville)