전산 기술은 하루가 다르게 발전하고 새로운 기술이 나오고 있습니다. 그리고 프로젝트의 규모가 점점 늘어나고 있으며 다른 산업 분야와 접목하는 형태로 발전하고 있습니다.
프로그램의 규모가 커지고 많은 인력이 필요한 형태로 변하면서 효과적인 개발 공정과 많은 이해 관계자에게 프로그램의 구조를 설명하고 개발자 사이에 의사 소통할 수 있는 방법들이 생기고 있습니다.
여기에서는 여러 가지 개발 방법론 중에 많은 이들이 사용하는 CBD 개발 방법론을 적용해서 마지막 실습을 진행할게요.
일반적인 CBD 개발 방법론에서는 요구 분석 및 정의 단계, 아키텍쳐 단계, 설계 단계, 구현 단계, 배포 단계로 나누고 있습니다. 이 중에 아키텍쳐 단계는 프로그램을 컴포넌트 형태로 분류하고 이를 이용하여 소프트웨어를 제작하는 것인데 여기에서는 컴포넌트를 작성하는 방법을 다루지 않기 때문에 아키텍쳐 단계는 생략할게요. 그리고 구현한 후에 테스트 및 배포 단계도 생략합시다.
여기에서는 요구 분석 및 정의 단계, 설계 단계, 구현 단계로 나누어 실습하기로 할게요.
프로젝트에 앞서 시나리오를 확인하세요.
그리고 요구 분석 및 정의 단계에서는 먼저 프로젝트의 외부 요소인 사용자와 프로젝트가 사용할 외부 서비스에 해당하는 액터를 조사합니다. 조사가 끝나면 사용자 액터가 우리 시스템을 사용할 때와 우리 시스템이 어떨 때 외부 서비스를 사용하는지 파악합니다. 그리고 파악한 내용으로 유즈케이스(usecase)다이어 그램을 만듭니다. 필요하다면 각 유즈케이스 별로 상세 기술서 혹은 시퀀스(sequence) 다이어그램을 작성할 수도 있습니다.
설계 단계에서는 클래스로 표현할 것이 무엇인지를 조사하고 이들의 관계를 클래스 다이어그램으로 나타냅니다. 클래스 다이어그램을 작성한 후에는 유즈케이스 별로 수행 흐름을 표현하는데 여기에서는 시퀀스 다이어그램으로 표현합시다.
이 책에서는 기능별로 시퀀스 다이어그램을 작성하고 구현하는 것을 반복하기로 할게요.
시나리오
프로그램은 콘솔 기반의 응용 프로그램이다. 프로그램을 시작하면 이 에이치 나라를 생성한다. 이 에이치 나라는 초기화, 사용자 명령에 따른 동작, 종료화 과정을 거친다.
이 에이치 나라의 초기화에서는 학생 공장이 만들어지고 주거지와 다운타운, 학교가 만들어진다.
이 에이치 나라의 사용자 명령에 따른 동작에서는 종료 메뉴를 선택하기 전까지 선택한 메뉴를 수행하는 것을 반복한다. 이 에이치 나라의 메뉴는 학생 생성, 초점 이동, 학생 이동, 전체 보기, 종료 메뉴가 있다.
이 에이치 나라의 학생 생성 메뉴에서는 생성할 학생 종류를 선택하고 학생 이름을 입력받은 후에 학생 공장에 주문하여 생성한다. 학생 종류에는 마법 학생, 학사 학생, 운동 학생이 있다. 학생의 생성과 소멸은 학생 공장에서만 가능하다.
이 에이치 나라의 초점 이동 메뉴에서는 주거지, 다운타운, 학교 중에 한 장소를 선택하면 해당 장소로 초점을 이동한다. 각 장소로 이동하면 해당 장소의 종료 메뉴를 선택하기 전까지 선택한 메뉴를 수행하는 것을 반복한다. 종료 메뉴를 선택하면 초점은 다시 이 에이치 나라로 이동한다.
이 에이치 나라의 학생 이동 메뉴에서는 이동할 학생을 선택하고 주거지, 다운타운, 학교 중에 한 장소를 선택하여 유닛을 선택한 장소로 이동한다. 만약 이동한 장소가 학교일 때는 처음 학교를 방문한 것인지 확인하여 학번을 부여한다.
이 에이치 나라의 전체 보기에서는 이 에이치 나라에 있는 학생 정보와 각 장소의 정보를 보여준다.
주거지 메뉴에는 거실 생활, 소등, 이 에이치 나라로 학생 복귀하기, 초점 종료가 있다. 거실 생활에서는 학생을 선택하여 선택한 학생을 휴식 시킨다. 선택한 학생이 마법 학생이면 마법 여행도 간다. 소등 기능에서는 전체 학생이 잠을 잔다.
다운타운 메뉴에는 파티, 노래방, 이 에이치 나라로 학생 복귀하기, 초점 종료가 있다. 파티 기능에서는 전체 학생은 음료를 마신다. 노래방 기능에서는 학생을 선택하며 선택한 학생이 노래한다. 만약 선택한 학생이 운동 학생이면 춤도 춘다.
학교 메뉴에는 강의 시작, 도서관 가기, 이 에이치 나라로 학생 복귀하기, 초점 종료가 있다. 강의 시작 기능에서는 전체 학생은 강의를 받는다. 도서관 가기에서는 학생을 선택하며 선택한 학생이 공부힌다. 만약 선택한 학생이 학사 학생이면 독서도 한다.
모든 장소에서 이 에이치 나라로 유닛 복귀하기에서는 이동할 학생을 선택하여 선택한 학생을 에이치 나라로 복귀시킨다.
모든 장소에서 종료 메뉴를 선택하면 해당 장소의 초점이 종료하고 이 에이치의 상호 작용을 계속 수행한다.
주의 사항
각 장소에서는 학생의 기능 중에 약속한 행위외에 다른 기능에 접근할 수 없다.
학생의 생성과 소멸은 학생 공장에서만 가능하다.
학생에 관한 세부 사항은 상속과 다형성에서의 시나리오와 같습니다.
- 학생
멤버 필드로 이름, 주민번호, 체력, 지력, 스트레스가 있음
주민번호: 순차적 부여
이름: 생성 시 전달
지력:100(최소 0, 최대 200)
체력: 100 (최소 0, 최대 200)
스트레스: 0 (최소 0, 최대 100)
연속으로 공부한 횟수: 0 (0,5), 공부를 하면 1 증가, 그 외의 행위를 하면 0으로 리셋, scnt로 부름
- 학사 학생
멤버 필드로 더미 뇌가 있음
더미 뇌는 생성 시 0 이며 공부한 회수가 5의 배수가 될 때마다 1씩 증가
공부하다.
체력 5소모, 지력: scnt+더미 뇌 증가, 스트레스: 2감소
강의를 받다.
체력 3소모, 지력: scnt 증가, 스트레스: scnt증가
잠자다.
체력 10회복, 스트레스: 5감소 *scnt는 연속 공부한 회수
휴식하다.
체력 3회복, 스트레스: 25감소
음료 섭취
체력 5회복, 지력: 10감소 , 스트레스: 2증가
노래하다.
체력 10 소모, 지력: 5-scnt감소, 스트레스: 5-scnt증가
독서하다.
더미 뇌 1증가, 스트레스: 5감소
- 마법 학생
마법 학생은 내부적으로 지팡이가 있다.
지팡이는 생성 시 0이며 마법 여행 시 1씩 증가
공부하다.
체력 3소모, 지력: scnt 증가, 스트레스: 3증가
강의를 받다.
체력 2소모, 지력: scnt 증가, 스트레스: 5증가
잠자다.
체력 10회복, 스트레스: 5감소
휴식하다.
체력 3회복, 스트레스: 25감소
음료 섭취
체력 5+지팡이 회복, 지력: 10-지팡이 감소, 스트레스: 2감소
노래하다.
체력 10-지팡이 소모, 지력: 5감소, 스트레스: 5감소
마법 여행을 가다.
지팡이 1증가
- 운동 학생
운동 학생은 내부적으로 air가 있다.
air는 생성 시 0 이며 춤을 추면 1 증가
공부하다.
체력 2소모, 지력: scnt/2 증가,
air 3 감소, air*3만큼 스트레스 감소
강의를 받다.
체력 1소모, 지력: scnt/2 증가,
air :5 감소, air*3만큼 스트레스 감소
잠자다.
체력 10회복, 스트레스: 5감소
휴식하다.
체력 8회복, 스트레스: 25감소
음료 섭취
체력 5 회복, 지력: 3 감소, 스트레스: 2감소
노래하다.
체력 5소모, 지력: 2증가, 스트레스: 5감소
춤을 추다.
체력 5소모, 지력: 3증가, air 1증가