티스토리 뷰
고객이 정말 원하는 것이 무엇인지 요구 사항을 수집하는 방법을 알아보자.
하나의 요구 사항이라는 것을 정확히 무엇일까?
여러분의 시스템이 올바르게 동작하기 위해서 수행하는 특정한 하나의 일이다.
시스템
작업중인 프로젝트를 의미한다.
올바르게 동작
시스템이 올바르게 동작하는지는 고객이 결정한다. 고객이 깜빡 잊고 얘기하지 않더라도 그것을 구현하지 않으면 시스템은 제대로 동작되는 것이 아니다.
수행하는 특정한 하나의 일
하나의 요구사항은 보통 한가지 일이고 그 요구 사항을 해결했다는 것을 확인하기 위해 테스트를 할 수 있다.
요구사항
요구사항이란? 하나의 요구 사항은 특정 상품이나 서비스가 어떤 것이어야 하는지 또는 무엇을 수행해야 하는지를 자세하게 설명한 것이다. 주로 시스템 엔지니어링이나 소프트웨어 엔지니어링 분야에서 공시적으로 자주 사용한다.
요구 사항 리스트 만들기
우선 고객이 말하는 요구사항을 작성한다. 그리고 시스템이 해야 할 일에 주의를 기울여라. 시스템이 어떻게 고객이 말하는 것을 수행할지 추가적인 요구사항을 찾아내라.
좋은 요구사항을 얻는 가장 좋은 방법은 시스템이 무엇을 해야 하는지 이해하는 것이다.
유스케이스를 소개합니다.
유스케이스는 고객의 특정한 목표를 달성하기 위해 여러분의 시스템이 무엇을 하는지를 순서대로 기술한다. 유스케이스는 추가적인 단계인 대체 경로도 가질 수 있다.
고객의 특정한 목표
하나의 유스케이스는 하나의 목표에만 집중한다. 고객의 목표가 바로 유스케이스의 핵심이다. 시스템은 고객의 목표를 달성하게 해야 한다.
무엇을 하는지
유스케이스는 무엇에 관한 것이다. 어떻게에 대해서는 지금 걱정하지 말자.
대체 경로
유스케이스는 기본적으로 주경로를 가진다. 하지만 유스케이스가 가지는 목표를 달성하기 위해서 추가로 대체 경로를 가질 수도 있다.
유스케이스
유스케이스란? 유스케이스는 새로 만들 시스템이나 소프트웨어 변경 사항에 대한 요구 사항을 찾아내는 방법이다. 각 유스케이스는 특정 목표를 달성하기 위해 시스템이 사용자 또는 다른 시스템과 어떻게 상호작용하는지를 전달하는 하나 이상의 시나리오를 제공한다.
좋은 유스케이스가 가지는 3가지 부분
- 명확한 가치
- 시작과 종료
- 외부 가동자(액터)
유스케이스를 가지고 요구사항 체크하기
유스케이스에 시스템이 해야 할 일, 즉 요구 사항을 모두 담고 있는지 확인해야 한다. 유스케이스의 순서 단계별로 요구 사항 리스트 번호를 적어서 확인하면 된다. 유스케이스에 시스템과 관련이 없는 부분도 있는데, 이 부분은 N/A(Not Application)로 적으면 된다. 만일 유스케이스에 요구사항이 해결하지 못하는 것이 있으면, 그것을 요구 사항 리스트에 추가해야 한다.
유스케이스의 진정한 장점은 무엇인가?
유스케이스를 근거로 요구 사항 리스트에서 빠진 것을 찾을 수 있다. 그래서 좋은 유스케이스는 좋은 요구 사항을 만들고 나쁜거나 불완전한 유스케이스는 잘못된 요구사항을 만들수 있다.
핵심 정리
- 요구 사항은 시스템이 제대로 동작하기 위해 해야 할 일이다.
- 초기 요구 사항은 보통 고객이 말해준다.
- 좋은 요구 사항들을 만들려면, 유스케이스를 만들어야 한다.
- 유스케이스는 시스템이 해야 할 일을 자세하고 명확하게 설명한다.
- 하나의 유스케이스는 하나의 목표를 가진다. 하지만 그 목표를 이루는 경로(대체경로)는 여러가지이다.
- 좋은 유스케이스는 시작조건, 종료조건, 외부 구동자(액터), 사용자의 명확한 가치를 가지고 있다.
- 유스케이스는 단지 시스템이 어떻게 동작하는 지를 말하는 것이다.
- 여러분의 시스템이 달성해야 할 각 목표에 대해 최소 하나 이상의 유스케이스가 필요하다.
- 유스케이스들을 작성 후, 요구 사항을 다듬거나 추가할 수 있다.
- 여러분의 유스케이스 모두를 가능하게 하는 요구 사항 리스트는 좋은 요구 사항 리스트이다.
- 여러분의 시스템은 모든 게 여러분의 기대대로 돌아갈 때뿐만 아니라, 실제 상황에서도 동작해야 한다.
- 문제가 생기면, 시스템은 대체 경로를 사용해서 시스템의 목표를 달성해야 한다.
'객체지향 설계 > Head First OOAD' 카테고리의 다른 글
6. 정말 큰 문제 해결하기 (0) | 2018.09.03 |
---|---|
5. 좋은 디자인 = 유연한 소프트웨어 (0) | 2018.09.02 |
4. 분석 (0) | 2018.09.02 |
3. 요구 사항 변경 (0) | 2018.09.02 |
1. 잘 설계된 프로그램이 세상을 뒤흔든다. (0) | 2018.09.02 |