정보처리기사/소프트웨어 설계

추상화(Abstraction)란?

glorypang 2025. 10. 28. 20:27
728x90
반응형
SMALL

추상화(Abstraction)란?

복잡한 대상에서 본질만 남기고 불필요한 세부를 감추어 다루는 기법/사고방식.
사용자는 “무엇을 할 수 있는가”에 집중하고, “어떻게 구현됐는가”는 신경 쓰지 않게 만든다.

왜 쓰나

  • 복잡도 감소: 이해·변경·협업 쉬워짐
  • 재사용·확장 용이: 구현 교체/확장해도 외부 계약은 유지
  • 결합도↓ 응집도↑: 안정된 인터페이스 뒤로 변화 숨김

어떻게 쓰나 (대표 방식)

  • 데이터/ADT 추상화: 상태는 숨기고 연산만 노출 (Money.add)
  • 타입/인터페이스 추상화: 계약(인터페이스) 뒤로 구현 교체 (PaymentGateway)
  • 객체/상속 추상화: 공통은 상위, 차이는 하위에서 특수화 (Animal ← Dog)
  • 절차/제어 추상화: 복잡한 제어를 의미 있는 함수/전략으로 감싸기 (sort(list, cmp))
  • 과정 추상화: 업무/서비스 흐름의 단계만 드러내고, 각 단계의 내부 구현·참여 시스템은 감춘다
    • 사용 맥락: 활동 다이어그램/BPMN, 사가 오케스트레이션, 마이크로서비스 플로우
    • 예시(고수준 단계만): Checkout = 인증 → 장바구니 검증 → 결제 → 재고 차감 → 발송 요청
      • 결제 단계는 카드/간편결제/포인트 등 구현 교체 가능, 호출부는 단계 계약만 안다
728x90
반응형
LIST