ScholarGate
어시스턴트

소프트웨어 구축 및 품질

소프트웨어 구축 및 품질은 작동하는 코드를 체계적으로 생성하는 것과 소프트웨어가 요구사항 및 품질 목표를 충족하는지 확인하고 보장하는 기술(테스트, 검증, 검토 및 측정)에 관한 것입니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

소프트웨어 구축은 코딩, 검증, 단위 테스트 및 디버깅을 통해 작동하는 소프트웨어를 상세하게 생성하는 것이며, 소프트웨어 품질은 소프트웨어가 명시적 및 묵시적 요구사항을 충족하는 정도를 의미하며, 이는 검증, 확인 및 품질 관리 활동을 통해 보장됩니다.

Scope

이 영역은 코딩 표준, 방어적 프로그래밍, 단위 테스트를 포함한 소프트웨어 구축 관행; 소프트웨어 테스트 수준 및 기술; 검증 및 확인; 정적 및 동적 분석; 코드 검토 및 리팩토링; 소프트웨어 품질 속성 및 측정 지표; 그리고 정확성 증명을 위한 형식적 방법을 다룹니다. 이는 신뢰할 수 있는 소프트웨어를 생산하고 보장하는 활동들을 통합합니다.

Sub-topics

Core questions

  • 정확하고, 가독성이 높으며, 유지보수가 가능한 코드를 생성하는 관행은 무엇입니까?
  • 테스트, 검토 및 분석을 통해 결함은 어떻게 감지됩니까?
  • 소프트웨어 품질은 어떻게 정의되고, 측정되며, 보장됩니까?
  • 정확성은 테스트만으로는 불가능하고 형식적 증명을 통해서만 확립될 수 있는 경우는 언제입니까?

Key theories

테스트는 결함의 부재가 아닌 존재를 드러냅니다.
테스트는 결함이 존재함을 보여줄 수 있지만, 결함의 부재를 증명할 수는 없습니다. 따라서 효과적인 테스트는 철저한 실행보다는 체계적인 사례 선택을 통해 결함을 찾을 확률을 극대화하는 것을 목표로 합니다.
검증 및 확인
검증은 소프트웨어가 사양에 따라 올바르게 구축되었는지 확인하는 반면, 확인은 사용자 요구를 충족하는 올바른 소프트웨어가 구축되었는지 확인합니다. 이들은 수명 주기 전반에 걸쳐 검토, 분석 및 테스트를 포괄합니다.
품질은 내재되어 구축되는 것이지, 나중에 테스트로 확인되는 것이 아닙니다.
품질은 최종 단계의 검사보다는 구축 관행, 설계 및 프로세스 규율에서 비롯됩니다. 결함 예방 및 조기 감지는 후기 수정보다 훨씬 저렴합니다.

Clinical relevance

구축 및 품질 활동은 시스템의 신뢰성, 보안성 및 유지보수성을 결정하며 결함 비용의 대부분을 차지합니다. 조기적이고 체계적인 검증은 현장 오류 및 재작업을 줄여주며, 이는 신뢰할 수 있는 소프트웨어를 제공하는 데 핵심적입니다.

Evidence & guidelines

ISO/IEC 25010은 소프트웨어 제품 품질 모델을 정의하며, SWEBOK의 소프트웨어 구축, 테스트 및 품질 지식 영역은 합의된 참조 지침을 제공합니다.

History

체계적인 테스트는 1970년대 Myers에 의해 명확화되었고, 구조적 프로그래밍과 검증은 같은 시대에 Dijkstra와 Hoare에 의해, 구축 장인정신은 1990년대 McConnell에 의해 제시되었습니다. ISO/IEC 25010과 같은 품질 모델 및 표준은 품질 속성과 측정을 통합했습니다.

Debates

테스트 대 형식적 검증
정확성에 대한 신뢰가 광범위한 테스트에 기반해야 하는지 아니면 형식적 증명에 기반해야 하는지에 대한 논쟁이 있습니다. 테스트는 대규모 시스템에 적용 가능하지만 정확성을 보장할 수는 없으며, 형식적 방법은 더 높은 비용으로 강력한 보장을 제공하지만 중요한 구성 요소에만 사용됩니다.

Key figures

  • Glenford Myers
  • Steve McConnell
  • C. A. R. Hoare
  • Edsger Dijkstra

Related topics

Seminal works

  • myers2011
  • mcconnell2004
  • swebok2014

Frequently asked questions

테스트가 프로그램이 정확하다는 것을 증명할 수 있습니까?
아니요. 테스트는 유한한 입력 집합을 실행하며 결함을 드러낼 수 있지만, 결함의 부재를 증명할 수는 없습니다. 모든 입력에 대한 정확성을 증명하려면 형식적 검증이 필요하며, 이는 시스템의 제한적이거나 중요한 부분에만 실현 가능합니다.
품질이 버그의 부재와 동일합니까?
아니요. 소프트웨어 품질은 다차원적이며, 기능적 정확성 외에도 신뢰성, 성능, 보안, 유용성 및 유지보수성과 같은 속성을 포함합니다. 버그가 거의 없는 프로그램이라도 유지보수가 어렵거나 보안에 취약하다면 품질이 낮을 수 있습니다.

Methods for this concept

Related concepts