변화의 주창자

1000피트 뷰를 이해하라 (Get the 1,000-Foot View) 본문

교육,공부/SW Architecture

1000피트 뷰를 이해하라 (Get the 1,000-Foot View)

allsolution allsolution 2009.07.07 21:41

사용자 삽입 이미지
아키텍트로서 우리가 알기 원하는 것은 ‘우리가 개발하고 있는 software가 얼마나 좋은가’이다. 소프트웨어는 사용자에게 유용해야 한다는 명백한 외부적 관점이 있지만 그보다 더 어려운 품질이라는 내부적 관점도 있다. 품질은 쉽게 소프트웨어를 이해하고, 유지보수하고 확장할 수 있는 설계의 명확도를 요구한다. 우리가 명확히 정의 내려야 할 압박이 올 시점에 보통 “나 그거 보면 알아!” 라고 말 할 수 있어야 한다. 하지만 어떻게 품질에 대해 볼 수 있겠는가?


아키텍처다이어그램에서 작은 상자들은 전체 시스템을 나타내고 그 사이의 선은 시스템간의 의존성, 데이터흐름, 버스와 같은 공유자원 등 모든 것이 될 수 있다. 이 다이어그램들은 마치 비행기에서 보는 풍경과 같은 30,000피트 뷰이다. 전형적으로 유일하게 사용 가능한 다른 뷰는 바닥레벨 뷰와 비교되는 소스코드이다. 한뷰는 매우 높은 레벨이고 다른뷰는 구조를 보지 못할 정도로 너무 많은 정보를 제공하기 때문에, 두 뷰는 소프트웨어 품질에 대한 많은 정보를 제공하지 못한다. 이 둘 사이에 빠진 뷰는 1000피트 뷰이다.


이 1000피트 뷰는 적당한 수준의 정보를 제공할 것이다. 이는 많은 양의 데이터와 메소드갯수, 클래스 팬아웃, 순환복잡도와 같은 다중 metrics 를 모은다.
현실적인 뷰는 품질의 특정한 측면에 매우 의존한다. 이는 다양한 입력 값에 상응하는 의존성그래프나 클래스레벨의 metrics를 나타내는 막대그래프나 정교한  polymetric  뷰의 시각적 표현이 될 수 있다.


손으로 이러한 뷰를 그리고 이를 소프트웨어와 지속적으로 동기화 하는 것은 절망적인 시도이다. 우리는 유일한 원천인 소스코드로부터 뷰를 만드는 툴이 필요하다. 상업적인 툴로 몇몇 뷰가 있다. (예: design structure matrix ) 하지만 놀랍게도 일반적인 시각화 패키지로 (정확한 데이터와 metrics 같은) 작은 도구들을 결합해서 전문화된 뷰를 쉽게 생성 가능하다. 간단한 예를 들자면 차트를 그리기 위해 본질적으로 클래스와 메소드레벨의 matrics세트인 checkstyle에서 스프레드시트로 출력물을 로드하는 것이 될 수 있다. 같은 metrics 로 InfoViz 툴킷을 이용하여 트리맵으로 보여 줄 수있다. 복잡한 의존성 그래프를 그리는 훌륭한 도구로는 GraphViz가 있다.

적당한 뷰가 가능해 짐으로 소프트웨어 품질은 덜 주관적이 된다. 이로서 소수의 비슷한 시스템으로 개발단에서 소프트웨어를 비교할 수 있다. 같은 시스템에서 다른 개정판 비교는 트렌드의 징후를 보이는 한편 다른 서브시스템의 비교뷰는 outliers (서로 다른값)를 강조할 수 있다. 단지 하나의 다이어그램으로도 우리는 패턴을 발견하고 아름다움을 알아차릴 수 있다. 균형이 잘 잡힌 트리는 성공적인 클래스계층화를 보여줄 것이다. 그리고 조화로운 상자(다이어그램에서)의 집합은 적당한 크기로 정리된 코드를 보여줄 것이다.
대부분의 경험에서 매우 단순한 관계로 성립된다. 좋아 보인다면 분명 잘 설계 되었을 것이다.

Written by Erik Doernenburg
Erik Doernenburg는 ThoughtWorks, Inc.의 기술고문으로 대규모 기업 솔루션의 설계와 구현부분의 고객지원을 하고있다.
0 Comments
댓글쓰기 폼