요구공학
개념 : 사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동
요구사항
목적
- 이해관계자 사이에 효과적인 의사소통 수단 제공
- 시스템 개발의 요구사항에 대한 공통된 이해 설정
- 요구사항 누락 방지 및 이해 오류로 인한 불필요한 비용을 절감
- 요구사항 변경 추적 가능
분류
기완일[기능적 요구사항] - 기능성 / 완전성 / 일관성
신사효유이 보품제[비기능적 요구사항] - 신뢰도 / 사용성 / 효율성 / 유지보수성 / 이식성 / 보안성 / 품질 관련 / 제약사항
기능적 요구사항 | 비기능적 요구사항 |
- 시스템이 제공하는 기능, 서비스에 대한 요구사항 - 특정 입력에 대해 시스템이 어떻게 반응해야 하는지에 대한 기술 - 특정 상황에 대해 시스템이 어떻게 동작해야 하는지에 대한 기술 |
- 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항 - 품질 속성에 관련하여 시스템이 갖춰야 할 사항에 관한 기술 - 시스템이 준수해야 할 제한 조건에 관한 기술 |
온라인 홈페이지에서는 쇼핑카트에 주문하고자 하는 품목을 저장할 수 있는 장바구니 기능을 제공해야 함 | - 특정 함수의 호출시간은 3초를 넘지 않아야 함 - 시스템은 하루 24시간 가동되어야 하며 가동률 99.5%를 만족해야 함 |
요구공학 프로세스
요구사항 개발 단계와 요구사항 관리 단계로 구성된다.
요구사항 개발 단계
도분명확 - 도출 / 분석 / 명세 / 확인 및 검증
도출 | - 소프트웨어가 해결해야 할 문제를 이해하고, 고객으로부터 제시되는 추상적 요구에 대한 관련 정보를 식별하고 수집 방법 결정, 수집된 요구사항을 구체적으로 표현하는 단계 - 이해관계자가 식별, 개발팀과 고객 사이의 관계 형성, 효율적인 의사소통 중요 - 주요 활동으로는 고객 분석, 조직 환경 분석, 후보 요구사항 분류, 후보 요구사항 정제, 요구사항 소스 관리가 있음 |
분석 | - 도출된 요구사항에 대해 충돌, 중복, 누락 등의 분석을 통해 완전성, 일관성 확보 단계 - 요구사항들 간 상충 해결, 소프트웨어의 범위 파악, 환경과의 상호작용 이해 단계 - 시스템 요구사항을 정제하여 소프트웨어 요구사항 분류, 후보 요구사항 모델링, 요구사항의 우선순위 부여, 해당 릴리즈에 수행할 요구사항 선정, 요구사항 협의가 있음 - 비용과 일정에 대한 제약설정, 타당성 조사, 요구사항 정의 문서화 수행 |
명세 | - 체계적으로 검토, 평가, 승인될 수 있는 문서를 작성하는 단계 - 동의한 요구사항을 하나 이상의 형태로 저장하여 정형화된 요구사항을 생성 - 주요 활동으로는 요구사항 명세 기준 정의, 요구사항 명세서 작성, 요구사항 추적 관련 정보 저장이 있음 |
확인 및 검증 | - 분석가가 요구사항을 이해했는지 확인하고, 요구사항 문서가 회사의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증하는 단계 - 요구사항 명세서 검토, 요구사항 용어 검증, 요구사항 베이스라인 수립 - 이해관계자들이 요구사항 문서 검토 및 요구사항 관리 툴을 이용하여 요구사항 정의 - 문서들에 대한 형상 관리 수행 - 리소스가 요구사항에 할당되기 전에 문제를 파악하기 위하여 검증 수행 |
요구사항 도출 단계 주요 기법 / 산출물
인터뷰 | - 이해관계자와 직접 대화를 통해 정보를 구하는 공식적, 비공식적 정보 수집 방법 |
브레인 스토밍 | - 말을 꺼내기 쉬운 분위기로 만들어, 회의 참석자들이 내놓은 아이디어들을 비판 없이 수용할 수 있도록 하는 회의 |
델파이 기법 | - 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 방법 |
롤 플레잉 | - 현실에 일어나는 장면을 설정하고 여러 사람이 각자가 맡은 역을 연기함으로써 요구사항을 분석하고 수집하는 방법 |
워크숍 | - 함께 모여서 단기간의 집중적인 노력을 통해 다양하고 전문적인 정보를 획득, 공유하는 방법 - 프로젝트에 참여하는 모든 핵심 인물의 참여가 필요 - 참석자들은 해당 전문 영역별로 팀 협력이 필요하며 사전 준비가 요구 |
설문조사 | - 설문지 또는 여론조사 등을 이용해 간접적으로 정보를 수집하는 방법 - 개발될 시스템의 사용자가 다수일 때 의견 수렴에 용이 |
요구사항 분석 단계
요구사항 분류 | - 요구사항이 기능인지 비기능인지 확인 - 요구사항이 소프트웨어 생명주기 동안 변경이 발생하는지를 확인 - 하나 이상의 상위 요구사항에서 유도된 것인지 또는 이해관계자나 다른 원천으로부터 직접 발생한 것인지 분류 |
개념 모델링 생성 및 분석 | - 문제 도메인의 엔터티들과 개별 관계 및 종속성을 반영하는 개념 모델링 생성 단계 - 유스케이스 다이어그램, 데이터 흐름 모델(DFD), 상태 모델(State Model), 목표기반 모델, 사용자 인터렉션, 객체 모델, 데이터 모델 등과 같은 다양한 개념 모델 작성 가능 - 모델링 표기는 주로 UML을 사용 |
요구사항 할당 | - 요구사항을 만족시키기 위한 아키텍처 구성요소를 식별하는 활동 - 다른 구성요소와 어떻게 상호작용하는지 분석을 통해 추가적인 요구사항 발견 가능 |
요구사항 협상 | - 두 명의 이해관계자가 서로 상충되는 내용을 요구하는 경우, 적절한 지점에서 협의하기 위한 활동 - 요구사항이 서로 충동되는 경우 각각에 우선순위 부여, 문제 해결 |
정형 분석 | - 형식적으로 정의된 의미를 지닌 언어로 요구사항을 표현하는 활동 - 구문과 의미를 갖는 정형화된 언어를 사용하여 수학적 기호로 표현 - 요구사항 분석의 마지막 단계에서 이루어짐 |
요구사항 분석 단계 기법
자료 흐름 지향 분석 | - 데이터 흐름도 및 자료 사전으로부터 소프트웨어 구조를 유도하는 방법 |
객체 지향 분석 | - 시스템의 기능과 데이터를 함께 분석, UML로 표준화 |
청취 기술, 인터뷰와 질문 기술, 분석 기술, 중재 기술, 관찰 기술, 작성 기술, 조직 기술, 모델 작성 기술 등이 있음
소프트웨어 시스템 모델링 기법
기능적 모델링 | - 기능(행위)적 관점, 구조적 분석기법 - 시스템이 어떠한 기능(행위)을 수행하는 가의 관점에서 시스템을 분석하는 기법 - 자료 흐름도(DFD), 자료 사전(DD), 소단위 명세서(Mini-Spec) |
자료 모델링 | - 데이터 관점, 정보 공학적 기법 - 시스템에 사용되는 자료를 찾아내고, 자료의 구성, 자료들 사이의 관계와 연관성을 규명하여 시스템의 자료구조를 분석하는 기법 - ER 모델링 |
동적 모델링 | - 동적 관점, 객체지향 기법 - 시간의 변화에 따른 시스템의 동작과 제어에 초점을 맞춰 분석하는 기법 - 유스케이스 다이어그램(Usecase Diagram), 상태 변화도(STD, State Transition Diagram) |
요구사항 명세 단계 주요기법
비정형 명세 기법 | - 사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 기법 - 사용자와 개발자의 이해가 용이 - 명확성 및 검증에 문제 |
정형 명세 기법 | - 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 기법 - Z-스키마, Petri Nets, 상태차트 활용 - 표현이 간결, 명확성 및 검증이 용이하지만, 기법의 이해가 어려움 |
요구사항 명세서 : 소프트웨어 개발 프로세스의 시작인 소프트웨어의 요구사항을 분석하고 정의하는 단계에서 작성되는 최종 산출물
요구사항 명세 원리 및 검증 항목
- 명완검 일수 추개 : 명확성 / 완전성 / 검증 가능성 / 일관성 / 수정 용이성 / 추적 가능성 / 개발 후 이용성
요구사항 확인 및 검증 절차
요구사항 목록 확인 | - 요구사항 목록에서 업무 기능에 대한 요구사항 반영 여부 확인 |
요구사항 정의서 작성 여부 확인 | - 요구사항 목록 중 수용인 경우, 요구사항 정의서(유스케이스 명세서)가 작성되었는지 확인 - 요구사항 정의서(유스케이스 명세서)에서 시스템의 동작 방식을 명확하고 구체적으로 기술하고 있는지 검토 |
비기능적 요구사항의 확인 | - 시스템 특성, 품질, 제약사항 등 비기능적 요구사항이 명확하게 도출되었는지 검토 - 성능, 가용성, 사용 용이성, 유지보수 용이성, 안전성, 보안성 등에 대한 요구사항의 문서화 여부 확인 |
타 시스템 연계 및 인터페이스 요구사항 확인 |
- 타 시스템 또는 하위 시스템 등과의 모든 인터페이스 요구사항이 정의되어 있는지 확인 - 인터페이스 구분(내부/외부), 주기, 방법, 제공자, 요청자 등이 명확하게 정의되어 있는지 확인 |
요구사항 확인 및 검증 단계의 주요 기법
요구사항 검토 | - 여러 검토자들이 에러, 잘못된 가정, 불명확성, 표준과의 차이 검토 - 고객 중심 프로젝트에서는 검토자 그룹에 고객 대표자 1명 이상 포함 필요 - 시스템 정의서, 시스템 사양서, 소프트웨어 요구사항 명세서를 완성한 시점에서 검토 |
|
정형 기술 검토 활용 (FTR) |
동 워 인 | |
동료 검토 | - 2~3명이 진행하는 리뷰의 형태 - 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행 |
|
워크스루 | - 오류를 조기에 검출하는데 목적 - 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화 |
|
인스펙션 | - 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법 | |
프로토타이핑 활용 | - 개발할 시스템에 대한 주요 기능이나 일부분을 개발하여 최종 사용자나 고객을 대상으로 시연하면서 시스템이 작동하는 모습을 경험할 수 있게 하여 요구사항을 확인 | |
모델 검증 | - 분석단계에서 개발된 모델의 품질 검증 필요 - 객체 모델의 경우 객체들 사이의 의사소통 경로를 검증하기 위한 정적 분석 수행에 유용 |
|
테스트 케이스 및 테스트 확인 |
- 최종 제품이 요구사항을 만족시키는지 확인하기 위해서 테스트 케이스 작성 - 테스트 케이스는 단계별 테스트 및 인수 테스트(알파, 베타)에서 활용 |
|
CASE 도구 활용 검증 | - 구조화된 요구사항 명세서에 대해서는 자동화된 일관성 분석을 제공하는 CASE 도구 활용 - 대규모 개발 프로젝트에서 다양한 이해관계자들의 요구사항 명세서 검토와 형상 관리 수행이 가능한 CASE 도구 활용 |
|
베이스라인을 통한 검증 | - 요구사항 변경을 체계적으로 추적하고 통제하는 시점인 베이스라인을 통한 요구사항에 대한 지속적 검증 수행 | |
요구사항 추척표를 통한 검증 |
- 요구사항 정의서를 기준으로 개발단계별 최종 산출물이 어떻게 반영되고, 변경되었는지 확인이 가능한 문서인 RTM을 통한 검증 |
정형 기술 검토 기법
- 관리 리뷰(Management Review), 기술 리뷰(Technical Review), 인스펙션(Inspection), 워크 스루(Walk Through), 감사(Audit)
요구사항 관리 단계 절차
요구사항 협상 | - 가용한 자원과 수용 가능한 위험 수준에서 구현 가능한 기능을 협상 |
요구사항 기준선 설정 | - 공식적으로 검토되고 합의된 요구사항 명세서 설정 |
요구사항 변경 관리 | - 요구사항 기준선을 기반으로 모든 변경을 공식적으로 통제 |
확인 및 검증 | - 구축된 시스템이 이해관계자가 기대한 요구사항에 부합하는지 확인 |
요구사항의 기술적 타당성 검토 항목
- 성능 및 용량 산정의 적정성, 시스템 간 상호 운용성, IT 시장 성숙도 및 트렌트 부합성, 기술적 위험 분석
요구사항의 기술적 타당성 분석 프로세스
- 타당성 분석 결과 기록, 타당성 분석 결과의 이해관계자 검증
- 타당성 분석 결과 확인 및 배포 / 공유