작성 맥락
이 글은 직접 학습하거나 구현하며 남긴 개인 기술 기록입니다. 참고 자료가 있는 경우 본문에 출처를 남기고, 틀린 부분을 발견하면 수정합니다.
공통모듈설계
출제빈도: 상
소프트웨어 설계
- 알고리즘을 설계하고 데이터를 구조화한 자료구조를 문서화하는 과정
- 설계 방식 비교:
- 절차지향: 속도가 빠르지만 유지보수가 어려움
- 객체지향: 난이도 높고 속도는 느리지만 재활용성과 유지보수가 쉬움
소프트웨어 설계 모델
설계 구성 순서
- 데이터 설계
- 아키텍처 설계
- 인터페이스 설계
- 절차 설계
설계 계층
- 상위(아키텍처) 설계
- 예비 설계
- 시스템 구조
- DB 설계
- 화면 레이아웃 등
- 하위(모듈) 설계
- 상세 설계
- 구성 요소의 내부 로직
- 동적 행위 등
소프트웨어 설계 추상화
- 상세 설계 이전에 대략적, 포괄적 구상
- 설계(구체화)를 효율적으로 수행하기 위한 과정
추상화 기법 3가지
- 제어 추상화: 매커니즘이 아닌 포괄적 표현
- 과정 추상화: 수행 과정이 아닌 전반적인 흐름
- 자료 추상화: 데이터를 대표적인 표현으로 대체
바람직한 설계의 기준
- 모든 내용을 구현할 수 있어야 함
- 결함 기능을 추적할 수 있어야 함
- 유지보수가 용이해야 함
- 주요 특성:
- 모듈(독립적인 기능)
- 명확(절차와 자료구조)
- 계층적(모듈의 효과적 제어)
모듈화
- 시스템을 분해하고 추상화하는 과정
- 장점: 성능 향상, 수정 용이, 재사용성, 유지관리 개선
- 모듈 개수와 비용의 관계:
- 모듈의 개수가 많음 → 모듈 크기 작아짐 → 통합비용 상승
- 모듈의 개수가 적음 → 모듈 크기 커짐 → 통합비용 하락
공통 모듈
- 공통적으로 사용할 수 있는 모듈
- 누구나 사용할 수 있도록 사용법 공개
- 유지보수가 용이함
- 핵심 특성: 공유도와 응집도를 높이고, 제어도와 결합도는 낮춤
소프트웨어 재사용
- 이미 검증이 완료된 기능을 재구성
- 재사용 대상: 함수, 객체, 컴포넌트, 애플리케이션
- 접근 방식:
- 생성 중심: 추상화 형태를 구체화
- 합성 중심: 모듈을 조립
소프트웨어 재공학
- 기존 시스템을 이용하여 보다 나은 시스템 구축
- 소프트웨어의 위기를 유지보수 측면으로 해결
- 주요 프로세스:
- 분석: 명세를 통해 재공학의 가치를 판단
- 재구성: 코드를 재구성
- 역공학: 외계인 코드(유지보수 작업이 어려운 코드)로부터 소스코드를 복구, 재발견
- 이식: 다른 플랫폼에서 사용할 수 있도록 변환
공통 모듈 식별 프로세스
- 단위 업무 기능 분석
- 업무 기능을 정제(표준화)
- 누락이나 중복되는 기능 확인
- 유스케이스 분석
- 포함관계 «include» 분석
- 검토 회의 진행
- 공통 모듈 선정
- 상세 기능 명세
- 식별된 기능 통합
- 공통 기능 통합
- 관리 프로세스 수립
- 문서 작성
공통 모듈 명세 원칙
- 의사소통을 위한 명세 작성
- 의사소통이 안 되는 코드는 외계인 코드로 간주
모듈 응집도
- 정의: 내부 요소 간 관계의 밀접도
- 특징: 응집도가 높을수록 모듈 독립성 향상
응집도 단계 (높음 → 낮음)
- 기능적 응집도: 단일 문제 해결
- 순차적 응집도: 출력이 다른 모듈의 입력으로 사용
- 통신적 응집도: 하나의 출력을 다양한 기능에 활용
- 절차적 응집도: 순차적 모듈 수행
- 시간적 응집도: 특정 시기 동시 수행
- 논리적 응집도: 유사 성격/형태의 기능 통합
- 우연적 응집도: 무관련 기능 통합
모듈 결합도
- 정의: 모듈 간 의존성 정도
- 특징: 결합도가 낮을수록 모듈 독립성 향상
결합도 단계 (낮음 → 높음)
- 자료 결합도
- 인수와 매개변수를 통한 상호작용
- 예: 도서대여 ⟷ 대여요금계산
- 스탬프 결합도
- 동일 자료구조 공유
- 예: 도서대여 ⟷ 회원등급 ⟷ 대여요금계산
- 제어 결합도
- 제어 요소에 따른 처리 절차 변화
- 예: 재고현황 (있음=1, 없음=0)
- 외부 결합도
- 직접적인 내부 데이터 참조
- 공유 결합도
- 외부 선언 변수 참조
- 관련 없는 모듈의 접근 가능성
- 내용 결합도
- 직접적인 내부 기능/데이터 사용
복잡도 측정
공유도 (Fan-In)
- 정의: 자신을 호출하는 모듈의 수
- 특징:
- 높은 공유도 = 좋은 모듈화
- 주의사항:
- 단일 실패지점 관리
- 중점 관리 필요
- 철저한 테스트 검증
제어도 (Fan-Out)
- 정의: 자신이 호출하는 모듈의 수
- 특징: 높은 제어도는 업무로직 단순화 검토 필요

댓글이 보이지 않으면 GitHub에 로그인한 뒤 새로고침해 주세요. 공개 댓글은 로그인 상태에서 더 안정적으로 표시됩니다.