2013년 2월 25일 월요일

헤드퍼스트 OOAD - 10강 - 종합하기

드디어 마지막 강 10강이다. (씹강이다 -_-)

이번 강은 처음부터 끝까지 프로그램을 만드는 과정이 담긴 종합하는 강이다

OOAD 프로젝트의 생명주기를 살펴보자.

특징리스트 -> 유스케이스 다이어그램 -> 문제점 분해하기

-> 요구사항 -> 도메인분석 -> 사전 설계 -> 구현 -> 완성

빨강 부분은 반복적으로 하는 부분이다.

위대한 프로그램을 만들기 위해선 3단계를 거쳐야 했다

3단계를 복습하자면.

1. 여러분의 소프트웨어가 고객이 원하는 기능을 하도록 만드는 것
2. 객체지향의 기본 원리를 적용해서 소프트웨어를 유연하게 하는 것
3. 유지보수와 재사용이 쉬운 디자인을 위해 노력하는 것

당신이 만약 지하철 노선도를 만드는 프로젝트를 맡았다고 해보자.
위의 생명주기를 토대로 시작해보자.

1. 특징 리스트 작성


  • 지하철 노선과 노선의 역들을 표시
  • 겹쳐진 노선을 포함하여 다수의 지하철 노선을 저장할 수 있어야 함
  • 모든 노선에서는 임의의 두 역 사이의 유요한 경로를 찾을 수 있어야 함
  • 일련의 방향 표시로, 두 역 사이의 경로를 출력할 수 있어야 함

2. 유스케이스 다이어그램 작성



관리자 - 지하철 노선과 노선들의 역을 표시, 겹쳐진 노선을 포함하여 다수의 지하철 노선을 저장

사용자 - 두 역 사이의 유요한 경로를 찾기, 두 역 사이에 있는 특정 경로의 방향 표시 출력

유스케이스는 사용법을 반영하고, 특징은 기능을 반영한다.


3. 문제점 분해하기


별개의 기능 조각을 분리하는 것이다. 먼저 크게 분리해보자.

지하철, 리더, 프린터, 테스트

로 분리해봤다.
문제점을 분해 하다 보니 이해가 안가는 부분이 있다.
지하철 시스템이 뭐지??
지하철 역과 노선을 저장할 때 관리자가 갖고 있어야할 정보가 뭐지?

요구 사항을 하기 전에 문제를 이해하는 단계가 있어야 한다.
지하철 노선 적재하기에 대한 유스케이스를 작성해 보자.
---------------------------------------------------------------------------------
지하철 노선 적재하기 (유스케이스)

  1. 관리자가 역과 노선이 담긴 파일을 공급한다.
  2. 시스템은 역의 이름을 읽는다.
  3. 시스템은 역이 이미 존재하지 않는지 검증한다.
  4. 시스템은 지하철에 새로운 역을 추가한다
  5. 시스템은 모든 역이 추가될 때까지 단계 2~4를 반복한다
  6. 시스템은 추가할 노선의 이름을 읽는다
  7. 시스템은 연결되어 있는 두 역을 읽는다.
  8. 시스템은 역들이 존재하는지 검증한다
  9. 시스템은 현재 노선의 두 역 사이에, 양방향으로 진행 가능한 새로운 연결을 생성한다
  10. 시스템은 노선이 완성될 때까지 단계 7~9를 반복한다.
  11. 시스템은 모든 노선이 입력될 때까지 단게 6~10을 반복한다.
---------------------------------------------------------------------------------

4. 도메인 분석 


위의 유스케이스를 기반으로 분석을 하는 것이다. 먼저 명사와 동사를 나누어 적어보자.

명사(클래스 후보) - 관리자, , 파일, 시스템, 노선, 연결, 지하철

동사(오퍼레이션 후보) - 파일 제공한다, 역을 검증한다, 반복한다, 읽는다, 역을 추가한다, 연결을 추가한다.

5. 사전 설계


주황색으로 표시한 부분을 기반으로 클래스 다이어그램을 작성했다.


6. 구현하기

관리자 부분을 먼저 구현하고 테스트해보고 잘 구동되면
사용자 부분을 구현하고 테스트 해보면서 반복하는 것이다.

이 프로그램은 역의 추가, 삭제, 수정/노선의 추가, 삭제, 수정 이 용의해야하며
관리자 모드와 사용자 모드를 철저히 분리해야한다.

지금 위의 클래스 다이어그램에는 없는 출력 부분도 추가해줘야한다.
해당 소스 코드는 여기에서 다운 받길 바란다.

모든 것을 하나하나 구현할 필요는 없다. 공개 소스가 있다면 재사용하는 것도 프로그래머의  실력인 것이다. 

구현하면서 누구나 코드를 알아볼수 있게 주석과 이름을 잘 짓는 것이 중요하다.
유지보수가 쉽게 만드는 것도 프로그래머의 자질이다.

이로써 기나긴 OOAD에 대한 강좌(누가 본다고?!! ㅠㅠ)가 끝났다.
3월10일에 자격증 시험이 있어서 당분간 연재를 쉬고자 한다.
다음 강좌는 델파이, 자바, 자료구조, tcp/ip, 아이폰 개발 중 하나를 하겠다.
말이 강좌지 내가 공부하면서 까먹을까봐 다시 복습 차원에서 정리해서 올리는 거다 ㅡ.ㅡ;
그럼 그때까지 모두 수고염~~ >.<

댓글 없음:

댓글 쓰기