2013년 2월 18일 월요일

헤드퍼스트 OOAD - 6강

이번 강은 큰 프로그램을 만들려면 어찌해야 하는지에 대한 강좌다.

일단 기본적인 것은 같다.

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

큰 프로그램을 만들려면 일단 기능별로 나누어서 각 조각들을 개별적으로 풀어가며 해결한다.

변하는 것을 캡슐화하여 프로그램을 더 유연하고 변경하기 쉽게 만단다.

구현에 맞추어 코딩하는 것보다 인터페이스에 맞추어 코딩하면 소프트웨어 확장이 더 쉽다

변경과 확장이 쉽고 고객이 원하는 일을 한다.
--------------------------------------------------------------------------------
큰 프로그램은 많은 정보가 필요하다.
고객과 많은 미팅을 통해 많은 정보를 얻어내야 한다.
그러기 위해선 특징을 먼저 찾아야 한다.

하지만 고객은 프로그래머가 아니다.
서로 소통을 하기 위해서는 유스케이스 다이어그램을 쓴다.

유스케이스 다이어그램은 특별히 다른 것이 아니다

프로그램을 잘 모르는 사람들에게 프로그램을 설명하기 위한 그림이다.

그림으로 설명하는 것이 글씨로 설명하는 것보다 가독성도 좋고 빠르게 이해되기 때문이다.

그림으로 설명 뒤에는 도메인 분석을 해서 고객이 실제로 이해를 했는지 설명하는 것이다.

이쯤에서 도메인 분석이란?
기존 시스템과 개발 이력, 도메인 전문가들로부터 얻은 지식, 기반 이론, 그리고 도메인에서 새로 등장하는 기술을 기반으로 도메인 관련 정보를 찾아내고, 모으고, 구조화하고, 나타내는 프로세스

라고 한다 ㅡㅡ (뭔 소리여 이게)

고객들은 객체가 어쩌구 클래스가 어쩌구는 뭔소린지 모른다.
그리고 큰 프로그램은 너무 크기에 기능별로 나누어서 설명하는 것이다.

예를 들면 스타크래프트3를 만든다고 하면

유닛, 종족, 기능, 배경, 스토리, 컨트롤, UI 등등으로 나누어서 설명을 한다는 것이다.

스타크래프트3라는 게임이 있고 그 안에 각 특성이 있는 것을 나누어 설명하는 것이다.

이렇게 나누는 것은 프로그래밍을 모르는 디자이너나 영업사원들에게도 설명할 때 유용하다.

MVC 패턴은 유명한 패턴이다.

모델 뷰 컨트롤러를 나누어 구현하는 것인데.

스타크래프트3로 설명하자면.....(아직 나오지도 않은걸??)

뷰는 종족, 배경을 그래픽으로 보여주는 부분이고

모델은 각 유닛의 기능들(마린이 총쏘고, 뮤탈이 변신하는 등등)

컨트롤러는 게임 전체를 제어하고(200개의 유닛이상 못만들게 한다던가, 지도 밖을 못나간게 한다던지....)

해서 각자 자신의 일만 하면 되는 분업이라고 할 수 있겠다.

각자 다른 분야에서 협업하려면 공통된 자료가 있어야 하는데 그것이 바로 아까 말한 도메인 분석이다.


이번 강은 이게 다다 ㅡㅡ;;;(때리지마)

이게 뭐야!!! (미안 ㅌㅌㅌㅌ)

댓글 없음:

댓글 쓰기