2013년 2월 7일 목요일

헤드퍼스트 OOAD 2강

이번 2강의 제목은 요구 사항 수집 이다.

프로그래밍은 너무도 당연하지만 호갱... 아닌 고객이 원하는 것을 만들어 주는 것이다.
물론 내가 만들어서 남에게 팔 수도 있다 ㅡ.ㅡ
어째든........ 고객이 원하는게 뭔지 알려면 소통이 잘 되어야 한다.
고객 앞에서 클래스가 어쩌구, UML이 어쩌구, DB가 어쩌구 백날 떠들어봐야 모.른.다.

대부분의 고객은 자신이 원하는 것을 구체적으로 말하지 않는다.

예를 들면
내가 근처에 오면 자동으로 문이 열리게 해줘!! 그런데 나만 들어갈수 있는 문이어야 해~ 이런 식이라면

개발자들은 이 사람만 인식하는 문을 만들기 위해서 개 고생을 해야할 것이다.
그런데 개발자가 이사람 인증을 지문인식으로 했다고 해보자.

그런데 알고 봤더니 고객이 손이 없는 장애우라면?.......
당연 안팔릴 것이다.

이건 고객과 개발자를 동시에 빡치게 하는 일이므로 사전에 디테일하고 꼼꼼하게 요구사항을 수집해야하는 것이다.(가카가 개발자 하면 조낸 잘할 듯)

먼저 요구 사항의 정의를 보자.

요구 사항 - 시스템이 올바르게 동작하기 위해서 수행하는 특정한 하나의 일

그럼 요구사항 리스트를 만들어보자.



고객만 통과 가능한 문, 버전 1.0
요구 사항 리스트

  1. 고객만 통과 가능한 문이어야 한다
  2. 다른 놈은 들어올 수 없어야 한다.
  3. 고객은 열고 닫히는 것이 자동이길 원한다.
  4. 하지만 때때로는 수동으로도 되길 원한다.
  5. 열쇠 같은 것을 들고다니는 것을 싫어한다.
  6. 다른 사람이 들어오려고 시도하면 전기충격을 주고 싶다.
위와 같이 쭉 나열해 보자.
위는 그야말로 고객이 하고 싶은 것을 나열한 것에 불과하다.
이제 위에 것을 처음부터 끝까지의 과정으로 디테일하고 꼼꼼하게 작성해보자.
---------------------------------------------------------------------------------
고객만 통과 가능한 문, 버전 2.0
이 문이 하는 일

1. 누군가가 문을 통과하고 싶다
2. 이 쇼키가 고객인지 확인한다 (확인법은 안구 + 음성 + 지문 + DNA + 혈액 + 비밀번호 )
    2.1 고객이면 문을 열어준다
    2.2 고객이 아니면 전기 충격을 준다.
3. 상황에 따라 행동한다.
    3.1 고객인 경우 - 문을 통과하면 문을 닫고 잠근다.
    3.2 고객이 아닌 경우 - 전기 충격을 주고, 시체 처리반에게 자동으로 연락
---------------------------------------------------------------------------------

버전 2.0에서는 처음부터 끝까지 과정을 넣었다. 지금 위에 것이 바로 유스케이스 라는 것이다!

유스케이스는 또 뭐다냐!! 라는 분들을 위해 정의를 써본다.

유스케이스 : 새로 만들 시스템이나 소프트웨어 변경 사항에 대한 요구사항을 찾아내는 방법. 각 유스케이스는 특정 목표를 달성하기 위해 시스템이 사용자 또는 다른 시스템과 어떻게 상호 작용하는지를 전달하는 하나 이상의 시나리오를 제공함

이라고 참 길기도 하고 어렵게 써놓기도 했다 ㅡㅡ 하여간 전문가들이란.......
걍 버전 2.0  저런 모양이 유스케이스라고 알고 넘어가자.......

버전 2.0을 자세히 보면 뭔가 문제가 될만한 소지가 있다.
버전 2.0을 3.0으로 업그레이드 해보자.
---------------------------------------------------------------------------------
고객만 통과 가능한 문, 버전 3.0
이 문이 하는 일

1. 누군가가 문을 통과하고 싶다
2. 이 쇼키가 고객인지 확인한다 (확인법은 안구 + 음성)
    2.1 고객이면 문을 열어준다
    2.2 고객이 아니면 한번 경고를 한다.
3. 상황에 따라 행동한다.
    3.1 고객인 경우 - 문을 통과하면 문을 닫고 잠근다.
    3.2 고객이 아닌 경우 - 한번 경고를 준다
          3.2.1 - 걍 가면 상황 해제
          3.2.2 - 또 시도하면 전기 충격 
          3.2.3 - 전기 충격에도 계속 시도하면 기관총 발사, 시체 처리반에게 연락
---------------------------------------------------------------------------------
업그레이드 된 것이 보이는가?

일단 확인법을 대폭 줄였다. 고객이 문 통과할 때마다 피뽑는게 싫고, 지문이 없다고 투덜 댔다. 인증 한번 잘못했다가 죽이면 고객도 실수로 죽을 수 있다고 강도를 좀 줄였다.
이젠 전기로 죽지는 않는다....;;;

3.0 에서는 일어날 수 있는 일들을 좀더 꼼꼼하게 추가하였다.
이런식으로 계속 업그레이드를 하는 것이다.

유스케이스가 프로그래밍에 뭔 도움이 되겠냐고 한다면........
상당한 도움이 된다고 말하고 싶다. 나도 지금 이걸 작성하면서 어찌 만들어야 할지 전체의 그림이 보일 정도니깐. 

댓글 없음:

댓글 쓰기