기능 모델(Function model)은 시스템 공학, 소프트웨어 공학 및 컴퓨터 과학 분야에서 모델링된 시스템 또는 주제 영역 내의 기능(활동, 작업, 프로세스, 운영)을 구조적으로 표현한 것이다. 기능 모델은 활동 모델 또는 프로세스 모델과 유사하게 정의된 범위 내에서 사업의 기능을 그래픽으로 표현한 것이며, 그 목적은 기능 및 프로세스를 설명하고, 정보 요구 사항 발견을 돕고, 기회를 식별하며, 제품 및 서비스 비용을 결정하는 기초를 마련하는 데 있다.
역사
시스템 공학 및 소프트웨어 공학 분야의 기능 모델은 1950년대와 1960년대에 시작되었지만, 조직 활동의 기능 모델링의 기원은 19세기 후반으로 거슬러 올라간다. 19세기 후반에는 비즈니스 활동, 작업, 프로세스 또는 운영을 그림으로 나타내는 최초의 다이어그램이 등장했으며, 20세기 전반에는 비즈니스 프로세스 활동을 문서화하는 최초의 구조화된 방법이 등장했다. 1921년 프랭크 길브레스(Frank Gilbreth)가 미국 기계 기술자 협회(ASME) 회원들에게 소개한 흐름 프로세스 차트(Flow Process Chart)가 그중 하나이다.
시스템 공학 분야의 등장은 1940년대 벨 전화 연구소(Bell Telephone Laboratories)로 거슬러 올라간다. 이 분야에서 기능 모델을 처음 정의한 사람 중 한 명은 영국 엔지니어 윌리엄 고슬링(William Gosling)으로, 그는 저서 《공학 시스템의 설계(The Design of Engineering Systems)》(1962)에서 기능 모델이 처리량(throughput)을 설명하는 메커니즘을 제공해야 한다고 언급했다. 최초의 잘 정의된 기능 모델 중 하나는 1950년대 국방 관련 기업인 TRW에서 개발한 기능 흐름 블록 다이어그램(FFBD)이며, 1960년대에는 NASA에서 우주 시스템 및 비행 임무의 시간 순서 이벤트를 시각화하는 데 사용되었다.
기능적 관점
시스템 공학 및 소프트웨어 공학에서 기능 모델은 기능적 모델링 관점(functional modeling perspective)으로 생성된다. 기능적 관점은 동적 시스템을 설명하는 데 중점을 두며, 이 관점의 주요 개념은 프로세스(기능, 변환, 활동, 작업, 태스크)이다. 이 관점을 사용하는 대표적인 모델링 언어로 데이터 흐름 다이어그램(DFD, Data Flow Diagram)이 있다.
기능적 관점은 프로세스를 설명하기 위해 네 가지 기호를 사용한다.
- 프로세스(Process): 입력에서 출력으로의 변환을 나타낸다.
- 저장소(Store): 데이터 수집 또는 일종의 재료를 나타낸다.
- 흐름(Flow): 프로세스 내 데이터 또는 재료의 이동을 나타낸다.
- 외부 개체(External Entity): 모델링된 시스템 외부에 있지만 시스템과 상호 작용하는 대상을 나타낸다.
기능 분해(Functional Decomposition)
기능 분해는 함수적 관계를 구성 요소로 분해하여 원래 함수를 함수 합성을 통해 재구성할 수 있도록 하는 프로세스이다. 컴퓨터 프로그래밍에서 중요한 역할을 하며 주요 목표는 프로세스를 가능한 한 최대한 모듈화하는 것이다. 공학 시스템의 기능 분해는 시스템의 각 부분이 순수한 기능(pure function)을 갖도록 하여, 그 기능들이 재사용되거나 교체될 수 있게 한다.
주요 기능 모델링 방법
- 기능 블록 다이어그램(Functional Block Diagram): 시스템의 기능과 상호 관계를 블록과 선으로 설명하는 다이어그램이다.
- 기능 흐름 블록 다이어그램(FFBD, Functional Flow Block Diagram): 시스템의 기능적 흐름을 다단계, 시간 순서, 단계별로 보여주는 흐름도이다. 1950년대에 개발되어 고전적인 시스템 공학에서 널리 사용된다.
- HIPO(Hierarchical Input Process Output): 1970년대에 널리 사용된 시스템 분석 설계 및 문서화 기법으로, 시스템의 모듈을 계층으로 나타내고 각 모듈을 문서화하는 데 사용되었다.
- N2 차트: 행렬 형태로 시스템 요소 간의 기능적 또는 물리적 인터페이스를 나타낸다.
- 구조화된 분석 및 설계 기법(SADT, Structured Analysis and Design Technique): 시스템을 기능의 계층으로 설명하기 위한 소프트웨어 공학 방법론이다.
- IDEF0: 제조업 기능을 설명하기 위한 기능 모델링 방법론으로, SADT를 기반으로 구축되었으며 미국 공군이 시스템의 기능적 관점을 분석하고 전달하기 위해 개발을 의뢰했다.
- 공리적 설계(Axiomatic Design): 하향식 계층적 기능 분해 프로세스로, 기능 간의 결합을 수학적으로 분석하는 데 사용된다.
관련 모델 유형
- 비즈니스 기능 모델(BFM, Business Function Model): 조직의 임무를 수행하기 위해 일상적으로 수행되는 운영의 일반적인 설명 또는 범주이다.
- 비즈니스 프로세스 모델 및 표기법(BPMN, Business Process Model and Notation): 워크플로에서 비즈니스 프로세스를 지정하기 위한 그래픽 표현이다. 객체 관리 그룹(OMG)에서 유지 관리하며 현재 버전은 2.0이다.
- 비즈니스 참조 모델(Business Reference Model): 기업, 서비스 조직 또는 관청의 핵심 비즈니스의 기능적 및 조직적 측면에 중점을 둔 참조 모델이다.
- 운영자 기능 모델(OFM, Operator Function Model): 인적 요인 엔지니어가 사용하는 전통적인 과업 분석 기술의 대안으로 제안되었으며, 운영자가 복잡한 시스템을 더 간단한 부분으로 분해하는 방식을 수학적 형태로 표현한다.
기능 모델은 소프트웨어 개발, 시스템 공학, 비즈니스 프로세스 관리 등 다양한 분야에서 시스템의 기능적 요구 사항을 분석하고 설계하는 핵심 도구로 사용된다.