개념
블랙보드(Blackboard)는 소프트웨어 디자인 패턴 중 하나로, 복잡한 문제 해결을 위해 여러 독립적인 모듈(knowledge source, KS)이 공유 데이터 구조인 블랙보드에 접근하여 정보를 읽고 쓰는 방식으로 동작한다. 각 KS는 특정 전문 지식이나 알고리즘을 담당하며, 블랙보드에 새로운 정보가 추가되면 다른 KS가 이를 활용해 추가적인 처리를 수행한다. 이러한 구조는 단계적이고 협업적인 문제 해결을 가능하게 한다.
역사·어원
- “Blackboard”라는 용어는 1970년대 초 인공지능 연구에서 사용된 blackboard system에서 유래한다.
- 초기 사례로는 음성 인식 시스템 Hearsay-II(1970년대)와 같은 AI 프로젝트가 있다.
- 이후 소프트웨어 공학 분야에서 일반적인 디자인 패턴으로 정형화되었다.
핵심 구성 요소
- 블랙보드: 전역적으로 공유되는 데이터 저장소. 문제 상황과 현재까지 도출된 중간 결과 등을 저장한다.
- 지식원(Knowledge Sources, KS): 독립적인 처리 모듈로, 특정 조건이 만족될 때 블랙보드에 접근하여 새로운 정보를 생성하거나 기존 정보를 수정한다.
- 제어 메커니즘(Control Component): 어느 KS가 언제 실행될지를 결정한다. 일반적으로 탐색기(explorer) 혹은 스케줄러가 역할을 수행한다.
동작 흐름
- 초기 입력 데이터가 블랙보드에 기록된다.
- 제어 메커니즘이 현재 블랙보드 상태에 적합한 KS를 선택한다.
- 선택된 KS가 블랙보드에 새로운 정보를 추가하거나 기존 정보를 업데이트한다.
- 단계 2‑3을 반복하여 최종 목표(예: 완전한 해답) 달성 시까지 진행한다.
주요 활용 분야
- 인공지능(음성 인식, 이미지 해석, 자연어 처리 등)
- 복합 시스템 설계(자동차 제어, 로봇 공학)
- 멀티에이전트 시뮬레이션
- 데이터 흐름 기반 프로그래밍과 워크플로우 엔진
장점
- 서로 다른 전문 지식을 가진 모듈 간의 느슨한 결합(loose coupling)을 유지할 수 있다.
- 시스템 확장이 용이하며, 새로운 KS를 추가해도 기존 구조에 최소한의 영향만 미친다.
- 비선형·비정형 문제에 대한 점진적 개선이 가능하다.
단점
- 제어 메커니즘이 복잡해질 경우 전체 시스템의 성능 저하가 발생할 수 있다.
- 블랙보드에 저장되는 데이터가 비정형일 경우 데이터 관리가 어려워진다.
- 다수의 KS가 동시에 접근할 경우 동시성 제어가 필요하다.
관련 패턴·기법
- 파이프라인(Pipeline) 패턴: 순차적인 데이터 흐름에 중점을 둔 반면, 블랙보드는 비순차적·동시적 협업을 강조한다.
- 이벤트 기반 아키텍처: 이벤트를 트리거로 사용하지만, 블랙보드는 공유 데이터 자체가 중심이다.
- 모델 기반 설계(Model‑Based Design): 블랙보드에 저장되는 상태 모델과 유사한 개념을 포함한다.
참고
- “Blackboard Systems” – Luger, G.F., Stubblefield, W.A. (1986)
- “Design Patterns: Elements of Reusable Object‑Oriented Software” – Gamma et al., (1994) (Blackboard는 GOF 패턴에 포함되지 않지만, 디자인 패턴 카탈로그에서 자주 언급됨)
위 내용은 디자인 패턴으로서의 블랙보드에 대한 객관적인 설명이며, 현존하는 공인된 문헌과 학술 자료를 기반으로 정리하였다.