위키득계정 ↗
기술

추상화 (컴퓨터 과학)

추상화 (컴퓨터 과학)기술
영문명
Abstraction
주요 목적
복잡성 관리와 역할 분리
적용 대상
자료, 연산과 시스템 구조
관련 개념
인터페이스와 추상 자료형
컴퓨터 과학에서 추상화는 목적에 필요한 성질과 동작을 드러내고 나머지 세부 구현을 덜어 내는 방식이다. 복잡한 시스템을 여러 수준에서 이해하고, 내부 구현을 바꾸면서도 사용하는 쪽의 약속을 유지하는 데 도움이 된다.

무엇을 할 수 있는가

문서를 저장하는 기능을 사용하는 사람은 저장 장치의 전기 신호를 직접 다룰 필요가 없다. 프로그램도 파일을 읽고 쓰는 연산을 이용하면서 장치의 구체적인 구조 일부를 감출 수 있다. 어떤 동작을 제공하는지와 그 동작을 어떻게 구현하는지를 나누는 것이 핵심이다.

같은 약속과 다른 구현

스택을 사용할 때는 마지막에 넣은 값을 먼저 꺼낸다는 규칙이 중요하다. 내부에서 배열을 쓰는지 연결된 노드를 쓰는지는 이용하는 코드에 드러내지 않을 수 있다. 다만 구현에 따라 메모리 사용량과 연산 비용이 달라지므로 성능까지 모두 같다는 뜻은 아니다.

여러 층으로 보는 시스템

프로그램의 함수, 운영체제의 파일 기능과 하드웨어 명령은 서로 다른 수준의 표현을 제공한다. 각 층의 약속을 이용하면 한 번에 다뤄야 하는 세부 사항을 줄일 수 있다. 문제가 생겼을 때에는 어느 층의 가정이 성립하지 않는지 살펴볼 필요가 있다.

좋은 경계의 조건

세부 사항을 많이 감춘다고 언제나 좋은 추상화가 되는 것은 아니다. 사용하는 쪽에서 꼭 알아야 할 오류와 비용, 제약을 감추면 잘못된 기대를 만들 수 있다. 목적에 맞는 동작을 명확히 드러내고 경계를 넘는 의존성을 줄이는 설계가 중요하다.

관련 문서

자료 구조 / 스택 / 운영체제 / 인터페이스 (컴퓨팅)