공부/객체지향2011. 7. 3. 15:38


반복작업을 통해 소프트웨어를 만든다.
큰 그림에서부터 거기서 나눠진 조각들에 대해 반복적으로 작업한다.

특징주도개발(Feature driven development)
고객이 원하는 기능의 한 조각을 선택하고 그것이 완성될 때까지 작업하는 것

유스케이스 주도 개발(Use case driven development)
하나의 완전한 경로를 시작에서 끝까지 코드로 구현.

두가지 방법 모두 고객이 원하는 것을 개발하는 데 초점을 맞추고 있다.

특징 주도 개발
하나의 특징을 결정했다면, 다시 그 특징에대한 분석을 한다.
반복적인 분석. 트리처럼 깊히 분석할수록 세부적인 기능들이 나오는 것을 상상.

고객을 만족시키기 위해 테스트 시나리오를 만든다.
모든 가능한 사용 방법으로 테스트한다.
잘못된 사용 방법에 대해서도 테스트 한다. 이는 초기에 오류를 잡도록 해줄 것이다.

테스트 주도 개발
테스트를 먼저 작성하고 이 테스트를 통과할 수 있도록 소프트웨어를 개발한다.

실제 대부분의 소프트웨어 분석 설계는 다양한 접근 방식을 혼용하여 사용한다. 예) 유스케이스 주도 개발로 시작하여 다음 작업은 유스케이스에서 작은 특징 하나를 선택(특징 주도 개발)해서 개발. 이 특징을 어떻게 구현할지 확인하기 위해 테스트 주도 개발 사용.

각 테스트는 기능의 한 부분에 초점을 맞춘다.

설계방식을 결정할 때( 예) 공통점과 캡슐화 중에서 하나 선택해야 할 때.) 어느 방법이든 항상 트레이드오프(trade off)가 있다. 장점이 있지만 단점도 있는.

반복해서 작업할 때마다 기존의 설계방식을 재평가하고 더 나은 방향으로 변경하는 것을 두려워하지 마라.

약정에 의한 프로그래밍(contract), 방어적 프로그래밍(defensive)
약정에 의한 프로그래밍을 할 때, 문제 상황을 어떻게 다룰 지 합의하기 위해 고객의 코드와 같이 작업하는 것.
방어적 프로그래밍을 한다면, 고객이 어떠한 일이 발생되기를 원하건 간에, 고객이 안전한 응답을 얻도록 확인할 것.
 

'공부 > 객체지향' 카테고리의 다른 글

10장 종합하기  (0) 2011.07.07
8장 디자인 원리들  (0) 2011.07.02
7장 아키텍쳐 (architecture)  (0) 2011.06.30
6장 큰문제 해결하기  (0) 2011.06.29
5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28


Posted by skyjumps