■ 소프트웨어 요구사항 개요
- 조사결과 프로젝트 완료 이전 취소, 납기지연, 비용초과의 근본적인 원인은 부적절한 견적 및 계획과 요구관리 미흡으로 판명
- 프로젝트 실패 요인은 기술적보다 관리적 측면이 더 많음
- 프로젝트 실패 원인
-고객과의 비효율적인 의사소통으로 인한 사용자 입력 부족
-불명확하게 설정된 목표와 범위로 인한 불완전한 요구사항
-잘못된 프로젝트 계획과 추정으로 인해 변경
- 요구사항 및 고객참여가 시스템 개발에 있어서 성공과 실패의 가장 중요한 요소임
○ 요구사항 오류수정 비용 및 재작업

- 요구사항 오류수정 비용이 가장 쌈
- 프로젝트 요구사항의 일관성 및 완전성에 대한 결함을 사전에 제거하여 재작업을 감소시킴으로써 궁극적으로 프로젝트의 납기 달성에 긍정적인 효과 제공
- 일반적으로 결함이 다음 단계로 이전될 때 결함 제거 비용은 10 - 13배씩 증가 함
- 잘못된 요구사항 관리는 변경으로 인한 재작업을 가져옴
○ 요구사항 관리와 투입공수 및 부적정한 요구관리 적용의 위험

- 시스템 개발 비용은 초기단계에서 80%가 결정됨
- 시스템 개발의 초기단계에 시스템 요구사항을 명확하게 정의하면 cost overrun 감소
- 요구사항 관리에 개발노력의 10% 수준으로 투입하면 비용초과나 일정 지연이 줄어듦
- 요구사항 관리에 13% 이상 투자 시 비용 증가 추세가 안정화

○ 요구사항의 비밀
- 대부분 개발된 소프트웨어 기능의 절반은 한 번도 사용되지 않음
- 대부분의 시스템과 소프트웨어 프로젝트에 투입된 노력의 절반 이상은 낭비됨
- 고객이 기술한 요구사항이 실제 요구사항은 아님
- 테스트 단계에서 발견되는 결함원인의 80%는 부정확하거나 누락된 요구사항
- 프로젝트 성공을 위하여 참여자와의 사전노력이 필요
- 결함을 줄이기 위하여 Inspection 프로세스를 수행해야 함
- 인스펙션은 적용이 쉽고 비용이 낮지만 대부분 적용하지 않음
- 대부분의 프로젝트에서 좋은 의사소통 기법을 사용하지 않음
○ 요구사항 도출 개요

- 기능적 요구사항 + 비기능적 요구사항(사용성, 신뢰성, 성능, 유지보수성, 디자인 제약사항)
- ex) 제로백이 3초였으면 좋겠어요 -> 비기능요구사항(성능), 엑셀을 밟았을 때 차가 앞으로 갔으면 좋겠다 -> 기능 요구사항
- 두 가지만 기억. 제약조건, 품질 속성 등이 있으면 비기능
- 비기능 요구사항의 품질특성 중 안전성은 우리가 흔히 아는 safety와는 다름
- 비기능 요구사항에서는 특히 성능에 관한 내용이 많이 나옴 ex) ATM 인출 요청은 10초 이내에 인증되어야 한다
○ 소프트웨어 품질 특성
- 기능성: 적절성, 정확성, 상호운영성, 보안성
- 신뢰성: 성숙성, 결함수용성, 복구용이성
- 사용성: 이해용이성, 학습성, 운영성, 기호성
- 효율성: 시간효율성, 자원활용성
- 유지보수성: 분석성, 변경성, 안전성, 시험성
- 이식성: 환경적응성, 설치용이성, 치환성, 공존성
○ 정확한 시스템 Goal 식별
- 개발 범위 정의
-product와 boundary 정의
-특정 릴리즈에 대한 범위 정의
-범위 확장 관리
- gold-plate 방지
-소프트웨어 공학이나 프로젝트 관리(또한 보통의 시간관리)에서 프로젝트나 작업에서 추가적인 기능을 위해서 기존의 목적 또는 수준을 지나쳐서 계속해서 일하는것
○ 프로젝트 비전 및 범위 정의서
- 프로젝트 목적 및 비전
-프로젝트 발주사의 정책을 고려한 효율적인 정보화 체계구축
- 프로젝트 범위
-업무영역, 대상조직, 수행기간, 가정사항, 제약사항
- 작업단계
-적용방법론, S/W Life Cycle 등 기술
- 주요산출물
-방법론에 따른 세그먼트, 태스크, 산출물, 제출부수, 제출시기 등 기술
- 소요기술 및 자원
-본 프로젝트 구행과정에서 요구되는 요소기술 및 자원
- 소요 H/W 및 S/W 자원
-자원명, 세부내역 및 용도, 필요시기, 조달방법, 조달자 등을 기술
- 프로젝트 작업장 및 요구사항
-프로젝트 수행과정에서 필요한 OA 기기 및 기타 소모품 등에 대한 제공 방안 기술
- 고객 책임 수행사항
-프로젝트 수행과정에서 고객 책임 및 고객 의무사항 기술
○ 고객 중심의 요구사항 도출
-
사용자 관점에서 문제를 해결한다
-개발자 중심의 문제접근을 피한다
-수동적 요구사항 수집이 아닌 능동적 요구사항 도출활동을 한다
-참여자가 많을수록 더 많은 기능을 요구한다(참여자 제거)
-
고객으로부터 요구사항 정보를 도출한다
-지속적인 탐색과 발견의 과정
-listen carefully, ask question
-
사용자와 개발자가 동일한 용어를 사용한다
-
용어집을 작성한다
-공통의 표현법으로 기술한다
■ 요구사항 도출 기법
■ 인터뷰
- 관련자들과 직접 대화를 통해 상세정보 도출
- 적용 가능한 경우: 소수의 인원이 많은 정보를 알고 있을 때, 업무영역전문가가 존재할 때
- closed interview: 많은 준비 필요, 응답자 주관적인 왜곡 방지
- open interview: 관련없는 데이터 및 자료 수집의 가능성 존재, 시간과 교육 필요
● 인터뷰의 고려사항
-
인터뷰 전의 고려사항
-인터뷰 목적과 contextual 영역 정의
-시스템 관련지식, 공통용어 수집
-인터뷰 수행자의 특성: Bias 배제
-
인터뷰 중의 고려사항
-인터뷰 대상자의 말을 경청
-앞선 질문으로부터 다음 질문을 유추
-피드백과 이해를 위해 모델과 스케치 사용
-
종료 전의 고려사항
-종료 전에 정보요약 및 결과 설명 후 다음 질문
■ 설문서
- 통계적 분석기법 기반
- 효율적인 설문 수행: 사전질문 -> 설문
- 미리 정의된 질문 사용
■ 브레인스토밍
- 소수 인원의 그룹에 의한 의견 생성(2~5)
- 빠른 시간에 많은 의견을 생성
- 다양한 견해를 제공
■ 사용자 관찰
- 분석가가 고객의 일상 작업 수행과정을 관찰
- 활용가능 시점: 현재 시스템의 문제를 찾을 때, 고객이 알고 있지만 표현을 하지 못할 때
■ 요구사항 워크샵
- 주제에 대한 토론(~20명 이상)
- 일정 주제 기반의 의견 공유 및 합의 세션
- 너무 많은 인원이 아닌 최소의 연락이 참여하는 것이 바람직
● 워크샵 수행 고려사항
- 진행규칙을 정한다
- 워크샵의 수행범위를 넘지 않는다
- 토론팀의 규모를 작게 유지한다
- 기록 시 향후 고려항목을 위한 공간을 준비한다
■ 요구사항 도출 시 주의사항

■ 누락 요구사항

■ 요구사항 분석 개요
- 요구사항 정제
- 추상적 요구사항을 상세화 및 합의하는 행위
- 요구사항 분석 활동: 모델링, 우선순위화, 선정
■ 요구사항 모델링 종류
- 행위 모델
-시스템과 환경의 interation 및 시스템 내부의 처리를 기술하는 diagram 관련
-DFD, ERD, Scenario, Use Case, ...
※ DFD 작성 규칙

-프로세스와 타 프로세스는 직접적인 커뮤니케이션을 할 수 없고 데이터 스토어를 통함
-프로세스명은 동사와 목적어를 사용해 명확히 정의
-하나의 다이어그램에서 8~10개 이상의 프로세스를 포함하지 않음
-DFD의 원은 대부분 I/O를 동시에 필요로 함
※STD Modeling(state transition diagram)

※ Use Case Diagram

■ 요구사항 우선순위 기법
● Analytical Hierarchy Process(AHP)

● Value-Based Prioritization

■ 요구사항 명세 개요
● 좋은 요구사항 명세 속성
- necessary
- correct
- feasible
- prioritized
- understand
- verifiable
● 전체 요구사항 문서 속성
- complete
- consistent
- modifiable
- traceable(추적성)
■ 소프트웨어 명세 및 실습
■ 요구사항 수집 방법
- document-based
- interview: 가장 직접적인 요구사항 습득기법, 간단, 실질적으로 모든 상황에서 적용 가능
- workshop: 정해진 짧은 기간 안에 고객의 주요 요구사항을 얻을 수 있느 기법
- 설문조사
- role-playing: 고객의 비즈니스가 매우 복잡할 경우, 고객의 입장에서 고객의 실세계를 경험하게 하여 이해를 높이고자 할 때 사용되는 기법
■ 요구사항 분석 방법
● 문장 분석
- 문서로 제공된 시스템 요구사항, 제안서, 기존 시스템 변경사항 자료 등을 기반으로 요구사항을 분석
- 주로 구조적 방법론에서 사용
● DFD

- 구조 분석을 위한 기법으로 시스템이 다루는 데이터나 저장소, 프로세스나 저장소 등을 기반으로 요구사항을 분석
● 스윔 레인

- 비즈니스 프로세스나 제안된 소프트웨어 시스템 운영에 필요한 각 단계를 표현하는 방법을 제공
- uml activity 다이어그램과 유사하며 기능 요구사항을 묶는데 도움이 됨
● use case
- Actor가 어떤 중요한 결과를 성취하는 데 있어 결과를 만들어 내는 , 시스템과 외부행위자 간의 상호작용의 순서를 설명
- use case 분석의 결과로 기능 요구사항을 도출
● 의사결정 일람표와 의사결정 트리
- 의사 결정 일람표는 행동에 영향을 미치고 각 요소의 조합에 대한 시스템의 예상 행위를 가리키는 모든 요소에 대한 다양한 값을 나열

- 의사결정 트리는 프로그램의 분기문과 같은 형태로 의사결정을 표현

● 이벤트 반응표
- 실시간 시스템 요구사항 분석 시 이벤트에 따라 시스템이 수행해야 할 반응을 중심으로 분석
- 이벤트 주기, 이벤트를 처리하는 데 필요한 데이터 요소, 이벤트 반응 후의 시스템 상태
■ 요구사항 명세 방법

- 간단한 시스템의 경우 use case 사용
- 국제표준 IEEE-std-830 명세 표준 사용
- 기능, 비기능, 인터페이스 요구사항은 디폴트 / 안전과 관련된 시스템인 경우 안전 요구사항 추가