تاريخ هندسة البرمجيات
يبدأ تاريخ هندسة البرمجيات في ستينيات القرن العشرين تقريبًا. وقد تطورت كتابة البرمجيات لتصبح مهنة تُعنى بأفضل السبل لرفع جودة البرمجيات وكيفية إنشائها. تشمل الجودة سهولة صيانة البرمجيات، واستقرارها، وسرعتها، وسهولة استخدامها، وقابليتها للاختبار، وسهولة قراءتها، وحجمها، وتكلفتها، وأمانها، وعدد عيوبها أو "أخطائها البرمجية"، بالإضافة إلى سمات أخرى أقل قابلية للقياس مثل الأناقة، والإيجاز، ورضا العملاء، وغيرها الكثير. أما كيفية إنشاء برمجيات عالية الجودة على النحو الأمثل فهي مسألة منفصلة ومثيرة للجدل، تشمل مبادئ تصميم البرمجيات، وما يُسمى "أفضل الممارسات" لكتابة التعليمات البرمجية، فضلًا عن قضايا إدارية أوسع نطاقًا مثل الحجم الأمثل للفريق، والعمليات، وأفضل السبل لتسليم البرمجيات في الوقت المحدد وبأسرع وقت ممكن، و"ثقافة" مكان العمل، وممارسات التوظيف، وما إلى ذلك. كل هذا يندرج تحت مظلة هندسة البرمجيات . [ 1 ]
ملخص
يُعد تطور هندسة البرمجيات ملحوظاً في عدد من المجالات:
- الظهور كمهنة: بحلول أوائل الثمانينيات، ظهرت هندسة البرمجيات بالفعل كمهنة حقيقية ، [ 2 ] لتقف جنبًا إلى جنب مع علوم الكمبيوتر والهندسة التقليدية.
- دور المرأة : قبل عام 1970، كان الرجال الذين يشغلون وظائف هندسة الأجهزة المرموقة وذات الأجور الأعلى يُوكلون كتابة البرامج غالبًا إلى النساء، وقد شغلت شخصيات بارزة مثل غريس هوبر ومارغريت هاميلتون العديد من وظائف برمجة الحاسوب . [ 3 ] [ 4 ] أما اليوم، فعدد النساء العاملات في هندسة البرمجيات أقل من عددهن في المهن الأخرى، وهو وضع لا يُعرف سببه بوضوح. وتعتبر العديد من المنظمات الأكاديمية والمهنية هذا الوضع غير متوازن، وتسعى جاهدةً لإيجاد حل له. [ 5 ]
- العمليات: أصبحت العمليات جزءًا كبيرًا من هندسة البرمجيات. يُشيد بها لقدرتها على تحسين البرمجيات، ولكنها تُنتقد بشدة لقدرتها على تقييد المبرمجين.
- تكلفة الأجهزة: شهدت التكلفة النسبية للبرمجيات مقابل الأجهزة تغيرًا كبيرًا خلال الخمسين عامًا الماضية. عندما كانت الحواسيب المركزية باهظة الثمن وتتطلب فرق دعم كبيرة، كانت المؤسسات القليلة التي تشتريها تمتلك أيضًا الموارد اللازمة لتمويل مشاريع هندسة البرمجيات المخصصة الضخمة والمكلفة. أما الآن، فقد أصبحت الحواسيب أكثر عددًا وقوة، مما يؤثر بشكل كبير على البرمجيات. فالسوق الأوسع يدعم مشاريع ضخمة لإنشاء برمجيات تجارية جاهزة ، كما تفعل شركات مثل مايكروسوفت . وتتيح الأجهزة الرخيصة لكل مبرمج امتلاك طرفية قادرة على الترجمة السريعة نسبيًا . ويمكن للبرامج المعنية استخدام تقنيات مثل جمع البيانات المهملة ، مما يجعل كتابتها أسهل وأسرع للمبرمج. من ناحية أخرى، أصبح عدد أقل بكثير من المؤسسات مهتمًا بتوظيف مبرمجين لمشاريع برمجيات مخصصة ضخمة، مفضلين استخدام البرمجيات التجارية الجاهزة قدر الإمكان.
من عام 1945 إلى عام 1965: الأصول
تشمل الاستخدامات المبكرة لمصطلح هندسة البرمجيات رسالةً من رئيس جمعية آلات الحوسبة (ACM) أنتوني أوتينجر عام 1965 ، [ 6 ] [ 7 ] ومحاضراتٍ ألقاها دوغلاس تي. روس في معهد ماساتشوستس للتكنولوجيا (MIT) في خمسينيات القرن الماضي. [ 8 ] وتُعدّ مارغريت إتش. هاميلتون صاحبة فكرة تسمية هذا التخصص بهندسة البرمجيات، كوسيلةٍ لإضفاء الشرعية عليه خلال تطوير حاسوب توجيه أبولو . [ 9 ] [ 10 ]
لقد ناضلتُ من أجل إضفاء الشرعية على البرمجيات حتى تحظى هي -ومطوروها- بالتقدير اللائق، ولذا بدأتُ باستخدام مصطلح "هندسة البرمجيات" لتمييزها عن هندسة الأجهزة وأنواع الهندسة الأخرى، مع اعتبار كل نوع من أنواع الهندسة جزءًا من عملية هندسة الأنظمة الشاملة. عندما بدأتُ استخدام هذا المصطلح لأول مرة، اعتُبر مُسليًا للغاية، وظلّ موضوعًا للسخرية لفترة طويلة. كانوا يُحبّون مُداعبتي بشأن أفكاري الجذرية. في نهاية المطاف، اكتسبت البرمجيات، وبشكل حتمي، نفس الاحترام الذي تحظى به أي تخصص آخر.
رعت اللجنة العلمية لحلف الناتو مؤتمرين [ 12 ] حول هندسة البرمجيات في عامي 1968 ( غارميش ، ألمانيا) و1969، مما أعطى هذا المجال دفعةً أولية. ويعتقد الكثيرون أن هذين المؤتمرين شكّلا البداية الرسمية لمهنة هندسة البرمجيات . [ 6 ] [ 13 ]
من عام 1965 إلى عام 1985: أزمة البرمجيات وأنظمة التشغيل
شهدت هندسة البرمجيات ازدهارًا ملحوظًا نتيجة ما يُعرف بأزمة البرمجيات في ستينيات وسبعينيات وثمانينيات القرن الماضي، والتي كشفت عن العديد من مشاكل تطوير البرمجيات. فقد تجاوزت العديد من المشاريع الميزانية والجدول الزمني، وتسببت بعضها في أضرار مادية. كما أدى الإهمال في نشر برامج تحتوي على أخطاء برمجية خطيرة إلى فقدان بعض الأشخاص لأرواحهم بسبب أعطال برمجية. ومن أبرز الأمثلة على الأضرار الناجمة عن الأخطاء البرمجية، خطأ "حالة التزامن" في جهاز العلاج الإشعاعي Therac-25 ، الذي تسبب في إعطاء جرعات زائدة من الإشعاع في حالات كان ينبغي فيها استخدام جرعات منخفضة. في البداية، عُرّفت أزمة البرمجيات من منظور الإنتاجية ، لكنها تطورت لاحقًا لتشمل التركيز على الجودة . واستخدم البعض مصطلح "أزمة البرمجيات" للإشارة إلى عجزهم عن توظيف عدد كافٍ من المبرمجين المؤهلين. وخلال هذه الفترة، رسّخ وادي السيليكون مكانته كأفضل موقع لعمل مهندسي البرمجيات. [ 14 ]
- تجاوزات التكاليف والميزانية : يُعد نظام التشغيل OS/360 مثالًا كلاسيكيًا على ذلك. فقد أنتج هذا المشروع، الذي استمر عقدًا من الزمن منذ ستينيات القرن الماضي، أحد أكثر أنظمة البرمجيات تعقيدًا في ذلك الوقت. [ 13 ] وكان OS/360 من أوائل مشاريع البرمجيات الكبيرة (التي شارك فيها 1000 مبرمج). ويزعم فريد بروكس في كتابه "أسطورة الشهر الرجلي" أنه ارتكب خطأً فادحًا كلفه ملايين الدولارات لعدم تطويره بنية متماسكة قبل بدء التطوير. [ 13 ]
- أضرار الممتلكات: قد تتسبب عيوب البرمجيات في أضرار للممتلكات. كما أن ضعف أمن البرمجيات يسمح للمخترقين بسرقة الهويات، مما يكلف الوقت والمال والسمعة.
- الحياة والموت: قد تؤدي عيوب البرمجيات إلى الوفاة. أثبتت الأنظمة المدمجة المستخدمة في أجهزة العلاج الإشعاعي قدرتها على التعطل بشكل كارثي لدرجة أنها تسببت في تعريض المرضى لجرعات إشعاعية قاتلة . ومن أشهر هذه الأعطال حادثة ثيراك-25 . [ 15 ]
احتفظ بيتر ج. نيومان بقائمة حديثة لمشاكل البرمجيات وكوارثها. [ 16 ] بدأت أزمة البرمجيات بالتلاشي تدريجيًا، نظرًا للصعوبة النفسية البالغة في البقاء في حالة أزمة لفترة طويلة (أكثر من 20 عامًا). ومع ذلك، لا تزال البرمجيات - وخاصة البرمجيات المدمجة في الوقت الحقيقي - محفوفة بالمخاطر ومنتشرة على نطاق واسع، ومن الضروري عدم الاستسلام للرضا عن النفس. على مدى السنوات العشر إلى الخمس عشرة الماضية، كتب مايكل أ. جاكسون باستفاضة عن طبيعة هندسة البرمجيات، وحدد المصدر الرئيسي لصعوباتها في غياب التخصص، واقترح أن أطر مشاكله توفر الأساس لـ "ممارسة طبيعية" لهندسة البرمجيات، وهو شرط أساسي لكي تصبح هندسة البرمجيات علمًا هندسيًا. [ 17 ]
كان تطوير أنظمة التشغيل الحديثة أحد أكبر المشاريع التي اضطلع بها مهندسو البرمجيات خلال تلك الفترة . ففي مختبرات بيل، ثم انتقلوا إلى جامعة كاليفورنيا في بيركلي، عمل كين تومسون ودينيس ريتشي ، إلى جانب مهندسين برمجيات آخرين، على إنشاء يونكس الإصدار السادس (Unix V6) عام 1975. شكّل يونكس الإصدار السادس نظام تشغيل رائدًا وضع معايير لأنظمة التشغيل المستقبلية، ويُستخدم اليوم لتعليم الطلاب مبادئ أنظمة التشغيل السليمة. [ 18 ] علاوة على ذلك، يمكن تصنيف أنظمة التشغيل المستقبلية المبنية على أساليب يونكس الإصدار السادس، ومشتقاته، إلى خمسة أنواع من نماذج أنظمة التشغيل: الأنظمة الشعبية، والأنظمة واسعة النطاق، والأنظمة الهجينة، والأنظمة التجريبية، والأنظمة المصغرة. [ 19 ] وعلى النقيض من يونكس، قام مهندسو البرمجيات في معهد ماساتشوستس للتكنولوجيا (MIT) عام 1983 بتطوير جنو (GNU ) (والذي يعني حرفيًا "جنو ليس يونكس") كبديل مفتوح المصدر ليونكس. باعتبارها من أوائل برامج المصادر المفتوحة، حظيت جنو بشعبية كبيرة لدى مجموعة صغيرة من المطورين، وقد ساهم عملها في نمو مجتمع تطوير برامج المصادر المفتوحة في الثمانينيات. [ 20 ]
من عام 1985 إلى عام 1989: " لا يوجد حل سحري "
لعقود طويلة، كان حل أزمة البرمجيات أولوية قصوى للباحثين والشركات المنتجة لأدوات البرمجيات. فقد كانت تكلفة امتلاك وصيانة البرمجيات في ثمانينيات القرن الماضي ضعف تكلفة تطويرها.
- خلال فترة التسعينيات، ارتفعت تكلفة الملكية والصيانة بنسبة 30% مقارنة بفترة الثمانينيات.
- في عام 1995، أظهرت الإحصاءات أن نصف مشاريع التنمية التي شملها الاستطلاع كانت قيد التشغيل، ولكنها لم تعتبر ناجحة.
- يتجاوز متوسط مشاريع البرمجيات الجدول الزمني المحدد لها بمقدار النصف.
- ثلاثة أرباع جميع منتجات البرمجيات الكبيرة التي يتم تسليمها للعميل هي منتجات فاشلة إما أنها لا تستخدم على الإطلاق، أو أنها لا تلبي متطلبات العميل.
مشاريع البرمجيات
يبدو أن كل تقنية وممارسة جديدة ظهرت في الفترة من السبعينيات إلى التسعينيات قد تم الترويج لها كحل سحري لأزمة البرمجيات. وتم الترويج للأدوات والانضباط والأساليب الرسمية والعمليات والمهنية كحلول سحرية.
- الأدوات: تم التركيز بشكل خاص على الأدوات: البرمجة الهيكلية ، والبرمجة الموجهة للكائنات ، وأدوات CASE مثل نظام CADES CASE من ICL، [ 21 ] Ada ، والوثائق ، والمعايير تم الترويج لها على أنها حلول سحرية.
- الانضباط: جادل بعض الخبراء بأن أزمة البرمجيات كانت بسبب نقص الانضباط لدى المبرمجين.
- الأساليب الرسمية: اعتقد البعض أنه إذا طُبقت منهجيات الهندسة الرسمية على تطوير البرمجيات، فإن إنتاج البرمجيات سيصبح صناعة قابلة للتنبؤ مثل فروع الهندسة الأخرى. وقد دعوا إلى إثبات صحة جميع البرامج.
- العملية: دعا الكثيرون إلى استخدام عمليات ومنهجيات محددة مثل نموذج نضج القدرات .
- الاحترافية: أدى ذلك إلى العمل على مدونة أخلاقيات وتراخيص وقواعد مهنية.
في عام 1986، نشر فريد بروكس مقالته "لا يوجد حل سحري" ، مجادلاً بأنه لا يمكن لأي تقنية أو ممارسة فردية أن تحقق تحسناً بمقدار 10 أضعاف في الإنتاجية في غضون 10 سنوات.
احتدم الجدل حول الحلول السحرية خلال العقد التالي. استمر أنصار لغة آدا ومكوناتها وعملياتها في التأكيد لسنوات على أن تقنيتهم المفضلة ستكون الحل السحري. لكن المشككين خالفوهم الرأي. وفي النهاية، تقبّل الجميع تقريبًا فكرة استحالة إيجاد حل سحري. ومع ذلك، تظهر مزاعم حول الحلول السحرية بين الحين والآخر، حتى يومنا هذا.
يفسر البعض عدم وجود حل سحري على أنه فشل في هندسة البرمجيات. مع ذلك، يضيف بروكس، عند قراءة المزيد: "سنحقق بالتأكيد تقدماً كبيراً خلال الأربعين عاماً القادمة؛ فالتقدم بمقدار عشرة أضعاف خلال أربعين عاماً ليس بالأمر السحري..."
لم ينجح البحث عن مفتاح واحد للنجاح قط. فجميع التقنيات والممارسات المعروفة لم تُحقق سوى تحسينات طفيفة في الإنتاجية والجودة. ومع ذلك، لا توجد حلول سحرية لأي مهنة أخرى أيضاً. ويرى البعض أن غياب الحلول السحرية دليل على نضج هندسة البرمجيات وإدراكها أن نجاح المشاريع يعتمد على العمل الجاد.
مع ذلك، يمكن القول أيضاً إن هناك بالفعل مجموعة من الحلول الفعّالة المتاحة اليوم، بما في ذلك المنهجيات البسيطة (انظر " إدارة المشاريع ")، وآلات حاسبة الجداول الإلكترونية، ومتصفحات الويب المُخصصة ، ومحركات البحث المدمجة في المواقع، ومولدات تقارير قواعد البيانات، ومحررات أكواد متكاملة للتصميم والاختبار مع خاصية الحفظ/التعديل/التراجع، وشركات متخصصة تُنتج برامج متخصصة، مثل مواقع الويب المعلوماتية، بتكلفة أقل بكثير من تكلفة تطوير مواقع ويب مُخصصة بالكامل. ومع ذلك، يبدو مجال هندسة البرمجيات معقداً ومتنوعاً للغاية بحيث لا يمكن لحلّ واحد "فعّال" أن يُحسّن معظم المشاكل، وكل مشكلة لا تُمثل سوى جزء صغير من جميع مشاكل البرمجيات.
من عام 1990 إلى عام 1999: بروز الإنترنت
أدى ظهور الإنترنت إلى نمو سريع للغاية في الطلب على أنظمة عرض المعلومات الدولية/البريد الإلكتروني على شبكة الويب العالمية. كان على المبرمجين التعامل مع الرسوم التوضيحية والخرائط والصور الفوتوغرافية وغيرها من الصور، بالإضافة إلى الرسوم المتحركة البسيطة، بمعدل لم يسبق له مثيل، مع قلة الطرق المعروفة لتحسين عرض الصور/تخزينها (مثل استخدام الصور المصغرة).
أدى ازدياد استخدام المتصفحات، التي تعمل بلغة ترميز النص التشعبي (HTML)، إلى تغيير جذري في طريقة عرض المعلومات واسترجاعها. كما ساهمت الاتصالات الشبكية الواسعة في انتشار فيروسات الحاسوب الدولية على أجهزة مايكروسوفت ويندوز، وفي الوقاية منها. وأصبح الانتشار الهائل للبريد الإلكتروني العشوائي مشكلة تصميمية رئيسية في أنظمة البريد الإلكتروني، حيث أغرق قنوات الاتصال واستلزم فحصًا أوليًا شبه آلي. وتطورت أنظمة البحث بالكلمات المفتاحية إلى محركات بحث عبر الإنترنت ، واضطرت العديد من أنظمة البرمجيات إلى إعادة تصميمها للبحث الدولي، اعتمادًا على تحسين محركات البحث (SEO). وبرزت الحاجة إلى أنظمة ترجمة بشرية للغة الطبيعية لمحاولة ترجمة تدفق المعلومات إلى لغات أجنبية متعددة، حيث صُممت العديد من أنظمة البرمجيات للاستخدام متعدد اللغات، استنادًا إلى مفاهيم تصميمية من مترجمين بشريين. وارتفع عدد مستخدمي الحاسوب من مئات أو آلاف المستخدمين إلى ملايين المستخدمين الدوليين في كثير من الأحيان.
من عام 2000 إلى عام 2015: منهجيات خفيفة الوزن
مع تزايد الطلب على البرمجيات في العديد من المؤسسات الصغيرة، أدت الحاجة إلى حلول برمجية منخفضة التكلفة إلى ظهور منهجيات أبسط وأسرع لتطوير برمجيات قابلة للتشغيل، بدءًا من تحديد المتطلبات وصولًا إلى النشر، بشكل أسرع وأسهل. تطور استخدام النماذج الأولية السريعة إلى منهجيات مبسطة بالكامل ، مثل البرمجة المتطرفة (XP)، التي سعت إلى تبسيط العديد من جوانب هندسة البرمجيات، بما في ذلك جمع المتطلبات واختبار الموثوقية للعدد المتزايد من أنظمة البرمجيات الصغيرة. لا تزال أنظمة البرمجيات الكبيرة جدًا تستخدم منهجيات موثقة بشكل مكثف، مع مجلدات عديدة في مجموعة الوثائق؛ ومع ذلك، كان لدى الأنظمة الأصغر نهج بديل أبسط وأسرع لإدارة تطوير وصيانة حسابات البرمجيات وخوارزمياتها، وتخزين المعلومات واسترجاعها وعرضها.
الاتجاهات الحالية في هندسة البرمجيات
هندسة البرمجيات تخصص حديث نسبياً، ولا يزال في طور التطور. وتشمل اتجاهات تطور هندسة البرمجيات ما يلي:
وجوه
تساعد الجوانب مهندسي البرمجيات على التعامل مع خصائص الجودة من خلال توفير أدوات لإضافة أو إزالة التعليمات البرمجية النمطية من مناطق متعددة في شفرة المصدر . تصف الجوانب كيفية تصرف جميع الكائنات أو الدوال في ظروف معينة. على سبيل المثال، يمكن للجوانب إضافة التحكم في تصحيح الأخطاء ، أو تسجيل الأحداث ، أو تأمين العمليات إلى جميع الكائنات من أنواع محددة. يعمل الباحثون حاليًا على فهم كيفية استخدام الجوانب لتصميم شفرة عامة الأغراض. تشمل المفاهيم ذات الصلة البرمجة التوليدية والقوالب .
تجريبي
هندسة البرمجيات التجريبية هي فرع من هندسة البرمجيات يهتم بتصميم التجارب على البرمجيات، وجمع البيانات من التجارب، واستنباط القوانين والنظريات من هذه البيانات.
خطوط إنتاج البرمجيات
خطوط إنتاج البرمجيات، أو هندسة عائلة المنتجات ، هي طريقة منهجية لإنتاج عائلات من أنظمة البرمجيات، بدلاً من إنشاء سلسلة من المنتجات الفردية تمامًا. تركز هذه الطريقة على إعادة استخدام الكود بشكل واسع ومنهجي ورسمي ، بهدف تبسيط عملية تطوير البرمجيات.
وثّق مؤتمر مستقبل هندسة البرمجيات (FOSE)، الذي عُقد ضمن فعاليات المؤتمر الدولي لهندسة البرمجيات (ICSE) عام 2000، أحدث ما توصلت إليه هندسة البرمجيات في ذلك العام، وسرد العديد من المشكلات التي كان لا بد من حلها خلال العقد التالي. كما ساهمت جلسات FOSE في مؤتمري ICSE 2000 [ 22 ] وICSE 2007 [ 23 ] في تحديد أحدث ما توصلت إليه هندسة البرمجيات.
هندسة البرمجيات اليوم
تسعى هذه المهنة إلى تحديد حدودها ومضمونها. وقد تم تقديم دليل معارف هندسة البرمجيات (SWEBOK) كمعيار ISO خلال عام 2006 (ISO/IEC TR 19759).
في عام 2006، صنّفت مجلة موني وموقع Salary.com هندسة البرمجيات كأفضل وظيفة في أمريكا من حيث النمو، والأجر، ومستويات الضغط، ومرونة ساعات العمل وبيئة العمل، والإبداع، وسهولة الالتحاق بهذا المجال والترقي فيه. [ 24 ]
التخصصات الفرعية
الذكاء الاصطناعي
أتاحت مجموعة واسعة من المنصات تطوير جوانب مختلفة من الذكاء الاصطناعي، بدءًا من الأنظمة الخبيرة مثل Cyc، مرورًا بالتعلم العميق، وصولًا إلى منصات الروبوتات مثل Roomba ذات الواجهة المفتوحة. [ 25 ] وقد أدت التطورات الحديثة في الشبكات العصبية الاصطناعية العميقة والحوسبة الموزعة إلى انتشار مكتبات البرمجيات، بما في ذلك Deeplearning4j و TensorFlow و Theano و Torch .
وجدت دراسة أجراها معهد ماكينزي العالمي عام 2011 نقصًا في 1.5 مليون متخصص ومدير في مجال البيانات والذكاء الاصطناعي ذوي التدريب العالي [ 26 ] ، وقد طورت العديد من معسكرات التدريب الخاصة برامج لتلبية هذا الطلب، بما في ذلك برامج مجانية مثل حاضنة البيانات أو برامج مدفوعة مثل الجمعية العامة . [ 27 ]
اللغات
استلهمت لغات الذكاء الاصطناعي الرمزية المبكرة لغتي Lisp و Prolog ، اللتين هيمنتا على برمجة الذكاء الاصطناعي في بداياتها. ويستخدم تطوير الذكاء الاصطناعي الحديث غالبًا لغات برمجة شائعة مثل Python أو C++ ، [ 28 ] أو لغات متخصصة مثل Wolfram Language . [ 29 ]
شخصيات بارزة في تاريخ هندسة البرمجيات
- يُعرف تشارلز باخمان (1924-2017) بشكل خاص بعمله في مجال قواعد البيانات .
- لازلو بيلادي (1928-2021) رئيس تحرير مجلة IEEE Transactions on Software Engineering في الثمانينيات.
- فريد بروكس (1931-2022)، اشتهر بإدارته لتطوير نظام التشغيل OS/360 وبكتابه "الشهر الأسطوري للرجل" .
- بيتر تشين (مواليد 1947) المعروف بتطوير نمذجة العلاقات بين الكيانات .
- قام إدسكار دبليو ديكسترا (1930-2002) بتطوير إطار عمل لشكل من أشكال البرمجة الهيكلية.
- قام ديفيد بارناس (مواليد 1941) بتطوير مفهوم إخفاء المعلومات في البرمجة المعيارية .
- مايكل أ. جاكسون (مواليد 1936) هو خبير في منهجية هندسة البرمجيات، وهو المسؤول عن طريقة JSP لتصميم البرامج؛ وطريقة JSD لتطوير الأنظمة (مع جون كاميرون)؛ ومنهجية Problem Frames لتحليل وهيكلة مشاكل تطوير البرمجيات.
- قام ريتشارد ستالمان بإنشاء أدوات نظام جنو وكان من دعاة البرمجيات الحرة.
انظر أيضاً
مراجع
- ↑ "CS302: كتاب جاريد كينج "تاريخ البرمجيات"" . learn.saylor.org . مؤرشف من الأصل بتاريخ 19-11-2018 . تم الاطلاع عليه بتاريخ 17-02-2018 .
- ↑ «لقد برزت هندسة البرمجيات مؤخرًا كتخصص قائم بذاته.» سومرفيل، إيان (1985) [1982]. هندسة البرمجيات . أديسون-ويسلي. ISBN 978-0-201-14229-7.
- ↑ أبّاتي ، جانيت (2012). إعادة ترميز النوع الاجتماعي . كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا. ص 39. ISBN 978-0262534536.
- ↑ إنسمنجر، ناثان (2012). أولاد الحاسوب يستولون على زمام الأمور . كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0262517966.
- ↑ "الحلقة 576: عندما توقفت النساء عن البرمجة" . برنامج بلانيت ماني على إذاعة NPR . 17 أكتوبر 2014. تم الاطلاع عليه بتاريخ 27 يونيو 2018 .
- 1 2 ماير، برتراند (4 أبريل 2013). "أصل "هندسة البرمجيات"تم الاطلاع عليه بتاريخ 25-11-2016 .
- ↑ تادري، ماتي (2014-12-03). علم الحوسبة . مطبعة سي آر سي. ص 121. ISBN 978-1-4822-1770-4.
- ↑ ماهوني، مايكل. "جذور هندسة البرمجيات" (ملف PDF) . مجلة CWI الفصلية . 3 (4): 325-334 . مؤرشف من الأصل (ملف PDF) بتاريخ 20 فبراير 2011. تم الاطلاع عليه بتاريخ 10 فبراير 2023 .
- ↑ المؤتمر الدولي لهندسة البرمجيات لعام ٢٠١٨، احتفالاً بالذكرى الأربعين لتأسيسه، والخمسين عاماً لهندسة البرمجيات (٣١ مايو ٢٠١٨). "ICSE 2018 - الجلسات العامة - مارغريت هاميلتون" . يوتيوب . تم الاطلاع عليه بتاريخ ٩ يونيو ٢٠١٨ .
{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط ) - ↑ رايل، أ. ج. س. (16 أكتوبر 2008). "مهندسو وعلماء ناسا - تحويل الأحلام إلى واقع" . موقع ناسا الإلكتروني بمناسبة الذكرى الخمسين لتأسيسها . ناسا . مؤرشف من الأصل بتاريخ 29 يونيو 2010. تم الاطلاع عليه بتاريخ 25 نوفمبر 2016 .
- ↑ "أول مهندس برمجيات | جمعية مهندسي الكهرباء والإلكترونيات (IEEE) للحاسبات" . 5 أكتوبر 2018. تم الاطلاع عليه بتاريخ 5 مارس 2023 .
- ↑ برايان راندل (2001). "مؤتمرات هندسة البرمجيات التابعة لحلف الناتو" . ncl.ac.uk. تاريخ الاسترجاع: 25 نوفمبر 2016 .
- 1 2 3 كينج، جاريد (2016). "تاريخ البرمجيات لجارد كينج"" . CS302: هندسة البرمجيات . Saylor.org . مؤرشف من الأصل بتاريخ 19-11-2018 . تم الاطلاع عليه بتاريخ 25-11-2016 . "
- ↑ ساكسينيان، أنالي (1983). "نشأة وادي السيليكون" . البيئة المبنية . 9 (1): 7-17 . ISSN 0263-7960 . JSTOR 23286110 .
- ↑ ليفيسون، ن. ج.؛ تيرنر، س. س. (1993-07-01). "تحقيق في حوادث ثيراك-25". مجلة الكمبيوتر . 26 (7): 18-41 . CiteSeerX 10.1.1.372.412 . doi : 10.1109/MC.1993.274940 . ISSN 0018-9162 . S2CID 9691171 .
- ↑ نيومان، بيتر ج. "قائمة المخاطر: ملخص منتدى المخاطر" . ملخص المخاطر .
- ↑ مايكل جاكسون، "الهندسة وهندسة البرمجيات" في كتاب "مستقبل هندسة البرمجيات" (تحرير إس نانز)، دار نشر سبرينغر، 2010؛ مايكل جاكسون، "أطر المشكلة: تحليل وهيكلة مشاكل تطوير البرمجيات"؛ دار نشر أديسون ويسلي، 2001
- ↑ كوميناكا، جيتكا؛ كوميناكي، لاديسلاف (2016). "الموقع المحلي هو مؤشر جودة محدد لقيمة المنطقة المحددة" . التاسع عشر. mezinárodní kolokvium أو Regionalálních vědách. سبورنيك بريسبيفكو . برنو: جامعة مصاريك: 621–627 . دوى : 10.5817/cz.muni.p210-8273-2016-79 . رقم ISBN 978-80-210-8272-4.
- ↑ لاور، هيو سي. (1981-12-01). "ملاحظات حول تطوير نظام تشغيل" . مجلة SIGOPS لأنظمة التشغيل ، 15 (5): 30-36 . doi : 10.1145/1067627.806588 . ISSN 0163-5980 .
- ↑ بريتهاور، ديفيد (26-12-2001). "البرمجيات مفتوحة المصدر: تاريخ" . الأعمال المنشورة .
- ↑ دي جي بيرسون "استخدام نظام هندسة البرمجيات وإساءة استخدامه" المؤتمر الوطني للحاسوب 1979
- ↑ "ICSE2000: دعوة للمشاركة" . ul.ie .
- ↑ "ICSE 2007: الصفحة الرئيسية" . ucl.ac.uk .
- ↑ كالوارسكي، تارا؛ دافني موشر؛ جانيت باسكن؛ دونا روزاتو (2006). "أفضل الوظائف في أمريكا" . مجلة موني . سي إن إن. مؤرشف من الأصل في 24 أكتوبر 2007. تم الاسترجاع في 20 أبريل 2006 .أجرت مجلة "موني" وموقع "سالاري.كوم" بحثًا حول مئات الوظائف، مع الأخذ في الاعتبار فرص النمو، والأجور، ومستويات الضغط، وعوامل أخرى. وقد احتلت هذه الوظائف أعلى المراتب. 1. مهندس برمجيات...
- ↑ "اختراق رومبا" . hackingroomba.com . مؤرشف من الأصل في 18 أكتوبر 2009.
- ↑ مانيكا، جيمس؛ تشوي، مايكل؛ بوغين، جاك؛ براون، براد؛ دوبس، ريتشارد؛ روكسبيرغ، تشارلز؛ بايرز، أنجيلا هونغ (مايو 2011). "البيانات الضخمة: الأفق الجديد للابتكار والمنافسة والإنتاجية" . معهد ماكينزي العالمي. مؤرشف من الأصل في 6 مارس 2013. تم الاطلاع عليه في 16 يناير 2016 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ «نيويورك تُنشئ معسكرًا تدريبيًا جديدًا لعلماء البيانات: مجاني، لكن القبول فيه أصعب من جامعة هارفارد» . فينشر بيت . مؤرشف من الأصل بتاريخ 15 فبراير 2016. تم الاطلاع عليه بتاريخ 21 فبراير 2016 .
- ↑ بوينتر، إيان. "سي++ جافا" . إنفوورلد . infoworld.com . تم الاطلاع عليه بتاريخ 6 ديسمبر 2017 .
- ↑ فيريس، روبرت (7 أبريل 2016). "كيف غيّر صديق ستيف جوبز عالم الرياضيات" . سي إن بي سي . تم الاطلاع عليه بتاريخ 28 فبراير 2018 .
روابط خارجية
- مقابلة تاريخية شفهية مع بروس هـ. بارنز ، من معهد تشارلز باباج ، جامعة مينيسوتا. يصف بارنز مؤسسة العلوم الوطنية (NSF) ودعمها للبحوث في علوم الحاسوب النظرية ، وهندسة الحاسوب ، والأساليب العددية ، وهندسة البرمجيات ، وتطوير الشبكات.
- مقابلة تاريخية شفهية مع لازلو أ. بلادي ، معهد تشارلز باباج ، جامعة مينيسوتا.
- هندسة البرمجيات
- تاريخ البرمجيات
- تاريخ الحوسبة
