"Source Code Modularization" 요약
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=183638155
※ Source Code Modularization이란 책을 챕터 별로 요약하겠습니다. 소프트웨어 모듈화에 대한 이해를 높이기 위해서 좋은 책입니다.
계층적 모듈화는 소프트웨어 아키텍처를 소스코드로부터 구조화된 모듈 집합으로 추출하는 방법입니다.
대표적인 접근법은 상향식(Bottom-up)과 하향식(Top-down) 방식이 있습니다.
- 상향식은 개별 아티팩트를 하나씩 모듈로 시작해 유사한 모듈끼리 병합합니다.
- 하향식은 전체를 하나의 모듈로 시작해 유사도가 낮은 부분을 분할해 나갑니다.
모듈 간의 유사도 또는 거리 계산 방법에 따라 다양한 세부 기법들이 있습니다
- Single-Linkage (최소 유사도 기준 병합)
- Complete-Linkage (최대 유사도 기준 병합)
- Group Average (평균 유사도 기준 병합)
- Weighted Group Average (가중 평균)
- Centroid Method (모듈 중심점 간 거리 계산)
- Median Method (크기에 민감하지 않은 중간값 거리 계산)
덴드로그램을 통해 병합 과정을 시각화하고, 최적의 모듈 수를 결정할 수 있습니다.
계층적 방법은 정보 손실 최소화를 목적으로 하는 AIB (Agglomerative Information Bottleneck), 그리고 대규모에 적합한 LIMBO와 같은 정보이론적 방법들도 포함합니다.
비계층적 모듈화는 사전에 정의된 모듈 수 k로 전체 소프트웨어를 분할하는 방식입니다.
대표적인 기법은 k-평균(k-Means) 알고리즘입니다.
- 초기 모듈 중심을 설정하고 아티팩트를 가장 가까운 모듈에 할당하면서 모듈 중심을 반복 갱신해 최적 분할을 찾음.
- 오차 함수(아티팩트와 모듈 중심 간 거리 합)를 최소화함.
k-평균 파생 기법들:
- X-평균 (X-Means): 모듈 수를 자동으로 결정.
- k-메도이드 (K-Medoids): 모듈 대표를 실제 아티팩트 중 하나로 선택.
- 비교-평균 (Compare-Means): 거리 계산 최적화.
- 정렬-평균 (Sort-Means): 효율적 탐색을 위해 평균점 거리 정렬.
이러한 모듈화 방법들은 소프트웨어 구조를 분석하고 개선하는 데 핵심적인 역할을 하며, 요구사항과 데이터 특성에 따라 적합한 방법을 선택하여 적용합니다. 계층적 방법은 유사도 기반 병합과 정보 이론적 최적화에 유리하고, 비계층적 방법은 사전 모듈 수 정의와 빠른 연산에 적합합니다. 덴드로그램 등의 시각화 기법은 병합 과정을 직관적으로 이해하는 데 도움을 줍니다.
#소프트웨어모듈화 #계층적모듈화 #비계층적모듈화 #소프트웨어설계 #k평균알고리즘 #덴드로그램 #정보이론 #AIB #LIMBO #모듈화기법 #SW아키텍처 #코드유지보수 #소프트웨어공학