모노산달로스의 행보

[Software Engineering] 시스템 모델링 (System Modeling) 본문

DevOps/Software Engineering

[Software Engineering] 시스템 모델링 (System Modeling)

모노산달로스 2024. 4. 22. 09:00

Software Engineering - 시스템 모델링(System Modeling)

 

 

 

해당 포스트는 경기대학교 소프트웨어 공학 강의 자료를 바탕으로 작성되었습니다.


시스템 모델링

시스템 모델링이란 시스템에 대한 다양한 추상 표현 또는 추상 모델을 개발하는 것을 의미합니다. 각각의 추상 모델은 시스템의 서로 다른 뷰 또는 관점을 나타냅니다. 이러한 추상 모델은 그래픽 기호(주로 UML)를 통해 나타냅니다.

 

이러한 추상 모델은 시스템의 이해를 원활하게 만들고 고객과의 의사소통에 유용하게 사용됩니다. 큰 그림으로 전체 구조를 파악할 수 있기 때문에 토론의 촉진 수단 혹은 시스템의 문서화에 기여합니다. 혹은 코드 생성에 활용하기도 합니다.

 

Earth System Modeling(https://www.gfdl.noaa.gov/earth-system-model/)

 

 


모델링이란?

모델링이란 한마디로 '추상화(abstraction)'라고 정의할 수 있습니다. 모델링을 수행하기 위해서는 특정한 정보의 필요성을 잘 판단할 필요가 있습니다. 예를 들어 학교의 약도를 모델링하는 경우 도로와 버스 노선과 같은 주요 정보는 포함되어야 하지만 주변 식당이나 정문의 높이 같은 정보는 꼭 필요하지 않을 수 있습니다.

 

모델링은 다음과 같은 특징을 가집니다.

  • 모델링은 항상 특정한 목적을 가집니다.
  • 같은 요소에 여러가지 모델링이 존재합니다.
  • 모든 모델링은 현실의 불완전한 설명입니다.
  • 모델링은 완전할 필요가 없습니다. 충분하기만 하면 됩니다.

Selecting some and Ignoring others

 

 

 


UML이란?

UML(Unified Modeling Language)이란 소프트웨어 공학에서 사용하는 일반적인 목적의, 개발적인 모델링 언어입니다. 시스템 디자인의 표준적인 시각화 방법을 제공합니다. UML은 프로그래밍 언어가 아니며 개발 과정 중 하나로 생각해야합니다.

 

해당 포스트에서는 4가지의 시스템 모델링 관점과 함께 대표적인 UML 다이아그램 5가지를 알아보겠습니다.

 

Unified Modeling Language

 

 


시스템 모델링의 관점

추상 모델은 다양한 관점에서 시스템을 설명합니다. 대표적으로 아래의 4가지 관점이 존재합니다.

  • External perspective (외부 관점)
    • 시스템의 문맥이나 환경을 모델링합니다.
  • Interaction perspective (상호작용 관점)
    • 시스템과 환경 혹은 시스템과 컴포넌트 사이의 상호작용을 모델링합니다.
  • Structural perspective (구조 관점)
    • 시스템 구성 혹은 처리되는 데이터의 구조를 모델링합니다.
  • Behavioural perspective (행위 관점)
    • 시스템의 동적 행위와 이벤트의 반응을 모델링합니다.

지금부터 4개의 관점에 대하여 하나하나 자세하게 살펴보겠습니다.

 

 


 

외부 관점

문맥 모델(context model)은 시스템의 운영 문맥을 설명하는데 사용합니다. 무엇이 시스템 경계(System boundary)의 밖에 있는지 보여줍니다. 즉, 시스템과 다른 시스템의 관계를 보여줍니다.

 

UML Class Diagram으로 표현한 문맥 모델

 

 

프로세스 모델(Process Model)은 더 넓은 비지니스 프로세스 내에서 시스템이 개발되는 과정을 보여줍니다. 문맥 모델이 단순히 환경 내의 다른 시스템을 보여주는 것과는 차이가 존재합니다.

 

UML Activity Diagram으로 표현한 문맥 모델

 

 


 

상호작용 관점

 

상호작용 모델(Interaction model)은 각 요소들 간의 상호작용을 모델링합니다. 예를 들어 사용자 상호작용을 모델링하는 것은 사용자 요구사항을 이해하는데 도움이 됩니다. 그리고 시스템과 시스템 사이의 상호작용은 발생 가능한 통신 문제를 강조합니다. 또한 컴포넌트 사이의 상호작용은 필요한 시스템 성능과 신뢰성을 파악하는 데에 도움을 줍니다.

 

이러한 상호작용 모델은 Use case diagram(유즈케이스 다이아그램)Sequence diagram(시퀀스 다이아그램)을 사용하여 모델링합니다.

 

유즈케이스 다이아그램

유즈케이스 다이아그램은 원래 요구사항 유도를 돕기 위해 개발되었지만 현재는 UML에 포함되어 있습니다. 각 케이스는 시스템과 외부 상호작용을 포함한 하나의 작업을 나타냅니다. 유즈케이스에서 Actors는 사람 혹은 다른 시스텝을 의미합니다.

 

'의료 접수자' 역할을 포함한 의료 정보 시스템에서 유즈케이스

 

이러한 유즈 케이스를 표로 설명하면 아래와 같습니다.

Use case title Transfer data
Description (설명) 접수원은 MHC-PMS에서 건강 기관이 유지하는 일반 환자 기록 데이터베이스로 데이터를 이전할 수 있습니다. 전송되는 정보는 업데이트된 개인 정보(주소, 전화번호 등) 또는 환자의 진단 및 치료 내용 요약일 수 있습니다.
Actors (주체자들) 의료 접수원, 환자 기록 시스템 (PRS)
Pre-Conditions (선행 조건) 환자 데이터가 수집되었습니다 (개인 정보, 치료 내용 요약); 접수원은 환자 정보와 PRS에 액세스하는 데 필요한 적절한 보안 권한을 가지고 있어야 합니다.
Post-Conditions (후행 조건) PRS가 업데이트되었습니다.
Main success scenario (주요 성공 시나리오) 1. 접수원이 메뉴에서 "데이터 이전" 옵션을 선택합니다.
2. PRS가 접수원의 보안 자격 증명을 확인합니다.
3. 데이터가 이전됩니다.
4. PRS가 업데이트되었습니다.
Extensions (확장) 2a. 접수원이 필요한 보안 자격 증명을 가지고 있지 않습니다.
2a.1. 오류 메시지가 표시됩니다.
2a.2. 접수원이 Use case를 중단합니다.

 

시퀀스 다이아그램

시퀀스 다이아그램은 UML의 일부로서 Actors와 시스템의 객체가 상호작용하는 것을 모델링하는 데 사용합니다. 특정한 유즈케이스가 실행되는 동안 상호작용의 순서(sequence)를 나타냅니다.

 

Squence diagram for view patient information

 

 

객체와 Actors를 다이아그램의 상단에 나열하고 수직으로 점선을 그립니다. 객체들 사이의 상호작용은 annotated arrows(주석 화살표)로 표현합니다.

 

 


구조 관점

구조 모델(Structural model)은 시스템을 구성하는 컴포넌트와 그들 간의 관계를 보여줍니다. 구조 모델은 정적 모델(static model)로서 시스템 설계 구조를 나타냅니다. 혹은 동적 구조(dyanamic models)로서 실행중인 시스템의 구조를 보여줍니다. 시스템 구조를 디자인하는 경우 구조 모델을 활용할 수 있습니다.

 

클래스 다이아그램

클래스 다이아그램은 객체 지향 시스템 모델을 개발할 때 클래스 사이의 관계클래스들을 나타내는 경우 사용합니다. 클래스 객체는 일반적인 하나의 시스템 객체로 여겨집니다. 클래스들 사이에 연결된 선은 각 클래스들의 관계를 보여줍니다.

 

개발 초반에는 도메인에 해당하는 객체들이 등장합니다. 예를 들어 환자 그리고 의사 혹은 처방전 등이 해당됩니다. 그러다 개발 후반에는 현실 세상에 존재하지 않는 객체들이 등장합니다. 예를 들어 UI 객체 혹은 Control 객체 등이 해당됩니다.

 

Generalization, 일반화 관계

 

일반화 관계(Generalization)는 복잡성을 관리하기 위해 사용하는 기술입니다. 특정 개체를 더욱 일반적인 클래스에 포함시키는 것입니다. 예를 들어 고양이와 개가 동물이라는 More general class에 포함되는 경우가 있습니다. 이러한 관계도를 통하여 특정 클래스에 속하는 서로 다른 멤버들이 몇 가지 같은 특징을 가지고 있다는 것을 추론할 수 있습니다.

 

A generalization hierarchy

 

Java와 같은 몇몇 객체지향언어는 일반화가 클래스 상속(class ingeritance)의 형태로 구현됩니다.

Relationship between classes

앞서 살펴본 상속 관계를 포함하여 클래스들 사이의 관계를 아래와 같이 4가지로 정리할 수 있습니다.

  • Generalization(상속 관계)
    • 특정 클래스가 더 일반적인 특징을 가지는 클래스에 상속되는 관계(is-a)
  • Association (연관 관계)
    • 특정 클래스가 특정 클래스를 가지는 동등한 관계(has-a)
  • Aggregation (집합 관계)
    • 특정 클래스가 상위 클래스에 포함되는 제품과 부품 관계(part-of)
  • Composition (강한 집합 관계)
    • 제품인 상위 클래스가 사라지면 부품인 자신도 사라지는 강한 집합 관계

 

 


행위 관점

행위 모델(Behavioral model)은 작동 중인 시스템의 동적 행위(dynamic behavior)를 나타냅니다. 시스템이 환경의 자극에 반응할 때 무엇이 일어나야 하는지를 보여줍니다.

 

환경의 자극은 두 가지 유형이 존재합니다.

  • Data
    • 시스템에 의해 처리되어야 하는 데이터가 도착합니다.
  • Events
    • 시스템 처리를 작동시키는 이벤트가 발생합니다.
    • 일부 이벤트는 데이터와 함께 발생할 수 있습니다.

데이터 주도 모델링(Data-driven Modeling)

Order processing

많은 비지니스 시스템이 데이터에 의해 구동됩니다. 데이터 주도 모델(Dtat-driven model)입력된 데이터의 처리연관된 결과의 생성에 대한 행동 과정을 보여줍니다.

 

이벤트 주도 모델링(Event-driven Modeling)

실시간 시스템과 임베디드 시스템은 이벤트에 의해 주도됩니다. 이벤트 주도 모델(Event-driven model)시스템이 어떻게 외부와 내부의 이벤트에 반응하는지를 보여줍니다.

 

다음과 같은 가정을 바탕으로 이루어집니다.

  • 시스템이 유한한 갯수의 상태(state)를 지닙니다.
  • 이벤트는 다른 상태로의 전이(transition)를 유발합니다.

이러한 state와 transition으로 시스템 모델링을 수행합니다.

State diagram of a microwave oven

 

상태 모델(State model)은 외부 혹은 내부 이벤트에 대한 시스템의 반응입니다. 시스템의 상태(state)노드이벤트노드 사이의 호로 표현합니다. 이벤트가 발생하면 시스템은 다른 상태(state)로 전이됩니다.

 


 

 

 

 

추가 참고 자료 

  • Medium - What is System Modeling and UML?
 

What is System Modeling and UML?

Modelling the system of your software is very crucial. In this article, I’m sharing my knowledge about system modelling with an…

medium.com