Per la versione precedente, vedere la Revisione 1 di questa risposta . Tuttavia, i commenti e le modifiche alla domanda chiariscono ulteriormente ciò che la domanda sta cercando e mi permettono di essere più chiaro.
Sì, l'ingegneria del software basata sull'evidenza (EBSE) è una cosa. Sembra esserci qualche sforzo verso i database EBSE, come questo alla Durham University e al SEED, che è stato avviato da un professore della Cal Poly . Tutti questi sforzi, così come quelli discussi in una serie di articoli che possono essere trovati attraverso il server IEEE Xplore o la Biblioteca digitale ACM(l'abbonamento o l'acquisto richiesto per molti documenti in entrambi) si basano su medicine basate sull'evidenza. Forniscono revisioni della letteratura sui dati empirici pubblicati (osservazione ed esperimento). In effetti, includendo la "revisione della letteratura" in una stringa di ricerca su qualsiasi ricerca di pubblicazione si ottengono informazioni sulla maggior parte degli argomenti: oltre 14000 hit su ACM e oltre 1000 sul database IEEE (se limitato a soli argomenti di elaborazione).
Osservando i tipi generali di argomenti discussi in questi database EBSE e revisioni della letteratura, vedo un filo conduttore: tendono ad essere indipendenti dalla tecnologia. L'enfasi sembra essere principalmente incentrata sul processo e sulla metodologia piuttosto che sugli strumenti specifici utilizzati per condurre l'ingegneria del software.
Quindi, questo concetto esiste nell'ingegneria del software. Academia è a conoscenza del concetto basato sull'evidenza e può applicarlo con successo all'ingegneria del software.
In particolare, la domanda che affronta l'applicazione delle tecniche EBSE alla selezione di un paradigma sembra difficile, a causa del numero elevato di variabili coinvolte, costringendo a fare ipotesi e riducendo la capacità di ripetere l'esperimento o l'osservazione. È detto proprio nella domanda - "quale paradigma emerge come" la risposta giusta "può dipendere da quali metriche un particolare studio presta attenzione, da quali condizioni lo studio mantiene costante o varia e senza dubbio anche da altri fattori" . Sebbene ciò non significhi che studiare quale paradigma sia "migliore" in una data situazione, rende incredibilmente difficile completare qualsiasi tipo di revisione della letteratura di questi documenti ed estrarre ancora informazioni su di essi.
Sicuramente non esiste una soluzione "girare la manovella" per scegliere un paradigma.
Dato un paradigma di programmazione, è possibile trovare studi nei vari database accademici e di settore su come quel paradigma influenza vari aspetti dello sviluppo del software - qualità, difetti, efficienza e così via - in varie condizioni specifiche, che vanno dalla conoscenza e dall'esperienza del team al dominio problematico. Qualsiasi documento rigoroso dovrebbe identificare chiaramente le condizioni in cui i dati sono stati raccolti e le ipotesi. Il problema diventa il tentativo di isolare i fattori che lo rendono buono in ciascuna di quelle condizioni.
Accademicamente, ci sono alcune affermazioni che sono facili da ricercare. Ad esempio, l'affermazione secondo cui il paradigma funzionale si adatta bene alle applicazioni che richiedono concorrenza deriva dal teorema di Church-Rosser . Per questo motivo, è probabile che un sistema software scritto in un linguaggio funzionale abbia meno difetti relativi alla concorrenza rispetto allo stesso sistema scritto in un linguaggio procedurale o orientato agli oggetti.
Tuttavia, da un punto di vista pratico, un team di software non può sempre utilizzare lo strumento o la tecnica "migliore" per il lavoro solo perché la ricerca lo indica. Sebbene ci impegniamo a produrre sistemi software di altissima qualità, operiamo entro limiti. Spesso vedo questi vincoli minimizzati (o addirittura rimossi dall'equazione) quando si discute dell'efficacia di qualsiasi metodologia.
Come professionista, quando sono coinvolto nella scelta delle tecnologie da utilizzare, cerco di identificare i migliori strumenti possibili. Ma poi mi costringo a ciò che è noto e ben compreso dal team che ho. Tornando al mio esempio precedente, se ho un team esperto nella creazione di applicazioni simultanee in C ++ e nessuna esperienza in Haskell, non ha senso proporre di costruire il sistema in Haskell come probabilmente non sarò in grado di fare vincoli di pianificazione e budget, e la mia qualità probabilmente soffrirà a causa della mancanza di esperienza nella toolchain.
Ricapitolando, l'ingegneria del software basata sull'evidenza è generalmente una buona cosa che esiste e le recensioni di letteratura esistono e sono prontamente disponibili. Tuttavia, ci sono aspetti dell'ingegneria del software in cui l'applicazione di approcci basati sull'evidenza offre scarso valore. La selezione di un paradigma di programmazione per uno sforzo di sviluppo su larga scala è una di queste.
Se vuoi scoprire come l'orientamento agli oggetti affronta la riusabilità o i difetti nella programmazione funzionale, troverai facilmente pubblicazioni su questi. Tuttavia, non ho trovato (né avrei confidato in alcun modo) una pubblicazione in grado di affrontare efficacemente la selezione di paradigmi attraverso l'ampia gamma di progetti di ingegneria del software nel mondo reale.