"Source Code Modularization" 요약
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=183638155
※ Source Code Modularization이란 책을 챕터 별로 요약하겠습니다. 소프트웨어 모듈화에 대한 이해를 높이기 위해서 좋은 책입니다.
소프트웨어 모듈화는 복잡한 시스템을 기능 단위로 분할해 성능 개선과 유지보수 용이성을 높이려는 설계 기법임. 그래프 분할 문제는 NP-난해하기에 탐색 공간 축소와 전역 최적화가 가능한 휴리스틱 및 진화적 접근법들이 효과적임. 모듈화 품질(MQ)은 모듈 간 결합 최소화와 모듈 내 응집 최대화를 목표로 하는 평가 지표임.
정의: 현재 해에서 인접한 이웃 해로 점진적으로 옮겨가며 MQ를 개선하는 국부 탐색 방법.
절차:
초기 해 무작위 생성
한 노드를 다른 모듈로 이동하거나 새 모듈에 배치해 이웃 해 생성
MQ가 향상되는 이웃 해를 찾을 때까지 반복
여러 초기 해에서 반복 수행 후 최선 해 선택
정의: 힐 클라이밍에 더 나쁜 해도 일정 확률로 수용해 국소 최적 탈출을 가능케 하는 확률적 탐색 기법.
절차:
초기 해 생성
이웃 해 탐색 중 MQ가 더 나쁠 경우에도 확률적으로 수용
시간에 따라 수용 확률 점진적 감소
최적 또는 만족 해 도출 시 종료
정의:
자연 진화 과정을 모방한 전역 탐색과 최적화 기법으로, 후보 해를 염색체로 인코딩하여 진화시킴.
절차:
해 집단(염색체) 초기 무작위 생성
적합도(MQ)를 기반으로 룰렛휠 등 선택 방식으로 부모 선정
교차 연산(주로 1점 교차)과 돌연변이 수행
새 집단으로 대체 후 반복
원하는 세대수 도달 또는 수렴 시 종료
정의: 모듈화 해를 오토마타로 인코딩하고, 보상과 페널티 학습으로 점진적 개선을 하는 국부 탐색 알고리즘.
절차:
각 오토마타에 노드별 액션 및 확률 할당
확률에 따라 액션 선택 후 모듈화 평가
MQ 기반 보상 또는 페널티 적용, 실패 누적 시 액션 교체
반복하며 최적 모듈화 탐색
정의: 염색체 내 처음 k개 유전자를 모듈 리더로 지정하고, 나머지는 그래프 연결성에 따라 모듈 배치하는 하이브리드 방식.
절차:
염색체 첫 k개 유전자 각기 다른 모듈에 할당
나머지 노드들을 인접성 기준으로 할당
순서 및 거리 보존 교차로 자손 생성
적합도 기준 상위 절반 유지하며 반복
이와 같이 각 방법은 탐색 공간과 국소 최적 문제를 극복하고, 모듈화 품질을 최대화하는 데 초점을 두고 있음.
#소프트웨어모듈화 #유전알고리즘 #힐클라이밍 #학습오토마타 #BUNCH #DAGC #소프트웨어아키텍처 #그래프분할 #탐색기반모듈화 #진화알고리즘 #국소최적해 #모듈화품질 #소프트웨어공학 #k평균 #알고리즘번역