결합도 관점에서 본 vo 문제점
DESCRIPTION
2010 한국 자바 개발자 페스티벌 Track 3 Session 1 발표자료TRANSCRIPT
![Page 1: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/1.jpg)
결합도(coupling) 관점에서 생각한 Value Object 의 문제점과 해결방안
![Page 2: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/2.jpg)
강의목표
결합도의 정의와 의미
결합도의 종류
결합도를 낮추기 위한 노력
Value Object 정의
Value Object 문제점
Value Object 의 개선방향
![Page 3: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/3.jpg)
결합도(coupling)
한 모듈과 다른 모듈간의 상호의존도 또는 각 모듈 사이의 연관도의 관계
모듈간에 얼마나 강하게 연관되어 있는가를 측정하는 방법으로 모듈의 나쁜 특성
![Page 4: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/4.jpg)
결합도를 낮춰야 하는 이유
파급효과(Ripple Effect)를 최소화시킴
한 모듈을 변경할 때 다른 모듈도 변경해야 하는 부담을 최소화
모듈의 조립 중 그 모듈의 내부에 신경을 쓸 필요가 없음
![Page 5: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/5.jpg)
결합도의 종류
자료 결합도 (Data Coupling)
스탬프 결합도 (Stamp Coupling)
제어 결합도 (Control Coupling)
외부 결합도 (Extend Coupling)
공통 결합도 (Common Coupling)
내용 결합도 (Content Coupling)
![Page 6: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/6.jpg)
내용 결합도 (Content Coupling)
호출하여 사용하려는 모듈의 내용을 미리 알고 있지 않으면 사용할 수 없음
![Page 7: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/7.jpg)
공통결합 (Common Coupling)
모듈들이 동일한 자료영역을 공통으로 관리
모듈이 외부 환경과 연관되어 있을 경우 외부결합
![Page 8: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/8.jpg)
제어 결합도 (Control Coupling)
한 모듈이 다른 모듈의 내부논리를 제어
![Page 9: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/9.jpg)
스탬프 결합도 (Stamp Coupling)
구조체를 통한 모듈간 결합
![Page 10: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/10.jpg)
자료 결합도 (Data Coupling)
모듈간 매개변수로 결합
![Page 11: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/11.jpg)
자료결합성과 내용결합성의 비교
자료결합성 내용결합성
동시개발 경험중심 계획중심 폭포수/XP
장애처리 비용
점진적투입 집중투입
개발비용 증가
후반 초기 TDD
운영비용 예측불가 기능중심적 본/ FP
![Page 12: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/12.jpg)
결합도를 낮추기 위한 노력
MVC 동시개발 후 조립을 통한 완성
SOA(WOA) 인터넷망을 통한 서비스의 결합
Mashup 스템프결합도(CBD) 극복
디자인패턴 상속이 아닌 위임
클래스가 아닌 인터페이스를 통한 소통
![Page 13: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/13.jpg)
Value Object
비즈니스를 수행하는데 필요한 데이터의 집합, 이름, 타입, 다른 데이터간 관계를 표현하기 위한 기법
![Page 14: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/14.jpg)
Value Object
상속을 사용 VO 의 재사용
기존 VO에 영향을 주고 싶지 않을때
![Page 15: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/15.jpg)
Value Object
기능강화 VO 의 기능을 보강하
기위해 데이터영역과별개의 메소드 구현
setter 에 데이터 검증기능 추가
![Page 16: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/16.jpg)
Value Object
인터페이스 사용 call by refrence
문제점 극복
내용 결합을 극복하기 위한 선택
![Page 17: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/17.jpg)
결합도관점에서본 Value Object 문제점
Value Object 는 내용결합도임
getter, setter 를 알기 전까지는 VO 와 연관된 모듈을 구현, 사용할 수 없음
Value Object 의 문제점은 관련 모듈에 전파
Value Object 를 제거할 수 없음
![Page 18: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/18.jpg)
Value Object 문제점
Super VO 탄생 리펙토링의 부재
VO의 분리는 불가능함
지속적인 기능추가에 따른 관습적인 구현
설계단계에서는 VO의 존재가 미비함
소스코드:55.2kb
class : 68kb
멤버변수 수 : 400
메소드 수 : 811
servlet-api.jar : 96kb
![Page 19: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/19.jpg)
Value Object 문제점
블랙박스 실행시점에서
오류 발생
reflection
jsp
형변환
![Page 20: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/20.jpg)
Value Object 문제점
개발비용증가 데이터 타입 추가시
관련모듈의 수정이 필요함
결합도를 의도적으로 높힘
![Page 21: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/21.jpg)
Value Object 를 버리자
Java Beans 개념으로 VO 가 탄생되었다.
Property의 개념
getter, setter 탄생
자동화된 인터페이스 생성
인터페이스를 통한 결합
Java Beans 시장의 실패로 gettter, setter 만 남아있게 됨
![Page 22: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/22.jpg)
Value Object 의 대안
기본 Collection 사용 내용결합도의 회피
toString 재구현
key Class 사용
Collection 가공 데이터결합도의 확보
Box 구현
setter, getter 제어
![Page 23: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/23.jpg)
Value Object 의 대안
Value Object 를 사용해야 한다면 조직의 압력
덤터기
유지보수
String, int, BigDecimal 데이터검증은 독립적
인 모듈에서
구조체(배열)금지 call by reference
상속금지
인터페이스 활용 스탬프결합도 확보
![Page 24: 결합도 관점에서 본 VO 문제점](https://reader033.vdocuments.mx/reader033/viewer/2022052123/547930a8b37959a22b8b465d/html5/thumbnails/24.jpg)
결론