-
비즈니스 프로세스를 그리자. — BPMN 2.0Architecture 2020. 10. 24. 13:08
소프트웨어 프로젝트 문서를 작성하면서 사용자가 어떻게 사용하고, 시스템은 어떻게 작동하는지 그림으로 나타내야 할때가 다반사이다.
사용자가 이 시점에서 무엇을 해야하고, 입력받은 시스템은 어떻게 동작해야 하는지 그림으로 그리려면 Flow Chart(1921년부터 사용, 1985년 ISO 표준 제정)와 UML을 많이 사용했을 것이다.
하지만 엔지니어링에 포커스를 둔 Flow Chart와 UML은 어딘가 모르게 3% 정도 부족할때가 생기게 마련이다.(혹시.. 나만 그런가?)
2005년에 UML의 복잡성을 과감하게 단순화(Simplify)시킨 새로운 표준이 나왔으니 이름하여 BPMN(Business Process Modeling Notation) 1.0이다.
그리고 여러번의 판올림을 하고 나서 2011년에 BPMN 2.0이 제정되었다.
역사는 이쯤에서 하고..
왜 BPMN을 만든 것일까?
단적으로 액티비티 다이어그램이 가진 부족한 점을 보완하기 위함이다. UML은 비즈니스 프로세스보다 소프트웨어 개발 관점에서 바라본다. 그래서 비즈니스 프로세스를 표현하기에는 부족한 면이 있었다. 그래서 비즈니스 프로세스 관점에서 프로세스를 표현하는 접근방식을 취하고 있다.
BPMN의 구성
BPMN은 3가지로 구성되어 있다.
Basic
가장 기초적인 구성이다. 도형도 간단하고 기술자가 아닌 사람들도 10분 정도만 인지하고 바로 적용할 수 있을 정도로 쉽다.
Core
SW 엔지니어들이 보기 시작하는 단계이다. Basic에서 좀더 세분화된 구성이다. 시스템을 구현할때 필요로 하는 Activity에 대한 세부 분류가 표현 가능하고, 예외 처리도 표현 가능하다.
Advaned
실제 코드를 다이어그램으로 표현하는 수준이다. Core보다 더 SW 엔지니어링에 가깝도록 세분화 되어 있다. 이 수준은 BPM 시스템에 구현하면 실제로 동작하는 단계이다.
이 포스팅에서는 가장 많이 사용하는 Element를 기준으로 기술한다.
BPMN의 요소들(Elements of BPMN)
BPMN의 규칙은 아주 간단하다. 무조건 Start로 시작해서 End로 끝내야 한다. 액티비티간에 흐름이 끊어지면 안된다. 이것만 지키면 된다.
시작, 종료를 표기하자.
Intermediate는 시작과 종료 중간에 유입되는 이벤트를 나타낸다.
프로세스 액티비티(Activity)를 표기하자.
액티비티의 모양은 모서리가 둥근 사각형이다. 사각형 안에 프로세스명을 기입하면 된다.
이제는 서로를 이어줘야 할 시간! — Connections
서로를 이어줄때도 규칙과 모양이 다르다.
Sequence Flow
프로세스의 흐름을 나타낸다. Activity를 비롯한 Element들을 이어준다. 하지만 나중에 나올 Swimlane을 벗어나지 못한다는 제약사항이 있다. 실선에 색칠된 삼각형으로 표기한다.
Message Flow
Swimlane간에 전달하는 메시지를 의미한다. 메시지라함은 말(Speak), 시스템 등록같은 다른 사람이나 시스템에 지시와 요청을 전달하는 것을 포괄적으로 나타낸다. 점선에 빈 삼각형 화살표로 표기한다.
Association
액티비티와 관련된 산출물을 연결할때 사용한다. 산출물은 말(Speak), 제품, 데이터등 포괄적인 의미를 갖고 있다. 작은 점선으로 표기한다.
지금까지 나온 Start, Activity와 End만으로도 많은 것을 표현할 수 있다.
“이럴때는 요거, 저럴때는 저거” 분기처리 — Gateway
상황에 따라서 판단해서 분기해야 하는 것은 어디서나 있기 마련이다. 분기없이 흘러가는 프로세스가 완벽하다고 생각한다. 하지만 그런게 과연 있기나 한걸까?
기호는 Flowchart와 동일하게 마름모이고, 표기법은 동일하다.
여러 계층을 표현하자. — Pool, Swimlane, Blackbox Pool
우리가 비즈니스 프로세스를 표현할때 하나의 시스템이나 인력으로 처리하는 프로세스는 없다. 99.9%는 없다고 봐도 된다. 연동과 협업을 표현하는 방법은 Swimlane을 사용하자. 수영장에 레인을 생각하면 이해가 빠르다.
순서대로 살펴보면 첫번째 Vertical Swimlane은 하나의 계층만을 나타낸다. 두번째는 계층안에서 세부적으로 나눌때 레인을 여러개 두는 경우이고, 세번째 블랙박스는 나타내고자 하는 관심이 아닌 계층은 단순하게 블랙박스로 나타내는 것이다.
블랙박스를 나타내는 이유는 아키텍처의 기본인 “관심사의 분리 — Seperate of Concern”를 적용한 것이다.
위의 모든 것을 적용한 다이어그램으로 마치겠다.
마지막으로 주의할 점은 너무 세부적으로 그려야 겠다는 욕심을 버려야 한다는 것이다. 나타내고자하는 의도에 대해서 심사숙고해서 작성하자.
Thanks
Hans
'Architecture' 카테고리의 다른 글
실시간 데이터 집계 시스템 아키텍처 (0) 2023.07.17 Monolith를 MSA로 전환을 계획할때 필요한 세가지 (0) 2020.11.21 슬기롭게 로그(Log)를 쌓는 법 (0) 2020.07.22 AWS에서 효율적인 비용으로 시스템을 운영하기 (0) 2020.06.27 [MSA] 믿는 enum에 발등 찍힌다. (1) 2020.04.07