'10.03.28 story JAVA이야기2010. 4. 1. 15:03
UML
특징 주도 개발과 유스케이스 주도 개발이 어떻게 다른가
특징 주도 개발은 더 세분화된(granular)모양이다 |
유스케이스 주도 개발은 더 큰 그림의 모양이다 |
하나의 특징은 종종 매우 작다. 그리고 모든 애플리케이션은 많은 특징들을 가지고 있다. |
하나의 시나리오는 종종 많은 기능들을 포함하고 있기 때문에, 한 번에 꽤 큰 규모의 코드 작업을 할 것이다 |
서로 별로 연결되어 있지 않은 특징들이 많을 때 잘 동작합니다 |
독립적인 기능보다는 많은 프로세스와 시나리오를 가지고 있는 애플리케이션의 경우 잘 동작한다 |
고객에게 동작하는 코드를 빨리 보여줄 수 있다 |
고객에게 각 개발 단계마다, 더 큰 단위의 기능 조각을 보여줄 수 있다 |
매우 기능 주도적이다. 특징 주도 개발을 사용하면 어떠한 특징도 빠트리는 일이 없을 것이다 |
매우 사용자 중심이다. 유스케이스 주도개발을 사용하면 사용자가 시스템을 사용하는 여러 방법들을 모두 고려하여 코딩할 것이다 |
연결되어 있지 않은 기능의 조각들이 많은 시스템에서 특히 잘 동작한다 |
길고 복잡한 프로세스를 가진 트랜잭션 시스템에서 특히 잘 동작한다 |
좋은 소프트웨어는 반복작업을 통해 완성된다.
Application의 매우 작은 부분을 작업하면서, 분석과 설계를 하고, 다시 이를 되풀이한다
반복해서 작업할 때마다, 설계 결정들을 재평가하고, 여러분의 설계에 도움이 되면 무언가 변경하는 것을 두려워하지 말아라
테스트 케이스 해부
1. 각 테스트 케이스는 아이디와 이름을 가지고 있어야 한다.
2. 각 테스트 케이스는 그것이 테스트하는 특정한 것 하나를 테스트해야 한다.
- 각 테스트 케이스는 한 번에 한 가지 기능만을 테스트해야한다.
3. 각 테스트 케이스는 우리가 제공하는 입력 값을 가지고 있어야 한다.
- 대체로 특정한 기능이나 동작을 수행하는데 사용된다.
4. 각 테스트 케이스는 예상되는 출력 값을 가지고 있어야 한다.
5. 대부분의 테스트 케이스는 초기 상태를 가지고 있어야 한다.
- 테스트를 실행하기 전에, DB의 연결을 하거나, 어떤 객체를 생성하거나, 혹은 어떤 값을 설정할 필요가 있나? 만약 그렇다면 그것이 테스트 케이스의 초기 상태인 것이다.
당신이 약정에 의해 프로그램을 작성할 때, 당신과 당신의 프로그램 사용자는 소프트웨어가 어떤 방식으로 동작할 것이라는 것에 동의하고 있는 것이다.우리는 지금까지 약정(Contract)에 의해 프로그램을 작성
약정에 의한 프로그래밍이란 정말로 모두 믿음에 관한 것이다.
그리고 우리는 필요하다면 언제든지 약정을 변경할 수 있다.
우리가 약정에 의한 프록래밍을 할 때, 문제 상황을 어떻게 다룰이지 합의하기 위해 고객의 코드와 같이 작업하는 것이다.
여러분이 방어적 프로그래밍을 한다면, 고객이 어떠한 일이 발생되기를 원하건 간에, 고객이 안전한 응답을 얻도록 확인할 것이다.
약정에 의한 프로그래밍은 코드가 짧게 된다~
핵심정리
- 좋은 소프트웨어를 작성하는 첫 번째 단계는 여러분의 소프트웨어가 고객이 기대하고 원하는대로 동작하도록 하는 것이다
- 고객은 다이어그램이나 목록에는 관심이 없다. 단지 여러분의 소프트웨어가 실제 무엇인가 하는 것을 보고 싶어한다
- 유스케이스 주도 개발은 Application의 유스케이스에서 한 번에 하나의 시나리오에 집중한다
- 유스케이스 주도 개발에서, 한번에 하나의 시나리오에 집중한다. 그러나 대부분 하나의 유스케이스의 모든 시나리 오를 코딩 작업한 이후에 또 다른 유스케이스의 시나리오로 이동한다
- 한 번에 하나의 특징을 선택하는 한, 특징 주도 개발에서는 크거나 작은 특징 중에서 한 가지로 작업할 수 있다
- 소프트웨어 개발은 항상 반복 작업이다. 큰 그림을 살펴보고, 그 다음 작은 단위의 기능을 반복 작업한다
- 하나의 새로운 특징이나 유스케이스를 가지고 작업을 시작하는 것을 포함해서, 개발 주기의 모든 단계마다 분석과 설계를 해야 한다
- 테스트를 통해서 소프트웨어가 어떠한 버그도 가지고 있지 않다는 것을 확인하고, 고객에게 소프트웨어가 작동하 고 있다는 것을 입증할 수 있어야 한다
- 좋은 테스트 케이스는 오직 기능의 특정부분 하나만 테스트한다
- 테스트 케이스는 하나의 클래스에 하나 혹은 서너개의 메소드를 포함할 수 있고 또는 여러 개의 클래스를 포함할 수 있다
- 테스트 주도 개발은 테스트를 먼저 작성하고 이 테스트를 통과할 수 있도록 소프트웨어를 개발한다느느 생각에 기반하고 있다. 결과는 모든 기능을 갖춘 동작하는 소프트웨어이다
- 약정에 의한 프로그래밍은 트랜잭션의 양쪽 대상이 무슨 행동이 무슨 행위를 발생시키는지 알고 있다는 가정하에 약정을 지키는 것이다.
- 약정에 의한 프로그래밍 환경에서, 메소드는 대부분 오류가 발생할 때 null이나 점검이 필요 없는 예외 상황을 반환한다.
- 방어적 프로그래밍은 잘못될 것들을 찾아서, 문제 상황을 회피할 수 있도록 폭넓게 테스트한다
- 방어적 프로그래밍 환경에서, 메소드는 대부분 “빈” 객체나 혹은 점검이 필요한 예외 상황을 반환한다.
프로그래밍 기술
- 약정에 의한 프로그래밍은 여러분과 소프트웨어 사용자가 지키기로 합의한, 소프트웨어가 어떻게 동작해야 하는지에 관한 계약을 설정한다
- 방어적 프로그래밍은 다른 소프트웨어를 신뢰하지 않고, 다른 소프트웨어가 나쁜거나 안전하지 않은 정보를 제공하는지에 확인하기 위해, 광범위하게 오류와 데이터를 점검한다
개발 접근 방식
- 유스케이스 주도 개발은 시스템에서 하나의 유스케이스를 설정하여, 유스케이스의 모든 시나리오를 포함해서 그 전체를 구현하려고 코드 작업을 완성하는데 중점을 두고 있다. 그 다음에 애플리케이션의 다른 것으로 넘어간다
- 특징 주도 개발은 하나의 특징에 집중하여 그 특징의 행위 모두를 코드 작업한다. 그 다음에 애플리케이션의 다른 것으로 넘어간다
- 테스트 주도 개발은 한 가지 기능의 테스트 시나리오를 작성하고, 그 다음에 그 기능에 대한 코드를 작성한다
그리고 모든 테스트를 통과할 때까지 소프트웨어를 작성한다.
- 좋은 소프트웨어 개발 방법이란 대체로 개발 주기의 여러 단계에서 이러한 개발 모델 모두를 혼용한다.
'JAVA이야기' 카테고리의 다른 글
대여할 책 (0) | 2010.04.24 |
---|---|
'10.03.29 story (0) | 2010.04.01 |
'10.03.26 story (0) | 2010.04.01 |
'10.03.24 story (0) | 2010.04.01 |
'10.03.23 story (0) | 2010.04.01 |