✅요구분석
- 소프트웨어에서 가장 중요한 단계
- 솦프트웨어 프로젝트 계획 이후에 소프트웨어 시스템이 가져야할 기능이나 성능 등의 특징을 찾아내서 이것을 분석하고 정리해서 요구사항으로 잘 정리 한 것
- 소프트웨어 개발의 실질적인 첫 단계
- 사용자의 요구에 대해서 이해하고 정리한느 작업
- 두 가지 작업
- 현재의 상태를 파악하고 요구를 정의
- 명세서 작성
- 요구의 변경은 파급 효과가 큼
✔요구분석 과정
요구추출
- 기능적인 요구와 기능 이외의 조건 추출
도메인 분석
- 요구에 대한 정보를 수집하고 배경 분석
모델링
- 도메인 분석을 통해 얻은 자료를 개념화
프로토타리핑과 시험
- 분석된 기능적 요구의 타당성 시험을 위한 프로토타입 생성
문서화 검토
- 요구분석서를 작성
🔽요구
- 시스템이 제공해야할 역량
- 외형적으로 나타내는 기능이나 성능
✔요구와 연관된 사람들
- End Users : 최종적으로 이 서비스를 사용할 사람
- Domain Experts : 도메인 관련한 약관 등을 관리해줄 전문가들
→ 이처럼 정말 많은 유형의 사람들이 관련되어 있기 때문에 요구사항을 아주 정확하게 추출해내는 것이 중요함.
🔽기능적 요구
- 시스템과 외부 요소들 간의 인터랙션 (사용자들에게 보여주는 서비스)
- 시스템이 어떤 상태일 때 외부의 데이터나 명령에 대해 어떤 반응을 하는지 기술
- 기능적 요구 항목으로 제기되는 문제들은 사용자의 문제를 해결하기 위한 구현 가술과는 독립적인 사항
✔기능적 요구사례
특성, 자료, 입출력, 사용자
✔기능적 외적 요구(성능)
- 비기능적 요구 : 시스템 구축에 대한 성능, 보안, 품질, 안전 등에 대한 요구사항
- 성능 - 시스템의 처리량(1분당 몇개를 처리하는지, 반응 속도가 어떤지..)
- 품질 - 신뢰성, 가용성, 사용시 오류 발생률
- 안전 - 의도하지 않은 오퍼레이션으로 인해서 원치 않는 상태에 있는 것을 방지하는 역량
- 보안 - 시스템의 자원을 악의적인 공격으로부터 보호할 수 있는 역량
- 사용성 - 인터페이스. 동작, 보고 느끼는 것
🔽요구 추출의 어려움
- 개발 팀이 응용 도메인에 대해서 충분히 알지 못함.
- 고객과 사용자가 소프트웨어가 무엇을 하는지 또한 어떻게 요구를 표현할지 모름
- 공통 배경지식 부족으로 개발 팀과 사용자 사이의 대화 장벽이 생김
- 소프트웨어 요구에 대한 명세와 구현이 분리 될 수 없어 정확히 명시하기가 어려움 (그래서 요구에 대한 명세를 아주 확실하게 정확하게 정해놔야함, 요구 추출할때는 어떻게가 아니라 무엇을 추출 해야하는지를 결정하는 것이다. Not How, WHAT!)
- 요구 추출 작업을 관리자, 사용자, 개발자 모두 과소평가하는 경우가 많음.
- 비기능적 요구를 파악하고 이해하지 못함.
- 요구가 계속해서 변경됨
✔요구 추출
- 추출 세 가지 단계
- 응용에 대한 정보 출처 파악 (* 정보출처 : 다양한 이해관계자들의 요구를 파악하는 것.)
- 응용 대한 정보 취합
- 요구와 제한 사항의 정의
- 정보수집 방법
- 고객의 발표, 문헌 조사, 업무 절차와 양식 조사,
- 관련자들 설문지, 사용자와의 인터뷰, 브레인 스토밍 회의, 사용 스토리 또는 사용사례 작성
✔요구 우선순위
- 우선 순위에 따른 요구 구별
- 절대적으로 필요한 요구
- 용망되나 꼭 필요한 것은 아닌 요구
- 요구로 판단될 수 있으나 제외될 수돌 있는 요구
✔요구 정보 출처
- 정보출처 유형
- 고객(혹은 나 자신)
- 도메인 전문가 - 비즈니스 도메인을 지원하는 시스템을 구축하기 위해 필요한 사람
- 이해당사자(stakeholder) - 시스템 운용으로 인해 영향 받는 사람
- 사용자(end user) : 시스템을 직접 사용하는 사람
- 역공학 : 이미 있는 시스템들을 잘 분석
🔽정보 수집 방법
✔요구 제한의 정의
- 수집한 정보에서 요구와 제한 사항을 도출
- 요구도출과정(사용자 니즈 파악, 요구 도출)
🔽도메인
✔도메인 분석
- 도메인 : 요구의 배경
- 설계 모델링에 필요한 여러개념과 비즈니스 룰을 파악
- 응용 분야에 존재하는 개념을 잘 정의 하고 분석하여 시스템에 존재하는 개념으로 정립하는 단계
1. 도메인 정의
- 업무작업 영역을 파악하고 범위를 규정 : 정보 시스템을 구축하는데 필요한 개념적인 프레임워크 제공
- 서브시스템이라고 생각하면 됨.
- 넓은 범위의 개념을 더 좁은 범위의 지식들로 체계홯하는 작업
2. 도메인 분석
- 도메인 배경파악
- 도메인 개념
- 도메인의 목적, 구조, 동작을 구성하는 객체, 프로세스, 사람, 룰 같은 것임. (* 객체는 하나의 클래스를 이루는 것을 말함, 프로세스 : 이런 것들이 어떻게 흘러가는지 정리, 사람: 액터, ***룰: 규칙)
- 도메인 개념을 발견을 위한 주의사항
- 요구의 핵심을 발견해야함
- 요구가 해결될 것 같은 문제를 발견
- 문제의 요소를 발견
- 관련된 도메인의 개념을 발견
3. 도메인 사전
- 도메인 개념을 조직화한 결과물
- 각 항목은 용어가 사용될 때는 언제든 같은 의미로 통하게하는 간결한 정의
- 요구, 인터뷰, 메뉴얼로 추출
- 도메인 정의에서 표현된 문장, 어절, 제목에 초점을 두고 개념을 추출
- 진료와 검사 의료서비스의 성격에따라 의사, 간호사,검사원이 환자에게 적절한 예약된 의료 서비스를 제공
- 도메인 개념, 의료서비스, 의사, 간호사, 검사원 ,환자, 예약
4. 비즈니스 규칙
- 업무에서 지키기로 한 규정
- 정책, 규정, 절차, 가이드라인, 표준의 집합
- 사용자에게 요구해도 준비된 전체 목록을 받기 어려움
- 종류
– 사실(fact)
– 개념이 무엇인지 설명
– 추론(inference)
– 다른 사실로 부터 얻은 사실
– 액션 구동자(action enabler)
– 조건이 일치되면 액션이 수행
– 제약(constraints)
– 시스템이나 외부 요소가 수행할 또는 수행하지 않을제약을 가하는 규칙
– 계산(computation)
– 공식이나 알고리즘