ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [객체지향의 사실과 오해] 기능과 구조의 통합
    Book/객체지향의 사실과 오해 2023. 3. 14. 16:11
    728x90

    기능설계 VS 구조설계

    • 설도메인 모델계는 기능(function) 측면의 설계와 구조(structure) 측면의 설계로 구성
    • 기능 측면의 설계는 제품이 사용자를 위해 무엇을 할 수 있는지 초점
    • 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점
    • 설계는 기능과 구조 두가지 측면을 녹여 조화를 이루도록 하는 것
    • 변경되는 요구사항에 유연하게 대처할 수 있는 안정적인 구조를 갖춰야함
    • 객체지향은 객체의 구조에 집중하고 기능이 객체의 구조를 따르게 함

    기능과 구조

    • 사용자에게 제공할 기능과 기능을 담을 안정적인 구조
    • 기능은 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스
    • 구조는 시스템의 기능을 구현하기 위한 기반으로, 기능 변경을 수용할 수 있도록 안정적
    • 기법
      • 구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현
      • 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현
      • 유스케이스 모델링 : 기능을 수집하고 표현하기 위한 기법
      • 도메인 모델링 : 구조를 수집하고 표현하기 위한 기법

     

    구조

    도메인 모델

    • 도메인 : 사용자가 프로그램을 사용하는 대상 분야
    • 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태
    • 이해관계자들이 바라보는 멘탈 모델(Mental Model)
      • 멘탈 모델이란 사람들이 자기 자신, 다른 사람, 환경, 자신이 상호작용하는 사물들에 대해 갖는 모형
    • 사용자 모델, 디자인 모델, 시스템 이미지를 포괄
      • 설계자는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 반영하도록 해야함
    • 객체지향을 이용하면 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지 모두가 유사한 모습을 유지하도록 만드는 것이 가능
      • 연결 완전성, 표현적 차이

    표현적 차이

    • 소프트웨어 객체와 현실 객체 사이의 의미적 거리(=의미적 차이)
    • 은유를 통해 현실 객체와 소프트웨어 객체 사이의 차이를 최대한 줄이는 것이 핵심
    • 도메인에 대해 생각하는 개념을 은유해야함 => 도메인 모델을 은유 => 도메인 객체를 은유
    • 도메인을 이해하면 코드를 이해하기 쉬워짐

    안전성

    • 도메인 모델이 제공하는 구조가 안정적
    • 사용자 모델에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 사용자 모델을 기반으로 설계와 코드를 만들면 변경에 쉽게 대처할 수 있을 가능성이 커짐

     

    기능

    유스케이스

    • 기능적 요구사항이란 시스템이 사용자에게 제공해야하는 기능의 목록을 정리한 것
    • 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것
    • 일차 액터 : 시스템의 서비스 중 하나를 요청하는 이해관계자, 하나의 목표를 가지고 유스케이스를 시작하는 액터
    • 사용자들의 목표를 중심으로 시스템의 기능적 요구사항들을 이야기 형식으로 묶을 수 있음

    특성

    1. 유스케이스는 사용자와 시스템 간의 상호작용을 보여주는 텍스트
    2. 하나의 시나리오가 아니라 여러 시나리오들의 집합
      1. 시나리오는 유스케이스 인스턴스
    3. 유스케이스는 단순한 피처(feature) 목록과 다름
      1. 피처는 시스템이 수행해야 하는 기능의 목록을 단순하게 나열한 것
      2. 단순히 기능을 나열하는 것이 아니라 연관된 기능들을 묶을 수 있음
    4. 유스케이스는 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 함
      1. 자주 변경되는 요소는 배제하고 시스템의 행위에 초점
      2. 사용자 인터페이스를 배제한 유스케이스 형식을 본질적인 유스케이스라고 함 
    5. 유스케이스는 내부 설계와 관련된 정보를 포함하지 않음
      1. 사용자가 바라보는 시스템의 외부 관점만을 표현
      2. 유스케이스는 객체의 구조나 챔임에 대한 어떤 정보도 제공하지 않음

     

    기능과 구조 통합

    도메인 모델, 유스케이스

    • 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야함
    • 책임-주도 설계 방법은 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보게 함으로써 유스케이스와 도메인 모델을 통합
    • 연결 완전성 : 도메인 모델링에서 사용한 객체와 개념을 프로그래밍 설계에서의 객체와 클래스로 매끄럽게 변활할 수 있는 것
    • 가역성 : 코드에서 모델로의 매끄러운 흐름을 의미하는 것
    • 도메인 모델을 기반으로 시스템의 기능을 구현
    • 도메인 모델과 코드를 연관
    728x90

    댓글

Designed by Tistory.