Para a versão anterior, consulte a Revisão 1 desta resposta . No entanto, os comentários e edições da pergunta esclarecem melhor o que a pergunta está buscando e permitem que eu seja mais claro.
Sim, a engenharia de software baseada em evidências (EBSE) é uma coisa. Parece haver alguns esforços em relação aos bancos de dados do EBSE, como este na Universidade de Durham e no SEED, iniciado por um professor da Cal Poly . Todos esses esforços, bem como os discutidos em vários documentos, podem ser encontrados no servidor IEEE Xplore ou na Biblioteca Digital ACM(assinatura ou compra necessária para muitos artigos em ambos), são baseadas em medicamentos baseados em evidências. Eles fornecem revisões de literatura de dados empíricos publicados (observação e experimento). De fato, a inclusão de "revisão de literatura" em uma sequência de pesquisa em qualquer pesquisa de publicação gera informações sobre a maioria dos tópicos - mais de 14.000 ocorrências no ACM e mais de 1.000 no banco de dados IEEE (quando limitado a apenas tópicos de computação).
Olhando para os tipos gerais de tópicos discutidos nessas bases de dados EBSE e revisões de literatura, vejo uma discussão comum - eles tendem a ser independentes da tecnologia. A ênfase parece estar principalmente centrada no processo e na metodologia, e não nas ferramentas específicas usadas para conduzir a engenharia de software.
Portanto, esse conceito existe na engenharia de software. A Academia está ciente do conceito baseado em evidências e pode aplicá-lo com sucesso à engenharia de software.
Especificamente, a pergunta aborda a aplicação de técnicas EBSE à seleção de um paradigma parece difícil, devido ao grande número de variáveis envolvidas, forçando suposições a serem feitas, além de reduzir a capacidade de repetir o experimento ou observação. É dito exatamente na pergunta - "qual paradigma aparece como" a resposta certa "pode depender de quais métricas um estudo específico presta atenção, de quais condições o estudo se mantém constante ou varia e, sem dúvida, de outros fatores também" . Embora isso não signifique estudar o paradigma "melhor" em uma determinada situação, torna qualquer tipo de revisão da literatura desses documentos incrivelmente difícil de concluir e ainda extrair informações entre eles.
Definitivamente, não existe uma solução "virar a manivela" para escolher um paradigma.
Dado um paradigma de programação, é possível encontrar estudos nos vários bancos de dados acadêmicos e do setor sobre como esse paradigma influencia vários aspectos do desenvolvimento de software - qualidade, defeitos, eficiência etc. - sob várias condições específicas, variando desde o conhecimento e a experiência do equipe para o domínio do problema. Qualquer artigo rigoroso deve identificar claramente as condições sob as quais os dados foram coletados e as suposições. O problema começa a tentar isolar os fatores que o tornam bom em cada uma dessas condições.
Academicamente, existem algumas afirmações fáceis de pesquisar. Por exemplo, a afirmação de que o paradigma funcional é bem adequado para aplicativos que exigem simultaneidade deriva do teorema de Church-Rosser . Por esse motivo, é provável que um sistema de software escrito em uma linguagem funcional tenha menos defeitos relacionados à simultaneidade do que o mesmo sistema escrito em uma linguagem processual ou orientada a objetos.
No entanto, do ponto de vista prático, uma equipe de software nem sempre pode usar "a melhor" ferramenta ou técnica para o trabalho apenas porque a pesquisa indica. Embora nos esforcemos para produzir sistemas de software da mais alta qualidade, operamos dentro de restrições. Muitas vezes, vejo essas restrições minimizadas (ou mesmo removidas da equação) ao discutir a eficácia de qualquer metodologia.
Como profissional, quando estou envolvido na escolha de tecnologias a serem usadas, tento identificar as melhores ferramentas possíveis. Mas então eu me restrico ao que é conhecido e bem compreendido pela equipe que tenho. Voltando ao meu exemplo anterior, se eu tiver uma equipe versada na criação de aplicativos simultâneos em C ++ e nenhuma experiência em Haskell, não faz sentido propor a criação do sistema em Haskell, pois provavelmente não será possível fazer isso. restrições de cronograma e orçamento, e minha qualidade provavelmente sofrerá devido à falta de experiência no conjunto de ferramentas.
Para recapitular, a engenharia de software baseada em evidências é geralmente uma coisa boa que existe e as revisões de literatura existem e estão prontamente disponíveis. No entanto, há aspectos da engenharia de software em que a aplicação de abordagens baseadas em evidências oferece pouco valor. A seleção de um paradigma de programação para um esforço de desenvolvimento em larga escala é uma delas.
Se você quiser descobrir como a orientação a objetos aborda a reutilização ou defeitos na programação funcional - você encontrará facilmente publicações sobre elas. No entanto, eu não encontrei (nem depositaria muita confiança) em uma publicação capaz de abordar efetivamente a seleção de paradigmas em toda a ampla gama de projetos de engenharia de software do mundo real.