Для предыдущего дубля см. Редакцию 1 этого ответа . Тем не менее, комментарии и правки к вопросу дополнительно разъясняют, что именно ищет вопрос, и позволяют мне быть более ясным.
Да, разработка программного обеспечения на основе фактических данных (EBSE) - это вещь. Похоже, что было предпринято несколько попыток в отношении баз данных EBSE, таких как эта в Университете Дарема и SEED, которая была начата профессором в Cal Poly . Все эти усилия, а также те, которые обсуждались в ряде статей, можно найти на сервере IEEE Xplore или в цифровой библиотеке ACM.(подписка или покупка требуется для многих работ в обеих), основаны на доказательной медицине. Они предоставляют обзоры литературы опубликованных эмпирических данных (наблюдения и эксперимента). Фактически, включение «обзора литературы» в строку поиска в любом поиске публикаций дает информацию по большинству тем - более 14000 обращений к ACM и более 1000 по базе данных IEEE (когда ограничено только компьютерными темами).
Глядя на общие типы тем, обсуждаемых в этих базах данных EBSE и обзорах литературы, я вижу общую нить - они, как правило, независимы от технологий. Основное внимание, по-видимому, уделяется процессу и методологии, а не конкретным инструментам, используемым для разработки программного обеспечения.
Таким образом, эта концепция существует в разработке программного обеспечения. Academia знает об основанной на фактах концепции и может успешно применять ее для разработки программного обеспечения.
В частности, вопрос, касающийся применения методов EBSE к выбору парадигмы, кажется трудным из-за большого числа переменных, которые заставляют делать предположения, а также снижают возможность повторения эксперимента или наблюдения. Правильно в вопросе сказано: «какая парадигма является« правильным ответом », может зависеть от того, на какие метрики обращает внимание конкретное исследование, на какие условия оно остается постоянным или варьируется, и, несомненно, на другие факторы» . Хотя это не означает, что изучение того, какая парадигма «лучшая» в данной ситуации, делает любой обзор литературы этими документами невероятно трудным для заполнения и все же извлекает из них информацию.
Определенно нет решения «повернуть рукоятку» для выбора парадигмы.
Принимая во внимание парадигму программирования, вы можете найти исследования в различных академических и отраслевых базах данных о том, как эта парадигма влияет на различные аспекты разработки программного обеспечения - качество, дефекты, эффективность и т. Д. - в различных конкретных условиях, начиная от знаний и опыта Команда в проблемной области. Любая строгая статья должна четко определять условия, при которых были собраны данные, и допущения. Проблема становится попытка выделить факторы, которые делают его хорошим в каждом из этих условий.
Академически, есть некоторые утверждения, которые легко исследовать. Например, утверждение, что функциональная парадигма хорошо подходит для приложений, требующих параллелизма, вытекает из теоремы Черча-Россера . По этой причине вполне вероятно, что программная система, написанная на функциональном языке, будет иметь меньше дефектов, связанных с параллелизмом, чем та же система, написанная на процедурном или объектно-ориентированном языке.
Однако с практической точки зрения команда разработчиков программного обеспечения не всегда может использовать «лучший» инструмент или технику для работы только потому, что исследования показывают это. Хотя мы стремимся выпускать программные системы самого высокого качества, мы работаем в рамках ограничений. Часто я вижу, что эти ограничения минимизированы (или даже удалены из уравнения) при обсуждении эффективности любой методологии.
Как практикующий специалист, когда я участвую в выборе технологий для использования, я стараюсь определить наилучшие возможные инструменты. Но затем я ограничиваю себя тем, что знает и понимает команда, которая у меня есть. Возвращаясь к моему предыдущему примеру, если у меня есть команда, хорошо разбирающаяся в создании параллельных приложений на C ++ и не имеющая опыта работы с Haskell, нет смысла предлагать создание системы на Haskell, поскольку я, скорее всего, не смогу это сделать. график и бюджетные ограничения, и мое качество, скорее всего, пострадает из-за недостатка опыта в наборе инструментов.
Напомним, что разработка программного обеспечения на основе фактических данных - это, как правило, хорошая вещь, и обзоры литературы существуют и доступны. Однако существуют аспекты разработки программного обеспечения, в которых применение основанных на фактических данных подходов мало что дает. Выбор парадигмы программирования для крупномасштабных усилий по разработке является одним из них.
Если вы хотите узнать о том, как объектная ориентация направлена на повторное использование или дефекты в функциональном программировании, вы легко найдете публикации по этим вопросам. Тем не менее, я не нашел (и при этом не доверял бы) публикацию, которая могла бы эффективно решать выбор парадигм в широком спектре реальных проектов разработки программного обеспечения.