이전 답변에 대해서는이 답변의 개정 1을 참조하십시오 . 그러나 질문에 대한 의견과 편집 내용은 질문이 무엇을 더 명확하게하고 더 명확하게 해줍니다.
예, 증거 기반 소프트웨어 엔지니어링 (EBSE)은 중요합니다. Calham 의 교수가 시작한 Durham University 및 SEED 와 같은 EBSE 데이터베이스에 대한 몇 가지 노력이있는 것으로 보입니다 . 이러한 모든 노력과 IEEE Xplore 서버 또는 ACM 디지털 라이브러리를 통해 찾을 수있는 여러 논문에서 논의 된 내용(둘 다 많은 논문에 필요한 가입 또는 구매)은 근거 기반 의약품을 기반으로합니다. 발표 된 경험적 (관찰 및 실험) 데이터에 대한 문헌 검토를 제공합니다. 실제로 모든 출판물 검색에서 검색 문자열에 "문학적 검토"를 포함하면 ACM에서 14000 개가 넘고 IEEE 데이터베이스에서 1000 개가 넘는 (주제 컴퓨팅 주제로 제한되는 경우) 대부분의 주제에 대한 정보를 얻을 수 있습니다.
이러한 EBSE 데이터베이스 및 문헌 검토에서 논의 된 일반적인 유형의 주제를 살펴보면 공통 스레드가 있습니다. 이들은 기술에 독립적 인 경향이 있습니다. 소프트웨어 엔지니어링을 수행하는 데 사용되는 특정 도구가 아닌 프로세스 및 방법론에 중점을 둔 것으로 보입니다.
따라서이 개념은 소프트웨어 엔지니어링에 존재합니다. 학계는 증거 기반 개념을 알고 있으며이를 소프트웨어 공학에 성공적으로 적용 할 수 있습니다.
구체적으로,이 질문은 EBSE 기법을 패러다임의 선택에 적용하는 데 어려움을 겪고있다. 관련 변수의 수가 많기 때문에 가정을 강요하고 실험 또는 관찰을 반복하는 능력을 감소시킨다. 그것은의 권리 문제에 말했다 - "특정 연구 조건 연구를 일정하게 유지 또는 변화, 너무 다른 요인에 의심 할 여지없이 무엇에 관심을 지불 메트릭 무엇인지에 따라 달라질 수 있습니다"정답 "으로 나오는 어떤 패러다임" . 그렇다고 특정 상황에서 어떤 패러다임이 "최고의"패러다임을 연구한다는 것은 아니지만, 이러한 문서에 대한 모든 종류의 문헌 검토는 작성하기가 매우 어렵고 여전히 정보를 추출하기가 어렵습니다.
패러다임을 선택하는 데 "크랭크를 돌리는"솔루션은 없습니다.
프로그래밍 패러다임이 주어지면 해당 패러다임이 지식, 경험의 범위에서 다양한 특정 조건에서 소프트웨어 개발의 다양한 측면 (품질, 결함, 효율성 등)에 어떻게 영향을 미치는지에 대한 다양한 학술 및 산업 데이터베이스의 연구를 찾을 수 있습니다. 문제 도메인에 팀. 모든 엄격한 논문은 데이터가 수집 된 조건과 가정을 명확하게 식별해야합니다. 문제는 이러한 각 조건에서 좋은 요인을 찾아 내려고합니다.
학문적으로 연구하기 쉬운 진술이 있습니다. 예를 들어, 기능적 패러다임이 동시성을 필요로하는 응용 프로그램에 적합하다는 진술은 Church-Rosser 정리 에서 비롯됩니다 . 이 때문에 기능적 언어로 작성된 소프트웨어 시스템은 절차 적 또는 객체 지향 언어로 작성된 동일한 시스템보다 동시성 관련 결함이 적습니다.
그러나 실제적인 관점에서 소프트웨어 팀은 연구 결과에 따르면 항상 "최고의"도구 나 기술을 업무에 사용할 수는 없습니다. 최고 품질의 소프트웨어 시스템을 생산하기 위해 노력하고 있지만 제약 조건 내에서 운영하고 있습니다. 종종 방법론의 효과를 논의 할 때 이러한 제약 조건이 최소화되거나 방정식에서 제거되는 것을 볼 수 있습니다.
실무자로서 사용할 기술을 선택할 때 가능한 최고의 도구를 찾아 내려고 노력합니다. 그러나 나는 내가 가진 팀이 알고 이해하는 것에 자신을 구속합니다. 이전 예제로 돌아가서 C ++에서 동시 응용 프로그램을 작성하는 데 능숙하고 Haskell에 경험이없는 팀이 있다면 Haskell에서 시스템을 구축하는 것이 불가능할 것으로 생각하는 것은 의미가 없습니다. 일정 및 예산 제약이 있으며 툴체인에 대한 경험 부족으로 인해 품질이 저하 될 수 있습니다.
요약하자면, 증거 기반 소프트웨어 엔지니어링은 일반적으로 존재하는 좋은 일이며 문헌 검토가 존재하며 쉽게 이용할 수 있습니다. 그러나 증거 기반 접근 방식을 적용해도 별 가치가없는 소프트웨어 엔지니어링 측면이 있습니다. 대규모 개발 노력에 대한 프로그래밍 패러다임의 선택은 그 중 하나입니다.
객체 지향이 함수형 프로그래밍에서 재사용 성 또는 결함을 해결하는 방법에 대해 알아 보려면 해당 출판물을 쉽게 찾을 수 있습니다. 그러나, 광범위한 실제 소프트웨어 엔지니어링 프로젝트에서 패러다임 선택을 효과적으로 처리 할 수있는 출판물을 찾지 못했습니다.