소프트웨어공학

[소프트웨어공학] System Modeling

gyujh 2023. 12. 17. 20:08

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