요구공학

요구공학(Requirements engineering, RE)은 시스템 요구사항 문서를 생성, 검증, 관리하기 위하여 수행되는 구조화된 활동의 집합이다.

정의 
 요구사항의 획득, 분석, 명세, 검증 및 변경관리등에 대한 제반 활동과 원칙. 요구사항 생성 및 관리를 체계적, 반복적으로 수행한다.
 요구사항 관리에 포함되는 모든 생명주기(SDLC)활동과 이를 지원하는 프로세스를 포함한다.
 시스템 요구사항 문서를 생성,검증,관리하기 위하여 수행되는 구조화된 활동의 집합이다.
 요구사항 명세를 최종 산출물로 생성한다.

목적 
 이해관계자 사이에 효과적인 통신수단을 제공 및 요구사항에 대한 공통 이해 설정
 요구사항 손실 방지 및 에러 감지로 불필요한 비용 절감
 구조화된 요구사항으로 요구사항 변경 추적을 가능하게 함
 CMM level 2 달성 또는 business 수행 방법 개선
 PM에 필수적: 프로젝트 비용 초과와 기간 지연 방지

프로세스 구성 
요구공학의 프로세스는 요구사항 개발과 요구사항 관리로 구성된다.

요구사항 관리: CMMI Level 2 프로세스 영역(PA) 
 요구사항 협상, 요구사항 기준선(BaseLine), 요구사항 변경관리, 요구사항 확인을 수행한다.
 요구사항 협상: 가용한 자원과 수용가능한 위험수준에서 구현 가능한 기능 협상
 요구사항 기준선: 공식적으로 합의되고 검토된 요구사항 명세서
 요구사항 변경관리: 요구사항 기준선을 기반으로 모든 변경을 공식적으로 통제
 요구사항 확인: 구축된 시스템이 이해관계자가 기대한 요구사항에 부합되는지 확인

요구사항 개발: CMM Level 3 프로세스 영역(PA) 
 요구사항 추출: 이해관계자와 개발자가 함께 이해관계자의 Needs와 시스템 개발시 제약사항을 발견하여 검토하고 명확화하는 이해과정이다.
 요구사항 분석: 추출된 요구사항을 분석하고 요구사항을 구조화고 각종 대안들을 결정하는 피드백역할 수행을 포함한다.
 요구사항 명세화: 분석 과정에서 선별된 기능을 기반으로 구축할 시스템의 세부 내역을 기술한다.
 요구사항 확인(검증): 요구사항의 승인기준 = 문서화, 명확성, 간결성, 이해성, 시험성, 사용성, 추적성, 검증성

요구공학 관리 기법 
 시나리오/Goal 기반 요구사항 획득
 기능적 요구사항과 비기능적 요구사항을 명확하게 추출
 요구사항의 품질속성(Quality Attribute)을 명확화
 Use Case를 이용한 요구사항 모델링
 시스템 기능적 측면과 관련된 요구사항들의 유스케이스를 이용하여 구조화
 유스케이스 다이어그램, 유스케이스 명세서로 구성됨
 품질 요구사항을 위한 자동 분류
 분류언어와 유사도를 이용한 2단계 분류 기법 사용
 유사도 측정을 이용한 요구사항 변경관리
 공기 정보(co-occurrence information)를 이용하여 문서간 유사도를 측정(슬라이딩 윈도 기법, Salton의 코사인 계수 이용)
 문서내 일관성 결여 문장과 불명확성을 가진 문장을 찾아 주는 통합 기법

참고 자료

각주 

소프트웨어 공학
ISO/IEC 표준
소프트웨어 요구사항