요구사항 ( Requirement )
- 시스템 ( SW )이 무엇을 제공해야 하는 가, 시스템의 제약사항 등..
- 시스템은 요구사항보다 나아질 수 없음. ( 요구사항을 지켜야 한다는 것. )
- 요구사항에 대해 정확히 파악하지 못하면 프로젝트가 실패할 수 있다.
요구사항을 정의하는것이 왜 어려울까?
- 요구사항이라는 것이 원래도 복잡한데, 의뢰인도 요구사항을 정확히 파악하지 못한다.
- 이해 당사자 (Stakeholder)들의 각자의 용어를 사용하므로 상호간 이해/소통에 어려움이 있다.
- 요구사항은 정적이지 않고, 동적이며, 이해 당사자간 요구사항이 충돌할 수 있다.
바람직한 요구사항
- 부족하거나 넘치지 않는 딱 중도를 지켜야 한다. ( Not Missing, Not Superfluous )
- 모호하지 않고 분명하고 정확해야 한다. ( Unambiguous, Correct )
- 모든 요구사항을 충족하며, 충돌하지 않아야 한다. ( Complete, Consistent )
- 구현 가능하며, 요구사항들의 구현 여부 등을 추적가능해야 한다. ( Feasible, Traceable )
요구사항 분석 사례
- 개발자 쪽에서 요구사항을 분석 한 뒤, 그것을 바탕으로 고객과 의논
- 그러나, 개발자 측에서 작성한 요구사항 문서가 고객이 읽기에 좋지 않으면, 고객이 충분한 검토 없이 승인할 수 있음
-> 이는 모법적이지 못하므로, 공학적 프로세스가 필요함.
요구사항 공학
- 요구사항을 찾아내고, 분석하고, 문서화하고, 고객에게 검증받는 과정.
사용자 요구사항 ( User Requirement ) : 고객이 작성하며, 기술적이지 않은 내용으로 이뤄짐.
시스템 요구사항 ( System Requirement ) : 개발자가 작성하며, 기술적으로 정밀하고 명확함. 기능/비-기능 이 구분됨.
-> 기능적 요구사항 : Input, Output이 명확한 것.
-> 비-기능적 요구사항 : 성능, 보안, 설계, 구현, 규제, 표준, 윤리적 부분 등..
요구사항 추출
- 요구사항은 사용자, 이용자, 이해 관계자, 리버스 엔지니어 등.. 연관된 모든 곳에서 생긴다.
- Stakeholder : 원하는 것이 무엇인지 정확하게 잘 모름. (표현을 못한다-)
- Analysts : 사용자/고객보다 자신이 더 필요한 것을 정확하게 안다고 착각하기도 한다.
-> 이해관계로 인해 요구사항 추출에 어려움이 있음.
요구사항 추출 기법
1. Requirement Workshop ( Customer Presentation )
- 이해 당사자들이 모두 모여서 소프트웨어 주문자가 발표, 그걸 듣고 요구사항을 정리한다.
-> 문제점, 필요기능, Use-case 시나리오, Risk list 등을 알아낼 수 있음.
2. Background Reading
- 설문, 기존 업무 프로세스 등을 참조 ( 기업 차트 및 정책, 문서화된 자료 )
-> 기업에 대한 이해도 상승, 디테일적으로 자세해짐.
3. Prototyping
- 개발한 제품을 바탕으로 고객에게 확인, 만들면서 새로운 요구사항을 발견
-> 좋은 방법이지만, 개발에 시간과 돈이 소모됨.
4. Brainstorming
- 회의 방법 중의 하나로, 가능성 여부와 상관없이 최대한 다양한 아이디어를 만듬.
5. Interviews & Surveys
- 불특정 다수의 의견을 수집하는 방법.
- 인터뷰는 사용자와 직접 만나서 대화,질문 하므로 질 높은 정보의 획득이 가능하지만, 그만큼 전문적인 기술이 필요.
- 설문은 한 번에 많은 정보를 취합할 수 있지만, 설문지의 완성도에 따라 정보의 질이 달라지게 된다.
요구사항 우선순위 설정 ( Requirement Prioritization )
- 추출한 요구사항들에 고유 번호를 매긴다.
- 모든 요구사항을 충족할 수 없는 상황이 일반적이므로, 필수인지, 있으면 좋은 수준인지 등으로 구분한다.
도메인 분석 ( Domain Analysis )
- 요구사항에 대한 배경지식을 습득한다.
- 고객이 당연하게 생각하는 비즈니스 규칙 등을 알아야함.
'3-1공부 > 소프트웨어공학론' 카테고리의 다른 글
6. 시스템 모델링 (0) | 2022.04.17 |
---|---|
5. Use-case (0) | 2022.04.17 |
3. 일정 계획, 팀 (0) | 2022.04.17 |
2. 소프트웨어 개발 절차 (0) | 2022.04.17 |
1. 소프트웨어 개요 (0) | 2022.04.17 |