> For the complete documentation index, see [llms.txt](https://krjaeh0.gitbook.io/j-log/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://krjaeh0.gitbook.io/j-log/programming/software-design/architecture-and-patterns/rumbaughooa/functional-model.md).

# functional model

## 기능 모델(Functional Model)이란?

* 시스템이 수행해야 할 기능과 데이터 흐름을 표현하는 모델이다.
* 데이터가 어떻게 입력되고, 변환되며, 최종적으로 출력되는지 분석하는 것이 핵심이다.

> - 기능 모델은 UML의 활동 다이어그램(Activity Diagram)과 데이터 흐름도(DFD, Data Flow Diagram)와 유사한 개념이다.
> - 객체 모델이 시스템의 구조를 정의하고 동적 모델이 상태 변화를 정의하면, 기능 모델은 데이터의 흐름과 처리를 정의하는 역할을 한다.

***

## 기능 모델의 주요 개념

* 데이터의 흐름과 변환을 분석하기 위해 아래 개념을 활용한다.

| 개념      | 설명                            |
| ------- | ----------------------------- |
| 프로세스    | 입력을 받아서 데이터를 처리하고 결과를 생성하는 기능 |
| 데이터 흐름  | 프로세스 간 데이터를 전달하는 경로           |
| 데이터 저장소 | 데이터를 저장하고 필요할 때 제공하는 저장소      |
| 외부 엔티티  | 시스템과 데이터를 주고받는 외부 요소          |

***

## 프로세스(Process)

* 입력 데이터를 받아서 가공하고 결과를 생성하는 작업(기능)
* 데이터의 변환과 처리를 담당하는 핵심 요소

```
[고객 정보 입력] → (고객 등록) → [고객 DB 저장]
```

***

## 데이터 흐름(Data Flow)

* 프로세스 간 데이터를 주고받는 흐름(Flow)을 나타낸다.
* 데이터가 어떻게 이동하는지 분석하는 것이 핵심이다.

```
(고객 등록) → 고객 정보 → (고객 DB 저장)
```

***

## 데이터 저장소(Data Store)

* 데이터를 저장하고 필요할 때 제공하는 저장소(DB, file 등)

```
(주문 처리) → 주문 정보 → [주문 데이터 저장소]
```

***

## 외부 엔티티(External Entity)

* 시스템과 데이터를 주고받는 외부 요소(사용자, 다른 시스템 등)

```
[고객] → (상품 검색)
[결제 시스템] → (결제 승인)
```

***

## 데이터 흐름도(DFD, Data Flow Diagram)

* 데이터가 시스템을 통해 어떻게 흐르는지 시각적으로 표현하는 다이어그램.
* \[데이터 흐름도에 대해서]

```
+--------------+        +----------------+        +----------------+
| 고객          | -----> | 주문 처리 프로세스  | -----> | 주문 데이터 저장소 |
+--------------+        +----------------+        +----------------+
```

***

## UML 활동 다이어그램(Activity Diagram)

* 기능 모델은 UML의 활동 다이어그램(Activity Diagram)과 유사하다.
* 활동 다이어그램은 작업(프로세스)들이 어떤 순서로 수행되는지를 표현한다.
* \[활동 다이어그램에 대해서]

```
[고객 주문] → (주문 확인) → (결제 처리) → (배송 준비) → (배송 완료)
```

***

## 기능 모델의 장점

* 데이터 흐름을 명확하게 분석 가능하다.
* 시스템 기능을 시각적으로 표현할 수 있다.
* 실제 시스템 개발 시 기능 정의에 유용하다.
* 객체 모델 및 동적 모델과 결합하여 완전한 시스템 설계가 가능하다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://krjaeh0.gitbook.io/j-log/programming/software-design/architecture-and-patterns/rumbaughooa/functional-model.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
