Design by Contract의 문제점

Posted 2006. 10. 20. 16:04
현재 DbC 도구나 언어는 계약 관계를 표현하는 방법이 쉽지만은 않다. 간단한 예제들은 이진 표현(예를 들어 a >= 0.0)으로 간단하게 필요한 조건을 표현할 수 있었지만, 실제 프로젝트를 적용해 보려고 하면 생각보다 다양한 상황을 표현할 수 있는 방법이 필요함을 알 수 있다. 예를 들어 배열로 넘어온 인자에서 모든 값이 0보다 커야 한다던지 하는 경우 지금의 DbC 도구들로 표현하기가 어려운 면이 있다.

사실 계약에 사용되는 언어는 또 다른 프로그래밍 언어인 셈이다. Contract4J의 경우도 @Pre, @Post, @Invar 등에 사용되는 언어는 자바와 유사하지만 자바와는 또 다른 계약을 표기하기 위한 언어이다. $return이나 $old 같이 특수한 값을 지정할 수도 있어야하고, 계약 언어 특유의 요구 사항에 따라 자바 언어와는 다른 여러 가지 기능을 지원할 수도 있어야할 것이다.

이런 계약 언어가 아직까지는 초기 단계이기 때문에 표현력이 많이 떨어지는 편이다. 현재 UML의 OCL(Object Constraint Language)를 계약 언어로 사용하기 위한 노력들이 있는데, 관련 도구들이 발전한다면 앞으로의 상황은 점점 나아질 것이다. 하지만 금으로서는 DbC 언어의 한계가 사용에 걸림돌이 되는 것만은 사실이다.
  1. Favicon of http://yagur.impon.net BlogIcon yagur

    | 2008.02.22 17:14 신고 | PERMALINK | EDIT | REPLY |

    거의 2년전 글이군요. =)
    저의 경우엔 C++이라 아예 AOP의 사용이 불가능합니다. 프록시와 원리가 같은듯하여 프록시로 관심사를 분리해 쓰고있습니다. DBC역시 ensure,require 계약들을 프록시 안에 담아 쓰고있습니다. 복잡한 계약의 경우 프록시를 활용하여 관심사의 분리를 활용하는것은 어떨까요.(아마 이미 이렇게 하고 계실지도)
    [Log] @Log와 같은 횡단 관심사 키워드를 객체의 메쏘드에 붙이는것이 획기적이지만 따로 분리해내고 싶은 맘에 프록시를 쓰고있습니다.
    상황에 따라 횡단 관심사의 첨삭이 있는경우엔 횡단 관심을 받아야할 객체보단 프록시에서 그것을 관리해 관심사를 완전 분리해내고자 함입니다.

Write your message and submit
« PREV : 1 : ··· : 189 : 190 : 191 : 192 : 193 : 194 : 195 : 196 : 197 : ··· : 244 : NEXT »