전체 글

개발 이야기 모음집
기능 명세설계는 기능 명세로부터 시작한다.스토리보드를 포함한 다양한 형태의 요구사항 문서를 이용해서 기능 명세를 구체화 한다.구체화 하는 동안 입력과 결과를 도출하고 이렇게 도출한 기능 명세를 코드에 반영한다. 설계과정을 지원하는 TDD테스트 코드를 작성하는 와중에 필요한것들을 작성하다보면 TDD 자체가 설계는 아니지만 이 과정에서 일부 설계를 진행하게 된다. 필요한 만큼 설계하기 테스트를 통과할 만큼만 코드를작성한다.이는 설계에도 동일하게 적용된다.TDD는 미리 앞서서 코드를 만들지 않으므로 불필요한 구성 요소를 덜 만들게 된다. 기능 명세 구체화테스트 코드를 작성하기 위해 개발자는 기능 명세를 정리해야 한다.
테스트 코드 작성 순서1. 쉬운 경우에서 어려운 경우로 진행2. 예외적인 경우에서 정상인 경우로 진행 초반에 복잡한 테스트부터 시작하면 안 되는 이유테스트를 통과시키기 위해 한 번에 구현해야 할 코드가 많아진다. 구현하기 쉬운 테스트부터 시작하기가장 구현하기 쉬운 경우부터시작하면 빠르게 테스트를 통과시킬 수 있다.한 번에 구현하는 시간이 짧아지면 디버깅할 때 유리하다 예외 사항을 먼저 테스트해야 하는 이유초반에 예외 상황을  테스트하게 되면 코드 완성이후에 예외상황을 반영할때 코드 구조가 덜 바뀔수 있다. 완급 조절처음 TDD를 접할때1. 정해진 값을 리턴2. 값 비교를 이용해서 정해진 값을 리턴3. 다양한 테스트를 추가하면서 구현을 일반화순서로 하는것이 좋다. 지속적인 리팩토링테스트를 통과한 뒤에는 리..
TDD 이전의 개발설계 -> 개발 -> 테스트 -> 디버깅과정으로 이루어져 한번에 작성한 코드가 많을 수록 디버깅 시간이 길어졌다. TDD란?1. 말그대로 테스트를 먼저 하는것.2. 테스트를 먼저한다는 것이란, 기능이 올바르게 동작하는지 검증하는 테스트 코드를 작성한다는것을 의미3. 가장 근본부터 테스트 후 작성해나가면서 점진적으로 기능을 완성해야한다.4. 첫번째 테스트는 모든 규칙을 충족하거나 충족하지 않는경우가 있는데 모든 규칙을 충족하지 않는 경우는 사실상 구현을 다 하고 테스트 하는 방식과 다르지 않기 때문에모든 규칙을 충족하는경우로 하는것이 좋다.5. 테스트 -> 코딩 -> 리팩토링의 무한반복으로 점진적으로 기능을 완성해 나가는 것이 TDD의 흐름
애그리거트1. 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들기 위해 상위수준에서 모델을 조망할 수 있는 방법2. 모델을 이해하는데 도움을 줄 뿐 아니라 일관성을 관리하는 기준도 된다.3. 경계를 가진다. 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않는다.4. 흔히 A가 B를 갖는다 라는 요구사항 이 있다면 이를 묶어서 한 애그리거트로 생각하기 쉽지만 이것이 반드시 한 애그리거트에 속한다는것을 의미하는것은 아니다.( ex : 상품과 리뷰같은것, 상품이 리뷰를 가지는것 처럼 보이지만  함께 생성되는것은 아니고 변경 주체또한 다름)  애그리거트 루트1. 애그리거트에 속한 모든객체가 일관된 상태를 유지하기위해 애그리거트 전체를 관리하는 주체2. 애그리거트의 일관성이 깨지지 않도록 지킨다.3. 한..
네 개의 영역1. 표현, 응용, 도메인, 인프라스트러처 라는 전형적인 네가지 영역을 가지고 있다.표현사용자의 요청을 해석하여 응용서비스에 전달하고 응용서비스의 실행결과를 사용자가 이해할 수 있는 형식으로 변환하여 응답응용도메인 모델을 이용해서 사용자에게 제공할 기능을 구현한다. 실제 도메인 로직 구현은 도메인 모델에 위임한다.도메인도메인 모델을 구현한다. 도메인의 핵심 로직을 구현인프라스트럭처구현 기술에 대한것을 다룬다. RDBMS 연동을 처리, 등등 논리적인 개념을 표현하기보다 실제 구현을 다룬다.2. 도메인 영역, 응용 영역, 표현 영역은 구현 기술을 사용하는 코드를 직접 만들지 않는다. 대신 인프라스트럭처 영역에서 지공하는 기능을 사용해서 필요한 기능을 개발한다.  계층 구조 아키텍처1. 상위 계층..
도메인이란?1. 소프트웨어로 해결하고자 하는 문제 영역2. 도메인이란 여러 하위 도메인으로 이루어져 있다3. 소프트웨어가 도메인의 모든 기능을 제공하진 않는다마치 결제를 할때 결제 시스템을 만드는것이 아닌 외부 결제모듈을 연동하는것처럼 말이다. 도메인 전문가와 개발자 간 지식 공유1. 코딩에 앞서 요구사항을 올바르게 이해2. 전문가와 직접 대화3. 이해관계자와 개발자도 도메인 지식을 갖춰야 하는것이 중요 도메인 모델1. 도메인 모델은 특정 도메인을 개념적으로 표현한 것2. 도메인 모델을 표현할 때 클래스 다이어그램이나 상태 다이어그램과 같은 UML 표기법만 사용해야 하는 것은 아니다.3. 상황에 맞게 도메인을 이해하는 데 도움이 된다면 표현 방식은 중요하지 않다.4. 도메인 모델은 기본적으로 도메인 자체..
Nanseo
금요일개발