결합도 관점에서 본 VO 문제점

24
결합도(coupling) 관점에서 생각한 Value Object 의 문제점과 해결방안

description

2010 한국 자바 개발자 페스티벌 Track 3 Session 1 발표자료

Transcript of 결합도 관점에서 본 VO 문제점

Page 1: 결합도 관점에서 본 VO 문제점

결합도(coupling) 관점에서 생각한 Value Object 의 문제점과 해결방안

Page 2: 결합도 관점에서 본 VO 문제점

강의목표

결합도의 정의와 의미

결합도의 종류

결합도를 낮추기 위한 노력

Value Object 정의

Value Object 문제점

Value Object 의 개선방향

Page 3: 결합도 관점에서 본 VO 문제점

결합도(coupling)

한 모듈과 다른 모듈간의 상호의존도 또는 각 모듈 사이의 연관도의 관계

모듈간에 얼마나 강하게 연관되어 있는가를 측정하는 방법으로 모듈의 나쁜 특성

Page 4: 결합도 관점에서 본 VO 문제점

결합도를 낮춰야 하는 이유

파급효과(Ripple Effect)를 최소화시킴

한 모듈을 변경할 때 다른 모듈도 변경해야 하는 부담을 최소화

모듈의 조립 중 그 모듈의 내부에 신경을 쓸 필요가 없음

Page 5: 결합도 관점에서 본 VO 문제점

결합도의 종류

자료 결합도 (Data Coupling)

스탬프 결합도 (Stamp Coupling)

제어 결합도 (Control Coupling)

외부 결합도 (Extend Coupling)

공통 결합도 (Common Coupling)

내용 결합도 (Content Coupling)

Page 6: 결합도 관점에서 본 VO 문제점

내용 결합도 (Content Coupling)

호출하여 사용하려는 모듈의 내용을 미리 알고 있지 않으면 사용할 수 없음

Page 7: 결합도 관점에서 본 VO 문제점

공통결합 (Common Coupling)

모듈들이 동일한 자료영역을 공통으로 관리

모듈이 외부 환경과 연관되어 있을 경우 외부결합

Page 8: 결합도 관점에서 본 VO 문제점

제어 결합도 (Control Coupling)

한 모듈이 다른 모듈의 내부논리를 제어

Page 9: 결합도 관점에서 본 VO 문제점

스탬프 결합도 (Stamp Coupling)

구조체를 통한 모듈간 결합

Page 10: 결합도 관점에서 본 VO 문제점

자료 결합도 (Data Coupling)

모듈간 매개변수로 결합

Page 11: 결합도 관점에서 본 VO 문제점

자료결합성과 내용결합성의 비교

자료결합성 내용결합성

동시개발 경험중심 계획중심 폭포수/XP

장애처리 비용

점진적투입 집중투입

개발비용 증가

후반 초기 TDD

운영비용 예측불가 기능중심적 본/ FP

Page 12: 결합도 관점에서 본 VO 문제점

결합도를 낮추기 위한 노력

MVC 동시개발 후 조립을 통한 완성

SOA(WOA) 인터넷망을 통한 서비스의 결합

Mashup 스템프결합도(CBD) 극복

디자인패턴 상속이 아닌 위임

클래스가 아닌 인터페이스를 통한 소통

Page 13: 결합도 관점에서 본 VO 문제점

Value Object

비즈니스를 수행하는데 필요한 데이터의 집합, 이름, 타입, 다른 데이터간 관계를 표현하기 위한 기법

Page 14: 결합도 관점에서 본 VO 문제점

Value Object

상속을 사용 VO 의 재사용

기존 VO에 영향을 주고 싶지 않을때

Page 15: 결합도 관점에서 본 VO 문제점

Value Object

기능강화 VO 의 기능을 보강하

기위해 데이터영역과별개의 메소드 구현

setter 에 데이터 검증기능 추가

Page 16: 결합도 관점에서 본 VO 문제점

Value Object

인터페이스 사용 call by refrence

문제점 극복

내용 결합을 극복하기 위한 선택

Page 17: 결합도 관점에서 본 VO 문제점

결합도관점에서본 Value Object 문제점

Value Object 는 내용결합도임

getter, setter 를 알기 전까지는 VO 와 연관된 모듈을 구현, 사용할 수 없음

Value Object 의 문제점은 관련 모듈에 전파

Value Object 를 제거할 수 없음

Page 18: 결합도 관점에서 본 VO 문제점

Value Object 문제점

Super VO 탄생 리펙토링의 부재

VO의 분리는 불가능함

지속적인 기능추가에 따른 관습적인 구현

설계단계에서는 VO의 존재가 미비함

소스코드:55.2kb

class : 68kb

멤버변수 수 : 400

메소드 수 : 811

servlet-api.jar : 96kb

Page 19: 결합도 관점에서 본 VO 문제점

Value Object 문제점

블랙박스 실행시점에서

오류 발생

reflection

jsp

형변환

Page 20: 결합도 관점에서 본 VO 문제점

Value Object 문제점

개발비용증가 데이터 타입 추가시

관련모듈의 수정이 필요함

결합도를 의도적으로 높힘

Page 21: 결합도 관점에서 본 VO 문제점

Value Object 를 버리자

Java Beans 개념으로 VO 가 탄생되었다.

Property의 개념

getter, setter 탄생

자동화된 인터페이스 생성

인터페이스를 통한 결합

Java Beans 시장의 실패로 gettter, setter 만 남아있게 됨

Page 22: 결합도 관점에서 본 VO 문제점

Value Object 의 대안

기본 Collection 사용 내용결합도의 회피

toString 재구현

key Class 사용

Collection 가공 데이터결합도의 확보

Box 구현

setter, getter 제어

Page 23: 결합도 관점에서 본 VO 문제점

Value Object 의 대안

Value Object 를 사용해야 한다면 조직의 압력

덤터기

유지보수

String, int, BigDecimal 데이터검증은 독립적

인 모듈에서

구조체(배열)금지 call by reference

상속금지

인터페이스 활용 스탬프결합도 확보

Page 24: 결합도 관점에서 본 VO 문제점

결론