소프트웨어 요구사항 개요
소프트웨어의 위기해결을 위한 방법으로써 소프트웨어의 공학이 대두되었다.
(위기로 인해 프로젝트가 실패되는 경우가 더욱 빈번해지고 있기 때문이다.)
프로젝트 실패 원인
요구사항단계에서 오류수정 비용이 가장 싸다
(일반적으로 단계를 거듭할수록 10-13배씩 증가)
잘못된 요구사항 관리는 변경으로 인한 재작업을 가져온다
프로젝트 비전 ?
: 프로젝트에서 만든 제품으로 어떠한 편리성, 효율성을 제공하려고 하는 것인가?
Need - "왜 해당 조직에서 프로젝트를 수행하는가?
Goals - "요구를 만족시키기 위하여 무엇을 수행하여야 하는가?
Objectives - "어떻게 Goals를 달성할 것인가?"
프로젝트 범위 ?
: 제품에 포함해야하는것과 포함하지 않아야 하는 것은?
: 프로젝트 제약사항으로 인한 범위 내외의 경계는?
개발자 중심의 문제접근을 피한다
개발자가 미리 문제해결에 대해 예상
사용자 관점에서 문제를 해결하지 않음
수동적 요구사항 수집이 아닌 능동적 요구사항 도출활동을 한다
능동적인 참여자 투입
고객의 소리 경청
참여자가 많을수록 더 많은 기능을 요구한다
지속적인 탐색과 발견의 과정
한 번의 Workshop이나 회의로 모든 요구사항을 도출할 수 없다
여러단계의 릴리즈나 반복을 통하여 상위수준의 개념을 상세화한다
변경, 명확화, 조절작업을 수행한다
Listen Carefuly, Ask Question
중립적입장에서 자연스럽고 효과적으로 이끄는 역할 요구
심문이 아니라 질문을 한다
고객을 분석가의 의도대로 이끄는 질문은 피하라
단순히 고객의 대답을 기록하는것이 아니다
이유를 탐색한다
용어집을 작성한다
용어의 오용 및 의미혼동으로 인한 오해를 최소화함
모든 참여자들간에 정의와 관련된 동의 내용을 기록한다
공통의 표현법으로 기술한다.
자연어 표현의 모호성 및 테스트 가능성 고려
자신의 표현법과 용어로 요구사항을 기술한다
그래프, 다이어그램등을 추가하여 모호성을 방지한다
다중 참여자 그룹을 식별한다
단일 이해관계자가 모든것을 말해줄 수는 없다
이해관계자별 다양한 관점을 관리하여야한다.
모든관점을 고려하여 많은 정보 획득이 가능하다
소수인원이 많은 정보를 알고있을경우 적용가능하다
Closed Interview, Open Interview
인터뷰 전 : 목적을 정의, 관련지식 및 공통용어 수집
인터부 중 : 대상자의 말을 경청, 앞선질문 -> 다음질문 유추,
피드백과 이해를 위해 모델과 스케치 사용
종료 전 : 정보요약 및 결과 설명 후 다음 질문
Questionnaire
많은 인원으로부터 요구사항 도출
정량적 데이터의 제시가 필요할 경우
1단계: 사전질문, 2단계: 설문으로 효율적인 설문 수행
미리 정의된 질문을 사용한다
Group Session
소수 인원의 그룹에 의한 의견 생성
삐른시간에 많은 의견을 생성 가능
익명성 - 자유롭게 생각을 도출 : 사용용이, 적은 Overhead
다양한 견해를 제공
현재시스템의 문제를 찾을 때
고객이 알고있지만 표현을 하지 못할 때
(처음 개념을 잡을때는 부적절하다)
참가자의 적극적 참여의식 필요
이해관계자와 최종합의
브레인스토밍 vs 워크샵
브레인스토밍은 소수인원으로 다양한 의견 생성가능
워크샵은 다수인원이 일정 주제 기반의 의견공유 및 합의 세션
진행규칙을 정한다
모니터링하며 진행을 제한해 수행범위를 넘지 않는다
토론팀의 규모를 작게 유지한다.
기록시 향후 고려항목을 위한 공간을 준비한다
요구사항 정제/보완 (불완전, 추상적 -> 완전성 일관성)
요구사항 분석 활동
요구사항 모델링: 추상적 요구사항의 구조화 및 상세화
요구사항 우선순위화: 위험관리 / 충돌해결을 위한 우선순위 결정
요구사항 선정: 다음 릴리즈에 포함될 요구사항 선정
소프트웨어 명세 및 실습
문장 분석
문서로 제공된 시스템 요구사항, 제안서, 기존 시스템 변경사항자료 등을 기반으로 요구사항을 분석한다.
구조적 방법론에서 주로 사용
DFD 분석
구조분석을 위한 기법으로 시스템이 다루는 데이터나 저장소, 프로세스 저장소 등을 기반으로 요구사항을 분석한다.
스윔레인 분석
비즈니스 프로세스나 제안된 소프트웨어 시스템 운영에 필요한 각 단계를 표현하는 방법을 제공한다.
UML Activity 다이어그램과 유사하며, 기능요구사항을 묶는데 도움이 된다.
유즈케이스 분석
Actor가 어떤 중요한 결과는 성취하는데 있어 결과를 만들어내는, 시스템과 외부행위자간에 상호작용 순서를 설명한다.
사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 다이어그램.
고객과 개발자가 함께보며 요구사항에 대한 의견을 조율할 수 있다.
유즈케이스 분석의 결과로 기능요구사항을 도출한다.
의사결정 일람표와 의사결정 트리 분석
복잡한 논리와 의사결정을 필요로 할 때 시스템이 해야하는일을 표현하는 두 가지 대안기법.
일람표는 행동에 영향을 미치고 각 요소의 조합에 대한 시스템의 예상행위를 가리키는 모든 요소에 대한 다양한 값을 나열한다.
의사결정 트리는 프로그램의 분기문과 같은 형태로 의사결정을 표현한다
이벤트 반응표 분석
실시간 시스템 요구사항 분석시 이벤트에 따라 시스템이 수행해야 할 반응을 중심으로 분석한다.
이벤트주기, 이벤트를 처리하는데 필요한 데이터요소, 이벤트 반응 후의 시스템 상태