본문 바로가기

기타 소프트웨어/Lattix

Lattix DSM 설명


Lattix 기술

DSM 무엇인가?
DSM 은 Dependency Structure Matrix 혹은 Design Structure Matrix 를 뜻하며 시스템을 표현하는 방법입니다 . DSM 표현은 30 년 이상 전에 발명되었으며 , 이후 MIT, Harvard, University of Illinois 를 비롯한 여러 곳의 연구팀들이 복잡한 시스템의 분석에 DSM 을 실제적으로 적용하는 연구를 하면서 사용법이 발전해 왔습니다 . Lattix 는 DSM 을 소프트웨어 아키텍처에 적용한 첫 번째 회사입니다 . 소프트웨어 아키텍처를 표현하는 프로세스는 일반적으로 서브시스템 간의 의존에 생성된 간단한 매트릭스의 변환으로 구성되어 있습니다 .


초기 DSM

아래 그림은 모듈 A, B, C, D 의 4 개의 서브시스템으로 나누어진 시스템의 DSM 을 보여주고 있습니다 .

 

(Figure 1: 간단한 DSM)

매트릭스의 X 축과 Y 축은 순차적으로 번호가 주어진 동일한 서브시스템들을 나타내고 있습니다 . 각 서브시스템의 의존성은 각 열을 통해 알 수 있습니다 . 매트릭스의 1 열을 통해 모듈 A 는 모듈 C 에 ‘7' 의 의존성 세기 (dependency strength of ‘7') 로 의존적이라는 것을 알 수 있습니다 . 또한 1 열의 모듈 B 와 모듈 D 에 대한 셀이 비어있기에 모듈 A 는 모듈 B 와 D 에 대해서는 의존적이지 않다는 것을 알 수 있습니다 . 대각선 (identity diagonal) 의 셀은 하나의 모듈 자신에 대한 의존성을 나타냅니다 . 대각선의 칸들은 ‘.' 기호를 포함하도록 합니다 . 위 그림의 DSM 에서 가리키는 의존성은 다음과 같습니다.

•  모듈 A 는 모듈 C 에 의존적입니다 .
•  모듈 B 는 다른 모듈들에 대해 의존적이지 않습니다 .
•  모듈 C 는 모듈 A 와 B 에 의존적입니다 .
•  모듈 D 는 모듈 A 와 C 에 의존적입니다 .

  

DSM 의 재배열
이제 우리는 파티셔닝이라는 프로세스를 통해 DSM 의 서브시스템들을 재배열할 것입니다 . 이는 수동으로 혹은 파티셔닝 알고리즘에 의해 수행될 수 있습니다 . 파티셔닝은 항상 블록 삼각 매트릭스 (Block triangular matrix) 를 만듭니다 . DSM 파티셔닝 알고리즘의 전체적인 목표는 배열 중 함께 상호의존성을 갖는 시스템을 그룹화하는 동안 다른 서브시스템의 대부분을 사용하는 서브시스템으로 시작해서 다른 서브시스템의 대부분을 제공하는 서브시스템으로 끝나도록 하나의 시스템을 배열하는 것입니다 .

파티셔닝 알고리즘은 매트릭스를 형성하는 하나의 “ 블록 삼각 (block triangular)” 을 만듭니다 . 하나의 “ 블록 삼각 (block triangular)” 에서 대각선 (identity diagonal) 블록 밖 상단의 모든 셀들은 비어있습니다 . 나아가 대각선 (identity diagonal) 상단의 의존성을 포함하는 이러한 블록들은 순환적인 의존성을 갖도록 보장됩니다 .

 

(Figure 2: 파티션화된 DSM)

위 그림에서의 파티셔닝은 세 개의 블록을 제공합니다 . 모듈 A 와 C 가 서로 결합되었기에 이들은 하나의 블록으로 그룹화됩니다 . 파티셔닝은 대개의 매체에서 일반적인 레이어링 (layering) 을 통해 대규모의 소프트웨어 시스템이 확장되는 것을 돕습니다 .

 

DSM 에서의 계층의 표현
모듈 A 와 C 를 모듈 A 와 모듈 C 를 포함하는 복합적인 모듈 A-C 로 결합할 수 있습니다 .

(Figure 3: 계층적인 DSM)

계층의 표현에 대한 Lattix 의 혁신적인 DSM 의 사용은 대규모의 아키텍처를 나타내고 관리하는데 핵심적인 것입니다 . 우리가 “ 모듈 ” 이라 부르는 것은 간단히 하나의 추상입니다 ? 이것은 하나의 클래스를 표현하는 작은 추상이나 수천 개의 클래스를 포함하는 전체 서브시스템을 나타내는 대규모의 추상이 될 수 있습니다 .

 

DSM 의 탑 레벨 뷰
아래의 그림에서 볼 수 있듯이 모듈 A-C 를 통합하여 모듈 A 와 모듈 C 는 사라지게 됩니다 .

(Figure 4: DSM 의 탑 레벨 뷰)

모듈 D 가 모듈 A-C 에 대해 갖고 있는 의존성은 모듈 D 가 모듈 A 에 대해 갖고 있는 의존성과 모듈 C 에 대해 갖고 있는 의존성의 집합 (aggregation) 입니다 . 집합 (aggregation) 에 대한 다른 접근이 역시 Lattix LDM 에서 형상화될 수 있으며 , 기본적으로 이 집합은 간단한 합계입니다 .

요약 : 일련의 간단한 매트릭스 변환을 수행해 보았습니다 . 이러한 변환은 서브시스템간의 의존성에 의해 유도됩니다 . 여기서 모듈 A, 모듈 B, 모듈 C, 모듈 D 로 구성된 시스템으로 시작하였고 순차적인 변환을 통해 모듈 D, 모듈 A-C, 모듈 B 의 세 개의 모듈로 구성된 시스템으로 종료하였습니다 . 모듈 A-C 는 모듈 A 와 모듈 C 의 차례로 구성되었습니다 . 모듈 A-C 는 모듈 B 의 상단에 레이어화 되고 모듈 D 는 모듈 A-C 의 위에 차례로 레이어화 됩니다 .

여러분은 또한 DSM 의 역사와 DSM 이 어떻게 시스템 엔지니어링에서 사용되어 왔는지에 대해 여기서 ( http://www.dsmweb.org/ ) 읽을 수 있습니다 .

 

설계 규칙(Design Rules): 아키텍처를 매핑하는 핵심
DSM 표현은 소프트웨어 시스템의 아키텍처에 대한 청사진입니다 . DSM 의 각 셀은 디자인 의도를 나타냅니다 . 설계 규칙 (Design rules) 은 의존을 허용하는 것과 허용하지 않는 것을 명세하는 간단한 방법입니다 .

기존의 서브시스템의 맵의 컨텍스트 (context of a map), 이들간의 분해 (decomposition), 서브시스템간의 의존성과 함께 이 프레임워크는 형식 설계 규칙 (formal design rules) 의 집합을 통해 아키텍트의 의도를 코드화 하도록 준비되었습니다 . 일반적으로 하나의 설계 규칙 (design rule) 은 서브시스템에 적용되고 서브시스템 자신의 내부에 포함된 모든 서브시스템에 의해 상속됩니다 . 이것은 DSM 의 하나의 셀에서 클릭하는 것으로 간단히 적용될 수 있는 규칙 (a widely pervasive rule) 을 허용합니다 . 개발자가 실수로 아키텍처적인 위배를 생성하였을 때 Lattix LDM 솔루션은 이를 알리거나 적용할 수 있습니다 .

매트릭스 표현 그 자체는 디자인 규칙 (design rules) 을 명세화하고 시각화할 수 있는 강력한 방법입니다 .

 

(Figure: 각 셀과 연관된 규칙들)

또한 규칙들은 외부 라이브러리가 중복이 최소화되고 아키텍처적인 무결성이 유지되며 라이센스 이슈가 관리되도록 이를 표준화하도록 명세화될 수 있습니다 .

설계 규칙 (Design Rules) 과 함께 해야 할 일들은 다음을 포함합니다 :

•  레이어링 (Layering) 의 명세와 적용
•  숨겨진 서브시스템의 유지
•  컴포넌트 독립의 유지
•  외부 라이브러리 사용의 관리

설계 규칙에 대한 Lattix 백서는 설계 규칙이 어떻게 명세화되고 적용될 수 있는지를 세부적으로 설명하고 있습니다 .

 

의존 모델 (Dependency Model) 이란 무엇인가 ?
의존 모델 (Dependency Model) 은 하나의 시스템의 아키텍처의 표현입니다 . 이것은 다음 같이 구성됩니다 :

•  질서 있게 계층적으로 시스템을 자체의 서브시스템들로 분해
•  서브시스템들 간의 현재의 의존성의 디스플레이
•  서브시스템들 간의 허용 가능한 의존성에 대한 설계 규칙 (Design Rules)

간단히 여러분은 의존 모델을 DSM 에 설계 규칙을 추가한 것으로 생각하시면 됩니다 .

의존 모델 (Dependency Model) = DSM + 설계 규칙 (Design Rules)