본문 바로가기

Software Engineering

[소프트웨어 공학] Verification과 Validation의 차이

반응형

 

 

0. 소프트웨어 엔지니어링

소프트웨어 엔지니어링은 모든 개발 단계를 포괄하는 공학 분야로, 시스템의 명세화부터 유지보수에 이르기까지 전 과정을 아우릅니다. 이 분야는 조직 내에서 가장 적절한 이론을 선택하고 적용하여 문제를 해결하는 방법론을 제공합니다. 광범위하게 보면, 소프트웨어 엔지니어링은 다양한 학문적 요소를 종합한 학문이라고 할 수 있습니다. 개발자들은 소프트웨어를 신뢰성 있고, 경제적으로, 그리고 빠르게 개발할 필요가 있으며, 이 과정은 때로는 번거롭고 비용이 많이 들 수 있지만, 큰 규모의 프로젝트에서는 이러한 접근 방식이 타당합니다.

 

 

 

1. 소프트웨어 개발 과정 


소프트웨어 개발 과정은 몇 가지 핵심 활동을 반드시 포함해야 합니다:

a. 명세화(Software Specification): 이 단계의 목적은 고객의 요구사항을 명확하게 파악하는 것입니다. 개발 제약사항에는 개발 시 반드시 고려해야 하는 표준이나 비용 등이 포함됩니다. 운영 제약사항은 시스템이 다른 시스템과 연동될 때 고려해야 할 통신 프로토콜, 데이터 포맷 등을 지정합니다. 이러한 요소들을 명확히 하지 않으면, 프로젝트는 기대한 바와 다르게 진행될 위험이 있습니다.

b. 개발(Software Development): 이 과정에는 설계와 디자인이 포함되며, 때로는 명세화 단계도 포함될 수 있습니다. 개발은 프로그래밍을 의미하기도 하지만, 맥락에 따라 다양한 활동을 포함할 수 있습니다.

c. 검증(Software Validation): 이 단계는 개발된 소프트웨어가 고객의 요구를 정확히 충족하는지 확인합니다. 이는 'cold inspection'과 같은 기술을 사용하여 제품의 정확성을 평가하는 과정을 포함할 수 있습니다.

d. 진화(Software Evolution): 소프트웨어는 시장의 요구, 새로운 기술, 변화하는 표준에 맞추어 지속적으로 발전해야 합니다. 이 단계에서는 시스템을 현대의 요구에 맞추어 수정하고 업데이트하는 작업이 이루어집니다.

이처럼 소프트웨어 엔지니어링은 단순한 프로그래밍을 넘어서는, 매우 복잡하고 다양한 요소를 요구하는 전문 분야입니다. 각 단계는 상호 연관되어 있으며, 프로젝트의 성공을 위해서는 이 모든 단계가 효과적으로 관리되어야 합니다.

 

 

2. Verification과 Validation의 차이 


검증과 검사는 비슷한 용어라서 헷갈리는 경우가 많습니다. 하지만 둘은 구분되는 단계로 인식됩니다. 

 


- 검증(Verification): 검증은 개발 과정 중 생성된 문서들이 일관성이 있는지, 즉 명세서에서 정한 요구사항이 실제 개발 과정에서 지켜지고 있는지를 확인하는 과정입니다. 이는 보통 테스팅이나 리뷰를 통해 수행됩니다.

- 검사(Validation): 검사는 완성된 프로젝트가 실제로 소비자의 요구사항에 맞는지를 확인하는 과정입니다. 문서와 일치한다고 해서 고객의 요구가 정말로 충족되는지는 별개의 문제이므로 이를 체크하는 것이 중요합니다.

이 두 활동은 소프트웨어 개발의 품질을 확보하기 위해 필수적이며, 각각의 역할과 중요성에 따라 적절히 수행되어야 합니다.

 

 

 

 

 

반응형