brunch

계층적 및 비계층적 소프트웨어 모듈화 방법

"Source Code Modularization" 요약

by 심야서점

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=183638155

※ Source Code Modularization이란 책을 챕터 별로 요약하겠습니다. 소프트웨어 모듈화에 대한 이해를 높이기 위해서 좋은 책입니다.


1. 계층적 모듈화 (Hierarchical Modularization)


계층적 모듈화는 소프트웨어 아키텍처를 소스코드로부터 구조화된 모듈 집합으로 추출하는 방법입니다.

대표적인 접근법은 상향식(Bottom-up)과 하향식(Top-down) 방식이 있습니다.
- 상향식은 개별 아티팩트를 하나씩 모듈로 시작해 유사한 모듈끼리 병합합니다.
- 하향식은 전체를 하나의 모듈로 시작해 유사도가 낮은 부분을 분할해 나갑니다.

모듈 간의 유사도 또는 거리 계산 방법에 따라 다양한 세부 기법들이 있습니다
- Single-Linkage (최소 유사도 기준 병합)
- Complete-Linkage (최대 유사도 기준 병합)
- Group Average (평균 유사도 기준 병합)
- Weighted Group Average (가중 평균)
- Centroid Method (모듈 중심점 간 거리 계산)
- Median Method (크기에 민감하지 않은 중간값 거리 계산)

덴드로그램을 통해 병합 과정을 시각화하고, 최적의 모듈 수를 결정할 수 있습니다.

계층적 방법은 정보 손실 최소화를 목적으로 하는 AIB (Agglomerative Information Bottleneck), 그리고 대규모에 적합한 LIMBO와 같은 정보이론적 방법들도 포함합니다.


2. 비계층적/분할 모듈화 (Nonhierarchical/Partitional Modularization)


비계층적 모듈화는 사전에 정의된 모듈 수 k로 전체 소프트웨어를 분할하는 방식입니다.

대표적인 기법은 k-평균(k-Means) 알고리즘입니다.
- 초기 모듈 중심을 설정하고 아티팩트를 가장 가까운 모듈에 할당하면서 모듈 중심을 반복 갱신해 최적 분할을 찾음.
- 오차 함수(아티팩트와 모듈 중심 간 거리 합)를 최소화함.

k-평균 파생 기법들:
- X-평균 (X-Means): 모듈 수를 자동으로 결정.
- k-메도이드 (K-Medoids): 모듈 대표를 실제 아티팩트 중 하나로 선택.
- 비교-평균 (Compare-Means): 거리 계산 최적화.
- 정렬-평균 (Sort-Means): 효율적 탐색을 위해 평균점 거리 정렬.


이러한 모듈화 방법들은 소프트웨어 구조를 분석하고 개선하는 데 핵심적인 역할을 하며, 요구사항과 데이터 특성에 따라 적합한 방법을 선택하여 적용합니다. 계층적 방법은 유사도 기반 병합과 정보 이론적 최적화에 유리하고, 비계층적 방법은 사전 모듈 수 정의와 빠른 연산에 적합합니다. 덴드로그램 등의 시각화 기법은 병합 과정을 직관적으로 이해하는 데 도움을 줍니다.


#소프트웨어모듈화 #계층적모듈화 #비계층적모듈화 #소프트웨어설계 #k평균알고리즘 #덴드로그램 #정보이론 #AIB #LIMBO #모듈화기법 #SW아키텍처 #코드유지보수 #소프트웨어공학

keyword
매거진의 이전글소프트웨어 아티팩트 근접성 기반 모듈화와 품질 측정