Untuk pengambilan sebelumnya, lihat Revisi 1 dari jawaban ini . Namun, komentar dan pengeditan untuk pertanyaan lebih lanjut memperjelas apa yang dicari dan memungkinkan saya untuk menjadi lebih jelas.
Ya, rekayasa perangkat lunak berbasis bukti (EBSE) adalah suatu hal. Tampaknya ada beberapa upaya menuju basis data EBSE, seperti yang ini di Durham University dan SEED, yang dimulai oleh seorang profesor di Cal Poly . Semua upaya ini, serta yang dibahas dalam sejumlah makalah yang dapat ditemukan melalui server IEEE Xplore atau ACM Digital Library(berlangganan atau membeli diperlukan untuk banyak makalah di keduanya), didasarkan pada obat berbasis bukti. Mereka memberikan tinjauan literatur dari data empiris (observasi dan eksperimen) yang dipublikasikan. Bahkan, termasuk "tinjauan pustaka" dalam string pencarian pada setiap pencarian publikasi menghasilkan informasi pada sebagian besar topik - lebih dari 14.000 klik pada ACM dan lebih dari 1000 pada database IEEE (ketika terbatas hanya pada topik komputasi).
Melihat jenis umum dari topik yang dibahas dalam database EBSE dan tinjauan literatur ini, saya melihat utas yang sama - mereka cenderung tidak bergantung pada teknologi. Penekanan tampaknya sebagian besar berpusat pada proses dan metodologi daripada alat khusus yang digunakan untuk melakukan rekayasa perangkat lunak.
Jadi, konsep ini ada dalam rekayasa perangkat lunak. Academia mengetahui konsep berbasis bukti dan berhasil menerapkannya pada rekayasa perangkat lunak.
Secara khusus, pertanyaan yang membahas penerapan teknik EBSE untuk pemilihan paradigma tampaknya sulit, karena banyaknya variabel yang terlibat, memaksa asumsi dibuat serta mengurangi kemampuan untuk mengulangi percobaan atau pengamatan. Dikatakan benar dalam pertanyaan - "paradigma mana yang muncul sebagai" jawaban yang tepat "dapat bergantung pada metrik apa yang diperhatikan oleh studi tertentu, pada kondisi apa studi ini konstan atau bervariasi, dan tidak diragukan lagi pada faktor-faktor lain juga" . Meskipun itu tidak berarti bahwa mempelajari paradigma mana yang "terbaik" dalam situasi tertentu, itu membuat segala jenis tinjauan pustaka terhadap dokumen-dokumen ini sangat sulit untuk diselesaikan dan masih mengekstrak informasi di dalamnya.
Jelas tidak ada solusi "putar engkol" untuk memilih paradigma.
Diberikan paradigma pemrograman, Anda dapat menemukan studi di berbagai database akademik dan industri tentang bagaimana paradigma itu memengaruhi berbagai aspek pengembangan perangkat lunak - kualitas, cacat, efisiensi, dan sebagainya - dalam berbagai kondisi spesifik, mulai dari pengetahuan dan pengalaman tim ke domain masalah. Setiap makalah yang ketat harus secara jelas mengidentifikasi kondisi di mana data dikumpulkan dan asumsi. Masalahnya menjadi mencoba untuk mengisolasi faktor-faktor yang membuatnya baik di setiap kondisi tersebut.
Secara akademis, ada beberapa pernyataan yang mudah diteliti. Misalnya, pernyataan bahwa paradigma fungsional sangat cocok untuk aplikasi yang memerlukan konkurensi berasal dari teorema Gereja-Rosser . Karena itu, kemungkinan sistem perangkat lunak yang ditulis dalam bahasa fungsional akan memiliki lebih sedikit cacat terkait dengan concurrency daripada sistem yang sama yang ditulis dalam bahasa prosedural atau berorientasi objek.
Namun, dari sudut pandang praktis, tim perangkat lunak tidak selalu dapat menggunakan alat atau teknik "terbaik" untuk pekerjaan itu hanya karena penelitian menunjukkannya. Meskipun kami berusaha keras untuk menghasilkan sistem perangkat lunak dengan kualitas terbaik, kami beroperasi dalam batasan. Seringkali, saya melihat batasan ini diminimalkan (atau bahkan dihilangkan dari persamaan) ketika membahas efektivitas metodologi apa pun.
Sebagai seorang praktisi, ketika saya terlibat dalam memilih teknologi untuk digunakan, saya mencoba mengidentifikasi alat terbaik. Tetapi kemudian saya membatasi diri pada apa yang diketahui dan dipahami dengan baik oleh tim yang saya miliki. Kembali ke contoh saya sebelumnya, jika saya memiliki tim yang berpengalaman dalam membangun aplikasi bersamaan di C ++ dan tidak ada pengalaman di Haskell, tidak masuk akal untuk mengusulkan membangun sistem di Haskell karena saya kemungkinan tidak akan mampu membuat kendala jadwal dan anggaran, dan kualitas saya kemungkinan akan menurun karena kurangnya pengalaman dalam rantai alat.
Untuk rekap, rekayasa perangkat lunak berbasis bukti umumnya adalah hal yang baik yang ada dan tinjauan literatur memang ada dan tersedia. Namun, ada aspek rekayasa perangkat lunak di mana menerapkan pendekatan berbasis bukti menawarkan nilai yang kecil. Pemilihan paradigma pemrograman untuk upaya pengembangan skala besar adalah salah satunya.
Jika Anda ingin mengetahui tentang bagaimana orientasi objek mengatasi usabilitas atau cacat dalam pemrograman fungsional - Anda akan dengan mudah menemukan publikasi tentang itu. Namun, saya tidak menemukan (saya juga tidak akan menaruh kepercayaan pada) publikasi yang mampu secara efektif menangani pemilihan paradigma di berbagai proyek rekayasa perangkat lunak dunia nyata.