요구 사항 분석
요구 분석이란 새 시스템이나 변경할 시스템의 요구를 결정하는 작업입니다. 이 작업에는 사용 자, 개발자, 관리자 등 관련되는 여러 사람이 참여하므로 서로의 어긋나는 요구를 잘 조정하여야 한다. 요구 분석이 프로젝트 성패의 열쇠라 할 수 있습니다. 체계적인 요구 분석을 요구 공학이라고도 부른다. 요구 공학은 요구 수집, 도메인 분석, 요구 명세, 검증 등으로 구성됩니다. 요구는 측정할 수 있고 시험할 수 있어야 하며 비즈니스 요구에 부합하여야 하며 설계를 할 수 있도록 충분히 상세하여야 합니다.
소프트웨어 개발에 있어서 가장 어려운 부분은 무엇을 개발할 것인가를 정확히 결정하는 일입니다. 그 외의 일, 예를 들면 자세한 설계와 구현, 테스트 등 은 잘못되었을 때 적은 비용으로 수정할 수 있으나 요구 분석의 변경은 처음부터 다시 개발하는 비용이 들기 때문입니다.
요구 분석은 소프트웨어 개발의 실제적인 첫 단계로 사용자의 요구에 대하여 이해하는 단계라 할 수 있습니다. 소프트웨어 개발은 기본적으로 광범위한 문제의 해결이라 할 수 있습니다. 문제를 해결하기 위해서는 먼저 사용자의 요구(requirements)를 이해하는 단계가 있어야 합니다. 요구의 성격과 범위를 이해해야 하며 문제 해결에 있어서의 제약 사항을 알아야 합니다. 정확한 요구를 추출하고 어떤 방법으로 문제를 해결할 것인지 결정합니다. 이런 작업 단계를 요구 분석 단계라 하며 이를 담당하는 사람을 소프트웨어 분석가(software analyst)라고 부릅니다.
요구 분석은 크게 두 가지 단계로 구성됩니다. 현재의 상태를 파악하고 요구를 정의한 후, 문제 해결과 구현될 시스템의 목표를 명확히 도출합니다. 이를 분석 단계라고 합니다. 다음 단계는 명세서 작성 과정입니다. 완성될 소프트웨어가 어떤 기능을 가져야 하는가를 정확히 기술하는 일입니다. 명세서에는 기술적 요구와 구현에 있어서 제약 조건 및 개발자와 사용자가 합의한 성능에 관한 사항도 명시되어야 합니다. 명세서는 시스템 설계에서 참조될 사항을 포함하여 구현될 시스템에 대하여 전반적으로 알아야 할 사항을 포함하는 문서입니다. 요구 분석은 소프트웨어 개발의 성패에 대단히 큰 영향을 미치는 가장 중요한 단계입니다. 요구 분석 단계에서 문제를 충분히 이해하지 못하였거나 사용자의 요구를 완벽히 도출하지 못하였다면 설계, 구현 단계에서 사용자의 요구를 충족시킬 만한 소프트웨어를 개발하기 어렵다라고 볼 수 있습니다. 명세서는 사용자와 개발자의 계약을 나열한 문서이므로 정확하고 완벽하게 작성되어야 문제가 없습니다.
소프트웨어 요구 사항의 분석은 더 자세히 다섯 가지의 분야의 작업으로 나눌 수 있습니다. 요구 추출(requirement elicitation), 도메인 분석(domain analysis), 모델링, 프로토타이핑과 테스트, 문서화(documentation)와 검토(validation)입니다.
- 요구 추출 프로젝트 계획 단계에 정의한 문제의 범위 안에 있는 사용자의 요구를 찾는 일입니다. 시스템의 중요한 목적을 만족시키기 위하여 소프트웨어 시스템이 무엇을 제공하여야 하는지를 찾는 것이라 할 수 있습니다. 특히 시스템이 제공하여야 할 기능적인 요구와 기능 이외의 조건들, 예를 들어 성능, 품질, 안전, 보안, 인터페이스 요구를 찾습니다.
- 도메인 분석 문제 영역 안에 있는 중요한 사항들을 인식하기 위하여 정보를 수집하고 배경을 분석하는 단계입니다. 인식되어야 할 중요한 사항이란 사용자의 요구와 관련된 개체(entity), 관계(relation), 기능(function), 프로세스(process), 제약(constraints) 등이 있습니다. 도메인 분석은 사용자와의 인터뷰, 설문 조사, 실사 등을 통하여 현황을 파악하고 새로운 시스템에 대한 요구를 모델링하기 위한 것입니다.
- 모델링 도메인 분석을 통하여 찾아낸 중요한 개념, 특성, 관계에 대하여 개념화하는 작업입니다. 주로 응용문제에 대한 정보를 수집하여 분석하고 이를 다이어그램을 이용하여 모델화 하는 작업이라 할 수 있습니다.
- 프로토타이핑과 테스트 분석된 기능적 요구의 타당성을 테스트하기 위하여 프로토타입을 간단하게 만들어 봅니다.
- 문서화 검토 요구 분석서(Software Requirement Specification)를 작성합니다. 시스템의 기능, 성능, 정보 표현, 제약, 검증 평가 기준에 대하여 기술하고 검토합니다.
요구 분석 방법에 따라 구체적 작업 방법이 다를 수 있으나 요구 분석 단계에서의 작업은 대부분 '어떻게(how)' 보다는 '무엇을(what)'에 초점을 두어 작업을 해야 합니다..
사용자가 원하는 바로 그 요구가 정확히 추출되는 것도 중요하지만 정리되어 문서화되고 추적되며 특히 개발 과정에 요구가 변경되었을 때 잘 관리하는 일도 중요합니다. 요구는 개발의 다른 작업에 미치는 영향이 크므로 사소한 변경이라도 적절히 관리하고 통제하는 일이 중요한데 이를 요구 관리(requirement management)라고 합니다. 요구사항 분석은 고객과의 소통이 매우 중요하며 요구 분석 단계에서 많이 물어보고 소통을 하는 것이 중요합니다. 그 이유는 개발과정에 요구사항을 추가하는 경우가 많이 발생하기 때문에 가장 중요한 단계일 수 있습니다.
참고자료 출처 : 새로쓴 소프트웨어 공학 (저자 : 최은만)