Попередній перегляд див. У версії 1 цієї відповіді . Однак коментарі та редакції до цього питання ще більше роз'яснюють, що це питання шукає, і дозволяють мені бути більш чіткими.
Так, інженерія програмного забезпечення на основі доказів (EBSE) - річ. Здається, докладено декількох зусиль щодо баз даних EBSE, таких як ця в Університеті Дарем і SEED, яку розпочав професор кафедри Cal Poly . Усі ці зусилля, а також ті, що обговорюються в ряді робіт, які можна знайти через сервер IEEE Xplore або цифрову бібліотеку ACM(передплата або покупка, необхідна для багатьох паперів в обох), базуються на медицині, заснованій на доказах. Вони надають літературні огляди опублікованих емпіричних даних (спостереження та експеримент). Насправді, включення "огляду літератури" в рядку пошуку за будь-яким пошуковим виданням дає інформацію про більшість тем - понад 14000 звернень в ACM і понад 1000 в базі даних IEEE (якщо обмежуються лише темами обчислення).
Переглядаючи загальні типи тем, що обговорюються в цих базах даних EBSE та оглядах літератури, я бачу загальну тему - вони, як правило, не залежать від технології. Здається, акцент в основному зосереджений на процесі та методології, а не на конкретних інструментах, які використовуються для проведення програмної інженерії.
Отже, ця концепція існує в інженерії програмного забезпечення. Академія усвідомлює концепцію, засновану на доказах, і може успішно застосовувати її в інженерії програмного забезпечення.
Зокрема, питання, що застосовують методи EBSE до вибору парадигми, видається важким через велику кількість задіяних змінних, що змушує робити припущення, а також зменшувати можливість повторення експерименту чи спостереження. Це сказано правильно у запитанні - "яка парадигма виходить як" правильна відповідь "може залежати від того, на які метрики приділяється конкретне дослідження, на яких умовах дослідження залишається постійним чи змінюється, і безсумнівно, на інших факторах" . Хоча це не означає, що вивчення того, яка парадигма є "найкращою" в даній ситуації, це робить будь-який огляд літератури цими документами неймовірно складним для завершення та все-таки витягувати інформацію в них.
Вибір парадигми однозначно не має рішення "повернути кривошип".
Враховуючи парадигму програмування, ви можете знайти дослідження в різних академічних і галузевих базах даних про те, як ця парадигма впливає на різні аспекти розробки програмного забезпечення - якість, дефекти, ефективність тощо - в різних конкретних умовах, починаючи від знань і досвіду роботи команда до проблемної області. Будь-який суворий документ повинен чітко визначати умови, за яких були зібрані дані та припущення. Проблема стає спробою виокремити фактори, які роблять це добре в кожному з цих умов.
Академічно є деякі твердження, які легко вивчити. Наприклад, твердження про те, що функціональна парадигма добре підходить для додатків, які вимагають одночасності, випливає з теореми Церкви-Россера . Через це, ймовірно, що програмна система, написана на функціональній мові, матиме менше дефектів, пов’язаних із одночасністю, ніж та сама система, написана на процедурній або об'єктно-орієнтованій мові.
Однак, з практичної точки зору, команда програмного забезпечення не завжди може використовувати «найкращий» інструмент або техніку для роботи лише тому, що дослідження показують це. Хоча ми прагнемо виробляти програмні системи найвищої якості, ми працюємо в межах обмежень. Часто я бачу ці обмеження мінімізованими (або навіть усуненими з рівняння), коли обговорюють ефективність будь-якої методології.
Як практик, коли я беру участь у виборі технологій для використання, я намагаюся визначити найкращі можливі інструменти. Але потім я обмежуюсь тим, що знає і добре розуміє команда, яка в мене є. Повертаючись до мого попереднього прикладу, якщо у мене є команда, яка добре розбирається у створенні одночасних додатків на C ++ і не має досвіду роботи в Haskell, не має сенсу пропонувати будувати систему в Haskell, оскільки я, ймовірно, не зможу зробити графік та бюджетні обмеження, і моя якість, ймовірно, постраждає через брак досвіду роботи в інструментальній мережі.
Для резюме, інженерія програмного забезпечення на основі доказів, як правило, є хорошою справою, а огляди літератури існують і є доступними. Однак є аспекти інженерії програмного забезпечення, де застосування підходів, заснованих на доказах, пропонує мало значення. Вибір парадигми програмування до масштабних зусиль з розробки є одним із таких.
Якщо ви хочете дізнатися про те, як об’єктно-орієнтована вирішує питання повторного використання або дефектів функціонального програмування - ви легко знайдете публікації з них. Однак я не знайшов (і не довіряв би мені довіри) публікації, яка змогла ефективно вирішити вибір парадигми у широкому діапазоні реальних проектів інженерії програмного забезпечення.