호우동의 개발일지

Today :

article thumbnail

시스템 모델링

  • 시스템의 추상 모델을 개발하는 프로세스
    • 각 모델은 시스템의 서로 다른 뷰나 관점을 나타냄
    • UML 다이어그램 유형 기반 그래픽 표기법으로 나타냄

  • 모델의 단계별 사용
    • 요구공학 프로세스 : 시스템의 상세 요구사항을 이끌어내기 위해 사용
    • 설계 프로세스 : 엔지니어들에게 시스템을 설명하기 위해 사용
    • 구현 후 : 시스템의 구조와 동작을 문서화하기 위해 사용

 


기존 및 새 시스템의 모델 개발

  • 요구공학 중에 사용됨
  • 기존 시스템의 모델
    • 기존 시스템이 무엇을 하는지 알려줌
    • 이해당사자간 논의를 강점과 약점에 집중하는 데 사용

  • 새 시스템의 모델
    • 제안된 요구사항들을 다른 시스템 이해당사자들에게 설명하는 데 사용
      • 엔지니어들은 이 모델들을 설계를 논의하고 시스템을 문서화하는 데 사용

 


시스템 모델

  • 검토 중인 시스템의 추상화(시스템의 다른 표현이 아님)
    • 이해하기 쉽도록 자세한 부분 제외
    • 추상화는 시스템 설계를 계획적으로 단순화하고 가장 현저한 특성을 골라냄
    • 표현하는 개체에 대한 모든 정보를 유지해야 함

  • 여러 관점에서 시스템을 표현하기 위해 여러 모델들을 개발 가능
    • 외부 관점 - 시스템의 콘텍스트나 환경을 모델링
    • 상호 작용 관점 - 시스템과 그 환경 사이의 상호 작용을 모델링
    • 구조 관점 - 시스템의 구성이나 시스템에 의해 처리되는 데이터의 구조를 모델링
    • 동작 관점 - 시스템의 동적인 행동을 모델링

 


시스템 그래픽 모델들을 사용하는 방법

  • 토론을 자극하고 초점을 맞추기 위한 방법
    • 토론 대상 : 시스템 개발에 관여하는 소프트웨어 엔지니어
    • 불완전한 모델링을 사용할 수 있으며, 모델링 표기법을 약식으로 사용 가능

  • 기존의 시스템을 문서화하는 방법
    • 모델을 사용하여 시스템의 일부분을 문서화하는 방법
    • 완전할 필요는 없으나, 올바른 표기법을 사용하여 시스템의 설명이 정확해야 함

  • 시스템 구현을 생성하는 데 사용될 수 있는 상세 시스템 설명
    • 모델기반 개발 프로세스의 일부로 모델이 사용되는 경우 - 완전하고 정확해야 함
    • 시스템의 소스코드를 생성하기 위한 기반으로 사용되므로 기호 혼동 주의

 


UML(Unified Modeling Language)

  • 객체지향 모델링의 표준 언어
  • 13개의 다이어그램 유형
    • 여러 서로 다른 유형의 시스템 모델을 지원
    • 대부분 5개의 다이어그램 유형으로 시스템의 핵심 표현

다양한 다이어그램

 


UML 다이어그램 유형 설명

  • 다이어그램 다이어그램 : 프로세스나 데이터 처리와 관련된 액티비티를 보여줌
  • 유스케이스 다이어그램 : 시스템과 그 환경 간의 상호 작용을 보여줌
  • 시퀀스 다이어그램 : 액터와 시스템 간, 시스템 컴포넌트들 간의 상호 작용을 보여줌
  • 클래스 다이어그램 : 시스템의 객체 클래스들과 클래스들 간의 연관을 보여줌
  • 상태 다이어그램 : 시스템이 내부 또는 외부 이벤트에 대해 어떻게 반응하는지 보여줌

 

 


콘텍스트 모델


시스템 경계

  • 어떤 것이 개발되는 시스템에 포함되는지 결정하는 기준
  • 시스템 명세 초기 단계에 결정
    • 이해당사자들과 작업하며 결정
    • 시스템 경계의 정의는 가치중립적 판단이 아님
      → 기술적이 아닌 다른 요소에 의해 정해질 수 있음
  • 시스템 경계에 대한 결정을 내면, 단순한 아키텍처 모델을 생성
  • 콘텍스트와 시스템이 환경에 가지는 의존성에 대해 정의

 


콘텍스트 모델

시스템 컨텍스트 예시
시스템 컨텍스트 예시

  • 여러 자동화된 시스템을 포함하는 환경을 보여줌
    • 포함된 시스템들과 명세하려는 시스템 간 관계들의 유형을 보여주진 않음

  • 시스템과 외부 시스템의 관계는 반드시 고려
    ← 정의하려는 시스템의 요구사항과 설계에 영향 줄 수 있음

    • 관계 예시
      • 외부 시스템과 시스템 간의 데이터 관계(생성, 소비, 공유)
      • 외부 시스템과 시스템과의 연결 여부(직접 연결, 네트워크 연결 등)
      • 시스템의 물리적 위치(같은 장소, 다른 건물 등)

  • 간단한 모델은 비즈니스 프로세스 모델 같은 다른 모델들과 같이 사용
    • 비즈니스 프로세스 모델 : 특정 소프트웨어 시스템이 사용되는 자동화된 프로세스들과 사람들

 


UML 액티비티 다이어그램

Mencare 강제수용 프로세스
Mencare 강제수용 프로세스

  • 프로세스들의 액티비티들과 한 액티비티에서 다른 액티비티로 제어의 흐름을 보여줌
  • 각 요소 및 표기법
    • 채워진 원 : 프로세스의 시작
    • 이중 채워진 원 : 프로세서의 끝
    • 모서리가 둥근 사각형 : 액티비티
      • 특정한 서브프로세스들이 수행되어야 한다는 뜻.
      • 액티비티 차트에 객체를 포함시킬 수도 있음

    • 화살표 : 작업의 흐름
      • 흐름의 조건을 나타내는 가드를 표시 가능

    • 굵은 막대 : 액티비티 조정
      • 굵은 막대로부터 여러 액티비티로 흐름이 연결된 경우 병렬 수행 가능

 

 


상호 작용 모델


상호 작용 모델

  • 상호 작용 모델링
    • 사용자 상호 작용 모델링 : 사용자 요구사항을 확인하는데 도움
    • 시스템 간 상호 작용 모델링 : 일어날 수 있는 시스템 간 통신 문제를 밝혀줌
    • 컴포넌트 상호 작용 모델링
      제안된 시스템 구조가 요구되는 수준의 시스템 성능과 확실성이 제공되는지 이해되는지 도움

  • 상호 작용 모델링의 두 가지 접근법
    • 유스케이스 모델링 : 시스템과 외부 에이전트와의 상호 작용을 모델링
    • 시퀀스 다이어그램 : 시스템 컴포넌트들 간의 상호 작용 모델링
    • 두 개 같이 사용 가능
      • 서로 다른 수준의 상세함으로 상호작용 가능
      • 상위 수준 유스케이스와 관련된 상호작용의 상세 내역을 시퀀스 다이어그램으로 문서화

 


유스케이스(UML의 기본요소)

  • 그래픽 모델과 구조적인 글을 이용하여 사용자와 시스템 사이의 상호 작용을 설명하기 위한 방법
  • 사용자가 어떤 인터페이스를 통해 시스템에 무엇을 기대하는지 간단한 기술
  • 구성방법
    • 상호 작용에 참여하는 액터(actor)를 식별
    • 상호 작용의 형태에 이름을 붙임
    • 시스템과의 상호작용을 나타내기 위한 추가적인 정보 기입

 


유스케이스 모델링

  • UML 시퀀스 다이어그램 또는 상태 다이어그램 같은 여러 그래픽 모델이나 글
  • 유스케이스 다이어그램
    • 상호 작용을 단순 개략적으로 보여줌
    • 완전한 상호작용을 위해서는 상세 내역 추가(글, 표, 시퀀스 다이어그램 등)
  • 예시 
    액터 병원 접수원, 환자 정보 시스템
    설명 접수원은 Mentcare 시스템에서 보건당국에 의해 관리되는
    일반 환자 기록 데이터베이스를 데이터를 전송할 수 있다. … 생략
    데이터 환자 개인정보, 치료 요약
    자극 접수원의 명령 실행
    반응 환자 정보 시스템이 갱신되었음을 확인
    주석 접수원은 환자 정보와 환자 정보 시스템이 접근하기에 적합한 보안허가가 있어야 한다.

유스케이스 모델링
유스케이스 모델링

  • 고수준의 유스케이스 다이어그램을 이용하여 문서화
    • 시스템 요구사항에 가능한 모든 상호 작용을 유스케이스를 이용하여 표현

  • 시스템과 사용자 또는 다른 시스템 사이에서의 개별적인 상호 작용을 식별
    • 각각의 유스케이스에 대해서는 글로 작성한 설명을 넣어 문서화

  • 시나리오를 더 상세히 개선시키기 위한 UML의 다른 모델과 연결될 수 있음
    • 간단한 설명을 추가할 수 있다.
      • “추가적으로, 협진을 할 때 도움이 되도록 문자 채팅 창이 열리게 된다.
        음성 통신을 위한 전화 호출도 개별적으로 마련될 수 있을 것으로 생각한다.”

요구공학 과정에서의 유스케이스

  • UML은 객체지향 모델링을 위한 표준
  • 유스케이스는 요구사항을 논하기에 유용하지 않음
    • 너무 상세함
    • 이해 당사자들은 유스케이스라는 용어를 이해 못 함

 


복합 유스케이스 다이어그램

복합 유스다이어그램

서로 다른 유스케이스를 보여줌

  • 복합 유스케이스 다이어그램 표현 방법
    • 한 시스템에서 가능한 모든 상호작용을 포함하게 구성 가능
    • 여러 다이어그램을 작성하되,
      각 다이어그램이 관련된 유스케이스를 보여주도록 구성 가능

 

시퀀스 다이어그램

  • 액터와 시스템의 객체들 간의 상호작용, 객체들 간의 상호작용을 모델링
    • 시퀀스 다이어그램은 풍부한 문법을 가지고 있음

  • 특정 유스케이스나 유스케이스 인스턴스에서 일어나는 상호작용의 순서를 보여줌

 

시퀀스

 

환자 정보 조회의 시퀀스 다이어그램

  • 상단에 수직으로 나열된 점선
    • 관련된 객체들과 액터들

  • 주석이 달린 화살표
    • 객체들 간의 상호작용
    • 객체의 호출, 반환값, 인자

  • 점선 위의 사각형
    • 관련 객체의 생명선

  • 위에서 아래로 시간 순 배치
    • 상호작용


데이터 전송의 시퀀스 다이어그램

시퀀스

 

  • 두 가지 특징을 추가 확인 가능
    • 시스템의 액터들 간의 직접 통신
    • 오퍼레이션 순서의 일부로서 객체의 생성

  • 모든 상호 작용을 다이어그램에 포함시킬 없음
    • 시퀀스 다이어그램을 코드 생성이나 상세 문서화에 사용하지 않는 경우

 


구조모델

  • 시스템을 구성하는 컴포넌트들과 그들 간의 관계로 시스템 구성을 보임
    • 정적/동적 모델 둘 다 가능

  • 시스템 아키텍처를 논의하고 설계할 때 생성
  • 아키텍처 설계는 소프트웨어 공학에서 중요한 주제
  • 아키텍처 모델을 표현하는데 UML 컴포넌트, 패키치, 배치 다이어그램 등 사용

클래스 다이어그램

  • 클래스들 간의 연관을 보여주는 객체지향 시스템 모델을 개발할 때 사용
    • 클래스 : 한 가지 종류의 시스템 개체를 일반적으로 정의한 것
    • 연관 : 클래스들 사이에 어떤 관계가 있다는 것을 표시(클래스 사이의 연결)
    • 그와 연결된 클래스에 대해 어느 정도 알고 있어야 가능

  • 소프트웨어 공학 프로세서에서의 단계별 개체
    • 모델을 개발할 때 : 실세계의 무엇인가를 표현(환자, 처방, 의사 등)
    • 구현 시: 시스템에서 처리되는 데이터를 표현하는 구현 객체 정의
    • UML 클래스 다이어그램은 상세 수준을 다르게 표현 가능

모델 개발 시의 클래스 다이어그램

클래스 다이어그램

  • 작성법
    • 클래스 이름을 상자 안에 기입
    • 선을 연결하여 연관 존재 표시

  • 시맨틱 데이터 모델랑이랑 비슷하게 생김
    → 시맨틱 데이터 모델 표현하는 데 사용 가능
  • 시맨틱 데이터 모델
    • 데이터베이스 설계에 사용됨
    • 데이터 엔티티들과 연관된 속성 보여줌
    • 데이터 엔티티들 간의 관계 보여줌

 

구현시의 클래스 다이어그램 작성법

  • 객체를 더 상세하기 정의하기 위해 작성
    • 속성(객체의 특성) 정보 추가
    • 오퍼레이션(객체의 함수) 정보 추가

  • UML에서는 클래스를 표시하는 단순한 사각형을 확장하여 속성과 오퍼레이션을 보여줌
  • UML 시맨틱 데이터 모델 표현
    • 시맨틱 데이터 모델의 엔티티 :
      단순화된 객체 클래스
    • 속성 : 객체 클래스 속성
    • 관계 : 객체 클래스들 간 연관에 이름을 붙임

그림

  • 객체 클래스 이름 : 제일 윗부분
  • 클래스 속성 : 중간 부분
  • 객체 클래스와 연관된 오퍼레이션 : 제일 아랫부분

일반화

  • 복잡도를 다루기 위해 사용하는 기술
    • 모든 것의 상세한 특징을 배우는 것보다 일반적인 클래스를 배우고 이 클래스들의 특징을 배움
    • 일반적인 서술은 모든 클래스 구성원에 적용
    • 예) 다람쥐와 쥐는 설치류 클래스의 구성원이므로 설치류의 특징을 공유

  • 시스템 모델링할 때 클래스들에 대해 일반화와 클래스 생섬 범위 검사하는 것은 유용
    • 공통 정보가 한 곳에서만 유지된다는 것을 의미하니까
    • 변경할 때마다 모든 클래스를 살펴볼 필요가 없어짐

 

일반화 계층구조

일반화 계층 구조

  • 일반화를 표시하기 위한 특수한 연관 유형
    • 화살촉이 부모 클래스를 가리킴

  • 여기서는 세 가지 유형의 병원 의사가 있음
    • 수련의, 전공의, 전문의

상세내역이 추가된 일반화 계층구조

 

상세내역 추가

 

  • 상위 수준 클래스와 연관된 속성과 오퍼레이션은
    하위 수준 클래스에서도 연관
    • 하위 수준 클래스들은 속성과 오퍼레이션을 상속받음

 

집합

 

집합

  • UML에서 제공하는 특별한 유형의 클래스들 간 연관
    • 한 객체(전체)가 다른 객체들(부분)로 구성된다는 의미
    • 집합을 정의하기 위해서 전체에 해당하는 객체 쪽 연결에 마름모 모양을 추가