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