24
Object-Oriented Analysis & Desgin 2. 요구사항 수집 이데아 게임즈 손진화

Object oriented analysis and design - 2장

  • Upload
    -

  • View
    70

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Object oriented analysis and design - 2장

Object-OrientedAnalysis & Desgin2. 요구사항 수집

이데아 게임즈 손진화

Page 2: Object oriented analysis and design - 2장

Code 1

Page 3: Object oriented analysis and design - 2장

하나의 요구 사항이라는 것이 정확히 무엇입니까?

시스템이

올바르게

동작하기 위해서

수행하는

특정한 하나의 일

1. 여러분의 소프트웨어가고객이 원하는 기능을 하도록 하세요

Page 4: Object oriented analysis and design - 2장

요구 사항 리스트 만들기

- 고객에게 귀를 기울여라

- 시스템이 무엇을 해야 하는지 이해하라

Page 5: Object oriented analysis and design - 2장

강아지 문 요구사항

1. 강아지 문은 열렸을 때 35cm 이상이어야 한다.

2. 리모콘에 있는 하나의 버튼은 문이 닫혔을 때 누르면 열리고, 열렸을 때 누르면닫힌다.

3. 강아지 문이 한번 열린 후, 닫지 않으면자동으로 닫혀야 한다.

Page 6: Object oriented analysis and design - 2장

Code 2

Page 7: Object oriented analysis and design - 2장

Q 하나의 요구 사항은 고객이 원하는 애플리케이션의 기능들 중 하나를 말하는 건가요?A 고객이 생각하는것보다 많은 내용이 포함되어 있습니다. 고객이 여러분이 만들 시스템에 원하고기대하는 것과 꼭 해야 한다고 생각하는 것을 찾는 것 부터시작하세요. 특히 대부분의 고객은 문제가발생해도잘 동작하기를 원합니다.

Q 토드와 지나를 위한 시스템은 강아지문을 말하는거죠?A 시스템은고객의 목적을 맞춰주기 위해 필요한 모든 것이라 할 수 있습니다. 강아지문과 리모콘을 모두포함한다고 말할 수 있습니다.

Page 8: Object oriented analysis and design - 2장

Q 나는 왜 토드와 지나가 강아지 문을 어떻게 이용할 지, 그리고 뭐 잘못될 것이 없는지 까지 알아내야하는지 잘 모르겠습니다.A 고객이 원하는 것을 만들어줘야 합니다. 그래서그들보다 시스템이 해야 할 일을 정확하게파악해야합니다.

Q 토드와 지니가 강아지 문을 사용할 때 일어날지모르는 안 좋은 상황을 생각해 봐야 하는 것이군요?A 예! 바로 그거죠. 이제 그걸 해 봅시다.

Page 9: Object oriented analysis and design - 2장

강아지 문 유스케이스

1. 피도가 밖에나가고 싶어 짖습니다.2. 토드 또는 지나가피도가 짖는 것을 듣습니다.3. 토드 또는 지나가리모콘의버튼을누릅니다.4. 강아지 문이열립니다.5. 피도가 밖에나갑니다.6. 피도는 밖에서쉬합니다.

6.1 문이 자동으로 닫힙니다.6.2 피도가 들어 오려고짖습니다.6.3 토드나 지나가 피도가짖는 것을 듣습니다.(다시)6.4 토드나지나가 리모콘을누릅니다.6.5 강아지 문이 열립니다(다시)

7. 피도가안으로 들어옵니다.8. 강아지문이 자동으로 닫힙니다.

문제를 대체 경로로 정리한다.

Page 10: Object oriented analysis and design - 2장

유스케이스(Use-cases)

고객의특정한 목표를달성하기 위해

여러분의 시스템이무엇을 하는지를기술합니다.

하나의 유스케이스는 하나의 목표에만 집중합니다.

어떻게는 신경쓰지 않습니다

Page 11: Object oriented analysis and design - 2장

유스케이스의 세 가지 필수 요소

1. 명확한가치모든유스케이스는시스템에게명확한가치를가지고있어야 합니다. 고객의목표달성에도움이되지 않는다면쓸모없는유스케이스입니다.

2. 시작과종료모든유스케이스는명확한시작 시점과종료 시점에있어야 합니다. 뭔가가유스케이스를기동시키고, 유스케이스가 완료되었음을표시하는상태가있어야합니다.

3. 외부기동자(액터)모든유스케이스는액터에의해 시작됩니다. 액터는주로사람이지만시스템외부의어떤 것이나될 수 있습니다.

Page 12: Object oriented analysis and design - 2장

강아지 문 유스케이스

1. 피도가 밖에나가고 싶어 짖습니다.2. 토드 또는 지나가피도가 짖는 것을 듣습니다.3. 토드 또는 지나가리모콘의 버튼을누릅니다.4. 강아지 문이열립니다.5. 피도가 밖에나갑니다.6. 피도는밖에서쉬합니다.

6.1 문이 자동으로 닫힙니다.6.2 피도가 들어 오려고짖습니다.6.3 토드나 지나가 피도가짖는 것을 듣습니다.(다시)6.4 토드나 지나가리모콘을누릅니다.6.5 강아지 문이 열립니다(다시)

7. 피도가안으로 들어옵니다.8. 강아지문이 자동으로 닫힙니다.

Page 13: Object oriented analysis and design - 2장

강아지 문 유스케이스

1. 피도가 밖에나가고 싶어 짖습니다.2. 토드 또는 지나가피도가 짖는 것을 듣습니다.3. 토드 또는 지나가리모콘의 버튼을누릅니다.4. 강아지 문이열립니다.5. 피도가 밖에나갑니다.6. 피도는밖에서쉬합니다.

6.1 문이 자동으로 닫힙니다.6.2 피도가 들어 오려고짖습니다.6.3 토드나 지나가 피도가짖는 것을 듣습니다.(다시)6.4 토드나 지나가리모콘을누릅니다.6.5 강아지 문이 열립니다(다시)

7. 피도가안으로 들어옵니다.8. 강아지문이 자동으로 닫힙니다.

외부 기동자

시작점

종료점

가치

Page 14: Object oriented analysis and design - 2장

Q 유스케이스는 시스템이 제대로 동작하기 위해 수행해야 할 단계들을 표시한 리스트입니까?A 하나의 특정한목표를 달성하는데 초점을 맞추고있습니다.

Q 유스케이스가 구체적이지않아요. 각 유스케이스는왜 Remote 클래스나 DogDoor 클래스에대해 얘기하지 않았죠?A 유스케이스는시스템이 해야 할 일에 대해 여러분이 이해하고 다른 사람에게 설명하기위해 만드는 것입니다. 만약 유스케이스가 코드 수준까지자세하게설명한다면, 프로그래머 이외의다른 사람들에게는 유용하지 않을 것입니다.

Page 15: Object oriented analysis and design - 2장

Q 유스케이스는 유스케이스 다이어그램과같은 것입니까?A 유스케이스다이어그램은 유스케이스들을시각적으로 보여주는 방법입니다.

Q 유스케이스를 가지고어떻게 실제 코드를 만들죠?A 유스케이스의목적이 코드를 어떻게 작성할지를 자세하게 나타내는 것은 아닙니다. 유스케이스의단계를구현하는 방법에 대해서는 좀 더 생각해봐야 할 거예요.

Page 16: Object oriented analysis and design - 2장

Q 유스케이스가 코드 작성에는 별 도움이 되지 않으면, 유스케이스에이렇게 시간을 들이는 이유가뭐죠?A 유스케이스는코드 작성에 도움이 됩니다. 고객이원하는 기능을 제공하지못한다면 좋은 소프트웨어가될 수 없습니다. 유스케이스는 고객이 원하는 기능을알아내는 도구입니다.

Page 17: Object oriented analysis and design - 2장

유스케이스를 가지고 요구사항 체크하기

1. 피도가 밖에 나가고 싶어 짖습니다.

2. 토드 또는 지나가 피도가 짖는 것을 듣습니다.

3. 토드 또는 지나가 리모콘의 버튼을 누릅니다.

4. 강아지 문이 열립니다.

5. 피도가 밖에 나갑니다.

6. 피도는 밖에서 쉬합니다.

6.1 문이 자동으로 닫힙니다.

6.2 피도가 들어 오려고 짖습니다.

6.3 토드나 지나가 피도가 짖는 것을 듣습니다.(다시)6.4 토드나 지나가 리모콘을 누릅니다.

6.5 강아지 문이 열립니다(다시)

7. 피도가 안으로들어옵니다.

8. 강아지 문이 자동으로 닫힙니다.

1. 강아지문은열렸을때 35cm 이상이어야한다.

2. 리모콘에있는하나의버튼은문이닫혔을때누르면열리고, 열렸을때 누르면닫힌다.

3. 강아지문이한번열린후, 닫지않으면자동으로닫혀야한다.

Page 18: Object oriented analysis and design - 2장

유스케이스를 가지고 요구사항 체크하기

1. 피도가 밖에 나가고 싶어 짖습니다. N/A

2. 토드 또는 지나가 피도가 짖는 것을 듣습니다. N/A

3. 토드 또는 지나가 리모콘의 버튼을 누릅니다. 2

4. 강아지 문이 열립니다. 2

5. 피도가 밖에 나갑니다. 1

6. 피도는 밖에서 쉬합니다. N/A

6.1 문이 자동으로 닫힙니다. 3

6.2 피도가 들어 오려고 짖습니다. N/A

6.3 토드나 지나가 피도가 짖는 것을 듣습니다.(다시) N/A6.4 토드나 지나가 리모콘을 누릅니다. 2

6.5 강아지 문이 열립니다(다시) 2

7. 피도가 안으로들어옵니다. 1

8. 강아지 문이 자동으로 닫힙니다. 3

1. 강아지문은열렸을때 35cm 이상이어야한다.

2. 리모콘에있는하나의버튼은문이닫혔을때누르면열리고, 열렸을때 누르면닫힌다.

3. 강아지문이한번열린후, 닫지않으면자동으로닫혀야한다.

Page 19: Object oriented analysis and design - 2장

대체 경로, 주 경로

- 주 경로

모든 것이 제대로 진행되었을 때의 시스템이하는 일. 고객이 시스템에 대해 얘기할 때 보통이것을 얘기한다

- 대체 경로

유스케이스에서 항상 일어나지 않는 단계들

테스트코드를 작성할 때는 대체 경로도 테스트 해야 한다

Page 20: Object oriented analysis and design - 2장

Code 3

Page 21: Object oriented analysis and design - 2장

Quiz

외부 구동자

유스케이스

시작 조건

요구 사항

명확한 가치

종료 조건

주 경로

유스케이스에설명된단계들의리스트를시작시킨다. 이것이없으면유스케이스는시작되지않는다.

성공하기위해시스템이해야할일

유스케이스가언제끝나는지알려준다. 이것이없으면유스케이스는끝나지않는다.

좋은요구사항들을수집하게도와준다. 시스템이할일에관한이야기를한다.

모든것이제대로진행되었을때의시스템이하는일.고객이시스템에대해얘기할때보통이것을 얘기한다.

이것이항상유스케이스의첫 번째단계이다.

이것이없이는유스케이스가아무에게도소용없다. 이것없는유스케이스는항상실패한다.

Page 22: Object oriented analysis and design - 2장

Quiz

외부 구동자

유스케이스

시작 조건

요구 사항

명확한 가치

종료 조건

주 경로

유스케이스에설명된단계들의리스트를시작시킨다. 이것이없으면유스케이스는시작되지않는다.

성공하기위해시스템이해야할일

유스케이스가언제끝나는지알려준다. 이것이없으면유스케이스는끝나지않는다.

좋은요구사항들을수집하게도와준다. 시스템이할일에관한이야기를한다.

모든것이제대로진행되었을때의시스템이하는일.고객이시스템에대해얘기할때보통이것을 얘기한다.

이것이항상유스케이스의첫 번째단계이다.

이것이없이는유스케이스가아무에게도소용없다. 이것없는유스케이스는항상실패한다.

Page 23: Object oriented analysis and design - 2장

핵심 정리

- 요구 사항은 시스템이 제대로동작하기 위해 해야 할일입니다.

- 초기 요구 사항은 보통 고객이 말해줍니다.

- 좋은 요구 사항들을 만들려면, 유스케이스를만들어야 합니다.

- 유스케이스는시스템이 해야 할 일을 자세하고 명확하게 설명합니다.

- 하나의 유스케이스는하나의 목표를 가집니다. 하지만 그 목표를 이루는 경로는 여러 가지 입니다.

- 좋은 유스케이스는시작 조건, 종료 조건, 외부 구동자, 사용자의명확한 가치를 가지고 있습니다.

- 유스케이스는단지 시스템이 어떻게 동작하는 지를말하는 것입니다.

Page 24: Object oriented analysis and design - 2장

핵심 정리

- 여러분의 시스템이달성해야 할 각 목표에 대해 최소하나 이상의 유스케이스가필요합니다.

- 유스케이스들을작성 후, 요구 사항을 다듬거나추가할 수 있습니다.

- 여러분의 유스케이스모두를 가능하게 하는 요구 사항 리스트는 좋은 요구 사항 리스트입니다.

- 여러분의 시스템은모든 게 여러분의기대대로 돌아갈 때뿐만 아니라, 실제 상황에서도 동작해야 합니다.

- 문제가 생기면 시스템은대체경로를 사용해서 시스템의 목표를 달성해야 합니다.