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

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
الرجوع عن تعديل معلق واحد من 41.176.45.249 إلى نسخة 37048205 من شادي.
JarBot (نقاش | مساهمات)
ط بوت:الإبلاغ عن رابط معطوب أو مؤرشف V4.2 (تجريبي)
سطر 1:
{{بطاقة تخصص}}
[[ملف:Coding Shots Annual Plan high res-5.jpg|تصغير|300بك]]
'''هندسة البرمجيات''' {{إنج|Software engineering}} المجال الذي يهتم بتطوير، وتصميم [[برمجية|البرمجيات]]، عالية الجودة آخذة بعين الاعتبار تخصيصات المستخدم، ومتطلباته على جميع المستويات.
تهتم هندسة البرمجيات بتكوين البرنامج منذ مراحله الأولى أثناء تحليل المشكلة، ومن ثم التصميم، وكتابة البرنامج حتى القيام بتجريبه، واختباره، وتنصيبه على الأجهزة، والقيام بعملية صيانته.
وهي حديثاً يمكن أن تنقسم لقسمين [[حوسبة لينة|الحوسبة اللينة]] والحوسبة الصلبة.<ref>{{مرجع ويب|الأخير=ACM|السنةسنة=2007|المسارمسار=http://computingcareers.acm.org/?page_id=12|العنوانعنوان=Computing Degrees & Careers|الناشرناشر=ACM|تاريخ الوصول=2010-11-23| مسار الأرشيفأرشيف = httphttps://web.archive.org/web/20180613160625/http://computingcareers.acm.org/?page_id=12 | تاريخ الأرشيفأرشيف = 13 يونيو 2018 }}</ref>
 
== تاريخ هندسة البرمجيات ==
 
استخدمت هندسة البرمجيات كمفهوم نظري من حين لآخر في أواخر الخمسينات وبداية الستينات من القرن الماضي. أما الاستخدام الرسمي الأول لهذا المصطلح فكان في مؤتمر عقد من قبل اللجنة العلمية في منظمة [[حلف شمال الأطلسي]] [[1968]] <ref>{{مرجع كتاب|الأخير=Leondes|العنوانعنوان=intelligent systems: technology and applications|السنةسنة=2002|الناشرناشر=CRC Press|isbn=978-0-8493-1121-5|quoteاقتباس=1.4 Computers and a First Glimpse at Al (1940s)|الصفحةصفحة=I-6}}</ref> حول البرمجيات، وقد أخذ هذا المصطلح بالانتشار منذ ذلك الحين ولاقى اهتماماً متزايداً في نواح مختلفة. عقد المؤتمر لمعالجة مايعرف "[[أزمة البرمجيات]]" والتي ظهرت بسبب عدم استخدام منهجية في التفكير (Software Development Process) عند بناء البرمجيات، مما أدى إلى ظهور أخطاء كثيرة خلال عملية بناء وصيانة البرمجيات، وبالتالي أصبحت البرمجيات تحتاج إلى وقت كبير لتطويرها ولصيانتها، وكلفة مالية عالية أكثر مما هو مخمن لها، وبعد تحمل التأخر في الوقت وتجاوز الميزانية كانت البرمجيات ذات كفاءة ضعيفة في إنجاز الوظائف المطلوبة، وقلة في الفعالية كذلك بعدم تلبية كافة المتطلبات بالشكل الكامل.<ref>{{Cite journal|المسارمسار=http://www.acm.org/classics/may96/|العنوانعنوان=On the Criteria To Be Used in Decomposing Systems into Modules|التاريختاريخ=December 1972|journalصحيفة=[[Communications of the ACM]]|issueالعدد=12|volumeالمجلد=15|الصفحاتصفحات=1053–1058|الأخير=Parnas|الأول=David|تاريخ الوصول=2008-12-26|وصلة المؤلفمؤلف=David Parnas|doi=10.1145/361598.361623}}</ref>
 
== مفهوم هندسة البرمجيات ==
 
'''البرمجية''' {{إنج|Software}} شيء غير ملموس إلى حد ما بالمقارنة مع المنتجات الأخرى، وهي سلسلة من آلاف أو ملايين الأوامر التي تطلب من [[حاسوب|الحاسوب]] إجراء عمليات معينة مثل عرض المعلومات، أو إجراء الحسابات، أو تخزين البيانات. هذه البرمجيات هي بمثابة الروح من الجسد في النظام الحاسوبي وهي في توسع دائم وازدياد في التعقيد
والمتطلبات والمهام التي تقوم بتنفيذها. أما '''هندسة البرمجيات''' فهي فرع من فروع الهندسة يقوم على مجموعة أسس وقواعد تهدف إلى تصميم وتطوير البرامج بوفرة ونوعية عالية تلبي احتياجات المستخدمين، هذا الفرع من الهندسة يتميز بأنه لا يحتاج إلى رأس مال كبير وبالتالي الخسارة فيه قليلة على عـكس بقية الفروع الأخرى من الهندسة، كما لا يكفي لإيجاد البرمجية المتكاملة والجيدة عمل شخص واحد وإنما يتطلب ذلك فريقاً من المهندسين الجيدين. وقد كان ضروريا إيجاد علم يعني بهندسة البرمجيات لوضع الأسس والمعايير التي تصون هذه المهنة من المتطفلين بحيث يصبح بالإمكان تمييز البرنامج الجيد من غير الجيد.<ref name="swebookv3">{{مرجع ويب|العنوانعنوان=Software Engineering Body of Knowledge (SWEBOK Version 3), 2014|المسارمسار=https://www.computer.org/web/swebok/v3|الموقعموقع=www.swebok.org|الناشرناشر=IEEE Computer Society|تاريخ الوصول=24 May 2016|ref=swebookv3|التنسيقتنسيق=pdf| مسار الأرشيفأرشيف = httphttps://web.archive.org/web/20180714050735/https://www.computer.org/web/swebok/v3 | تاريخ الأرشيفأرشيف = 14 يوليو 2018 }}</ref>
 
== مراحل بناء النظام البرمجي ==
سطر 43:
=== الترميز(كتابة الكود) ===
 
تحول الخوارزميات والمخططات [[UMLلغة النمذجة الموحدة|Diagrams]] التي تم انتاجها في مرحلة التصميم إلى إحدى [[لغة برمجة|اللغات البرمجية]]، وذلك لانتاج برنامج او نظام قابل للاستخدام من قبل الزبون, يلبي احتياجتة الموضحة في وثيقة الشروط. خلال هذه المرحلة تتم بعض الاختبارات test على بعض اجزاء النظام للتاكد من عمله بطريقة صحيحة, علماً ان مرحلة الاختبار Testing هي مرحلة منفصلة يتم العمل عليها لاحقاً.
 
=== الاختبار والتكاملية ===
سطر 63:
== الفرق بين البرمجة وهندسة البرمجيات ==
 
[[برمجة|البرمجة]] هي كتابة [[شيفرة مصدرية|الكود المصدري]] للبرنامج، وبالتالي تعتبر جزء من مرحلة التنفيذ (Implementation) في هندسة البرمجيات التي تعمل على بناء [[النظام البرمجي]] كمشروع متكامل.
 
== المجالات المختلفة التي لها علاقة بهندسة البرمجيات ==
* [[رياضيات|الرياضيات]]: يحتوى أغلب البرنامج على عناصر رياضيات مثل (logarithms) لذلك فإن مطوري هذا النوع من البرامج يكونون على اطلاع بالعديد من النواحي الرياضية.
* [[علم|العلوم]]: البرنامج له مواصفات علمية قياسية عديدة، مثل: الأداء وحجم البرنامج وتنوع الأحمال.network speed المعادلات الرياضية الطرق الحديثة لقواعد البيانات
* [[هندسة رياضية|الهندسة]]
* [[تصنيع|التصنيع]]: البرامج عبارة عن مجموعة من الخطوات. كل خطوة يتم تحديدها وتنفذ بدقة. مثل الكثير من الصناعات، لتحسين وتطوير خطوط الآنتاج والوصول إلى مستوى الجودة المطلوب.
* [[إدارة المشاريع|إدارة المشروعات]]: سواء كان تجاريا أو غير تجارى فإنة يحتاج إلى إدارة. مثل: جدول زمني وتكلفة تخصص له. عوامل بشرية للإدارة ومصادر مثل مكتب وأجهزة كمبيوتر.
 
== مقالات متعلقة بهندسة البرمجيات ==