소프트웨어 설계

소프트웨어 설계 (Software Design)

모듈화, 응집도, 결합도, Inspection

모듈화 (Modularity)

요구사항을 소프트웨어 표현으로 변환하는 과정

좋은 설계 특성


응집도 (Cohesion) — 높을수록 좋음

한 모듈 내부 요소들의 관련성 강도

수준 (높음→낮음) 설명
기능적 응집 하나의 기능만 수행 (최고)
순차적 응집 앞 활동의 출력이 다음 활동의 입력
통신적 응집 같은 데이터를 사용하는 활동들
절차적 응집 특정 순서로 실행되는 활동들
시간적 응집 같은 시점에 실행되는 활동들 (초기화 등)
논리적 응집 논리적으로 유사한 활동들 묶음
우연적 응집 관련 없는 활동들의 묶음 (최악)

결합도 (Coupling) — 낮을수록 좋음

두 모듈 간의 상호의존성 정도

수준 (낮음→높음) 설명
Message Coupling 공개 인터페이스만 사용 (가장 느슨)
Data Coupling 단순 데이터 타입 파라미터 전달 (최소한 유지 필요)
Stamp Coupling 구조체로 전달 (불필요한 정보 전달 주의)
Control Coupling 내부 로직 제어를 위한 플래그 전달 (Forward/Backward)
Common Coupling 전역 변수 공유 → 파동 효과 발생
Content Coupling 다른 모듈 내부 직접 참조/변경 (가장 강함)

Inspection (코드 검토)

절차

  1. 프리팩: 자료 배포
  2. 개요(선택): 작성자가 산출물 설명
  3. 준비: 각 검토자가 산출물 검토
  4. Inspection 미팅: 결함 발견 및 기록
  5. Side Hour: 추가 검토
  6. 수정/검증: 발견된 결함 수정 후 확인
  7. 평가

결함 분류

관련 개념