Інженерія розробки програмного забезпечення? Якщо ні, то які речі йому не вистачають для того, щоб бути кваліфікованим таким чином?
Так, інженерія програмного забезпечення - це інженерна дисципліна.
Вікіпедія визначає інженерію як "застосування математики, а також наукових, економічних, соціальних та практичних знань з метою винаходи, інновацій, проектування, побудови, обслуговування, дослідження та вдосконалення структур, машин, інструментів, систем, компонентів, матеріалів" , процеси, рішення та організації ". Результатом інженерії програмного забезпечення є система програмного забезпечення, яка може покращити життя людей, і вона може включати певну комбінацію наукових, математичних, економічних, соціальних чи практичних знань.
З точки зору того, як це розглядається, в академічному та професійному плані воно змінюється. Програми інженерії програмного забезпечення можуть бути акредитовані ABET як інженерні програми. Інженери програмного забезпечення можуть бути членами IEEE. Деякі компанії вважають, що інженерія програмного забезпечення є інженерною дисципліною, а інші - ні.
Найкраща книга на цю тему - професійна розробка програмного забезпечення Стіва МакКоннелла: Коротші розклади, продукти більш високої якості, Більш успішні проекти, поліпшена кар’єра . Він дивиться на програмної інженерії як професії, еволюція від ремесла до професії, наука про розробку програмного забезпечення, різниця між програмної інженерії та програмної інженерії (застосуванням методів розробки програмного забезпечення по порівнянні з інженерами , які відбуваються з програмним забезпеченням збірки, з тематичним дослідженням цього включає мою альма-матер ), сертифікацію та ліцензування та етику.
Гленн Вандербург провів серію переговорів під назвою "Реальна програмна інженерія", яка проводила між 2010 і 2015 роками на ряді конференцій, а також дві пов'язані з цим переговори "Ремесло, інженерія та сутність програмування" (дана в 2011 році як основна інформація на RailsConf) та "Ремесло та інженерія програмного забезпечення" (дано в 2011 році в Лондоні QCon) Я думаю, що ці переговори є досить вичерпним аргументом, чому інженерія програмного забезпечення - це інженерна дисципліна.
Одним із аргументів, який Вандербург коротко викладає у своїх переговорах, є той, який висловив Джек У. Рівз у 1992 р. (І знову переглянувся у 2005 р.) Про те, що таке розробка програмного забезпечення та як код є результатом проектування програмного забезпечення ( це також обговорювались на вікі С2 ). Як тільки ви відходите від старих шкіл думки, де специфікація та моделювання - це розробка програмного забезпечення та перетворення коду на розробку програмного забезпечення, деякі взаємозв'язки між інженерією програмного забезпечення та іншими інженерними дисциплінами стають більш очевидними. Деякі відмінності та причини цих відмінностей стають ще більш очевидними після того, як ви побачите, що економіка розробки програмного забезпечення сильно відрізняється, ніж у багатьох інших дисциплінах - будівництво коштує дешево (майже безкоштовно, у багатьох випадках), а дизайн - дорога частина.
Це [CMMI] щось, що перетворить розвиток в інжиніринг?
Ні. CMMI - це рамка для вдосконалення процесів, яка надає рекомендації організаціям щодо того, які види діяльності корисні при складанні програмного забезпечення. Інженерні дисципліни зазвичай мають інженерний процес. Наявність такого процесу важливо для успішного завершення високоякісних проектів. Однак, CMMI (або будь-яка інша технологічна структура чи методологія) - це лише єдиний інструмент - використання цього не дозволить вам магічно просунутися від розробника до інженера. Однак не дотримання якогось процесу є, на мою думку, ознакою проекту, який не є інженерним проектом.
Також, яка ваша думка щодо курсів / сертифікатів з програмної інженерії?
Це лише стільки ж цінності, скільки інші люди вкладають у це. Є корисні курси і є марні курси. Є цінні сертифікати та сертифікати, які не варті паперу, на якому вони надруковані. Чимало факторів - від того, хто схвалює або акредитує курс або хто видає сертифікат вашій нинішній галузі працевлаштування до вашої поточної роботи та куди ви хочете піти.