System Modeling이란?
- 시스템의 추상적 모델을 개발하는 과정
- 각 모델에 따라 다른 관점을 가진다
- UML 표기법을 기반으로 그래픽적인 표기를 한다 (말로 표현하는 것이 모호하기 때문)
- 개발자나 고객이 시스템을 이해하고 분석하는 데 도움
Existing and planned system models
- 이미 동작하는 시스템을 그림, 글로 표현하여 현재 시스템의 문제나 새로운 시스템의 요구사항을 추출하는 데 사용
- Stackholders(이해당사자), 개발자들에게 용이한 설명, 요구사항 간결히 전달
- model-driven engineering process : 모델링으로 만들어진 기호를 그대로 코드로 구현. (프로그래밍 불필요)
System perspective
1) External perspective
- 외부에서 바라보는 전체적인 관점
- 시스템이 기존에 없던 경우, 요구사항을 묶어 하나의 시스템으로 본다.
2) Interaction perspective
- 시스템과 환경, 혹은 시스템의 구성 요소 간의 상호 작용을 중심으로 모델링하는 관점
3) Structural perspective
- 데이터 구조 모델링
- 어떤 기능, 클래스가 필요할지에 대해 바라봄
4) Behavioral perspective
- 시스템 내에서 어떠한 일이 '수행'되어야 하는지를 중심으로 모델링하는 관점
UML diagram types
1) Activity Diagram : 데이터 프로세싱이나 프로세스 중 어떤 활동이 수반되는지 표현
2) Use case Diagram : 시나리오 중심
3) Sequence Diagram : 누가 누구에게 무엇을 전달하는지를 표현
4) Class Diagram : 클래스 중심
5) State Diagram : 외/내부의 상태와 이벤트 관계 중심
Context Model
- 추상적이고 상위 레벨, 시스템 외부에서 상호작용을 정의
- 시스템을 Boundary로 나눈다. 사회/집단의 이해관계에 따라 Boundary가 결정 (시스템 요구사항에 큰 영향을 끼침)
- 중복성을 제거하고 재활용 여부를 판단
- 전체적인 시스템 안에 시스템이 어떤 위치에 있는지 표현
Process Model
- Context model에서 구체적 정보가 부족할 때 사용
- 특정 상황에서 어떤 절차를 거쳐 시스템이 동작하는가 설명
- 다른 많은 시스템 사이에서 이 시스템이 어떻게 상호작용할지 고려한다.
Interaction Model
- 시스템이 외부환경, 사용자와 어떻게 interaction하는가?
- 요구 사항을 명확히 파악하는 데 도움
- use case, sequence diagram이 도움이 많이 됨
Use case modeling
- 시스템이 특정 시나리오에 대해 행동하는 방식에 대해 모델링
- 요구사항 추출, UML에 통합되는데 사용
- 각각의 사용 케이스에 대해 표현
- Actor : 시나리오 발생시키는 존재. 결과를 가져갈 대상
Sequence Diagram
- Interaction 모델에 많이 사용
- 시스템을 분할해 내부 단계 표현
Structural Model
- 소프트웨어의 내부 구조
- 정적 모델 또는 동적 모델(실행중)
- 아키텍쳐 논의 및 설계 시 만든다
- Class diagram으로 많이 표현
- 객체지향기법 사용 시 sw를 객체 간 상호작용으로 정의할 수 있다.
- class와 그들과의 연관성으로 표현, 숫자는 대응관계 (1:1 1:다 등)

Generalization
- structural model (class diagram)에서 많이 사용
- 상하위 class 개념.. 공통 기능 상속, 개발에 대한 작업량을 줄이고 복잡도 관리 가능
- 재사용, 중복성 제거의 개념
- 하위 클라스는 본인이 필요한 것을 특화하고 구체적으로 가시화

Object class arregation models
- UML에서 마름모로 표현한다.
- 객체가 객체 안에 있는 개념 (has relationship, part-of relationship)

Behavior Model
- 실행할 동적 행동을 모델링
- 시스템이 환경의 자극에 반응할 때 어떤 일이 발생하는지/발생해야 하는지 보여줌
- 자극의 유형: DATA/EVENT
Data-driven modeling (데이터 기반 모델링)
- 데이터 처리 중심
- input -> output, end-to-end가 명확
- 최근의 비즈니스 어플리케이션에도 많이 사용됨

Event-driven modeling (이벤트 기반 모델링)
- 전통적인 개발(Real-time system, GUI), Landline phone switching(전화, zoom)에 주로 사용
- 이벤트의 발생 중심
- 상태 기반 모델링
- State, Event(내/외부), Action 요소를 중심으로 시스템을 모델링
- State Diagram으로 표현

State machine model
- 실시간 시스템 모델링에 자주 사용
- StateChart -> UML 의 필수 부분, state machine model..
전자레인지 예시


Model-driven Engineering (MDE)
- 프로그램이 아닌, 모델이 개발 프로세스의 주요 결과물
- 프로그램은 모델에서 자동 생성
- 초기 단계
- 장점: 상위 레벨의 추상화, 새로운 플랫폼에 적은 비용
- 단점: 비용이 더 클수 있음, 모델이 추상화되어 있어 구현엔 맞지 않음
MDA(model driven architecture) 단계
- A computation independent model (CIM)
- System의 주요 domain에 대한 추상화를 진행한 모델
- A platform independent model (PIM)
- 구현과 무관한 system의 운영에 대한 모델
- 내/외부 event에 대한 반응과 시스템의 구조를 UML로 표현한다.
- Platform specific models (PSM)
- PIM을 각 플랫폼에 맞도록 변형한 모델
- PIM에 Platform-specific한 세부 사항을 기재한 layer가 추가된다.
소프트웨어공학 강의 자료와 타 블로그를 참고해 작성한 포스트입니다.
Software Engineering – System Modeling
Software Engineering – System Modeling
velog.io
'CS > 소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] Software Testing (1) | 2023.12.17 |
---|---|
[소프트웨어공학] Design and Implementation (1) | 2023.12.17 |
[소프트웨어공학] Architectural Design (0) | 2023.12.17 |