티스토리 뷰

객체 지향은 자주 변경되는 기능이 아닌 안정적인 구조를 기반으로 시스템을 구조화함

구조 설계

소프트웨어 제품 설계의 두가지 측면

  • 기능: 제품이 사용자를 위해 무엇을 할 수 있는지에 초점
  • 구조: 제품의 형태가 어떠해야 하는지에 초점

요구사항 변경과 대비

  • 소프트웨어 분야에서 예외가 없는 유일한 규칙은 요구사항이 항상 변경된다는것
  • 설계가 어려운 이유는 오늘의 기능이 내일 변경될지도 모르는 요구사항을 수용할 수 있는 코드를 창조해야하지 때문
  • 미래에 대비하는 가장 좋은 방법은 변경을 예측하는것이 아닌 수용할 수 있는 설계를 하는것
  • 자주 변경되지 않는 객체 구조를 바탕으로 시스템 기능을 객체간의 책임으로 분배해야 함

기능과 구조

  • 구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현 (도메인 모델링)
  • 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템 행위로 표현 (유스케이스 모델링)

도메인 모델

  • 사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 함
  • 도메인모델이란 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 필요한 부분만 단순화해 구조화한 형태

멘탈 모델

  • 멘탈 모델이란 자신이 상호작용하는 사물들에 대해 갖는 모형을 의미
  • 제품을 설계할 때 제품에 관한 모든것이 사용자들이 제품에 대해 가지고 있는 멘탈 모델과 일치해야 함
    • 도메인 모델과 코드 설계가 일치해야 함

안정적인 재료: 구조(도메인)

도메인을 담을수 있는 객체지향

  • 최종 코드는 사용자가 도메인을 바라보는 관점을 반영해야함. (도메인 모델을 기반으로 설계해야함)
  • 객체지향을 사용하면 도메인 구조와 최대한 유사하게 코드를 구조화 할 수 있음
  • 코드의 구조가 도메인의 구조를 반영하면 도메인에 대한 이해를 바탕으로 코드를 이해하기 쉬움
  • 도메인에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 도메인 모델을 기반으로 코드를 만들면 변경에 쉽게 대처 가능

객체 지도

  • 안정적인 구조를 제공하는 도메인 모델을 기반으로 소프트웨어 구조를 설계하면 변경에 유연하게 대응 가능
  • 도메인 모델은 기능 구현시 참조할수 있는 궁극적인 지도

불안정한 재료: 기능

  • 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 글로 정리한것을 유스케이스라고함
  • 산발적으로 흩어져있는 기능에 사용자 목표라는 문맥을 제공함으로써 기능이 유기적인 관계를 가지게됨

유스케이스 예

도서 예약 유즈케이스 시나리오:

  1. 도서 예약:
    • 주요 목적: 회원이 원하는 도서를 예약한다.
    • 사전 조건:
      • 회원은 시스템에 로그인되어 있어야 한다.
      • 도서가 현재 대출 중이거나 예약 중이 아닌 상태여야 한다.
    • 주요 흐름:
      1. 회원은 도서관 홈페이지나 어플리케이션에 로그인한다.
      2. 회원은 도서 검색을 통해 예약하고자 하는 도서를 찾는다.
      3. 도서 상세 페이지에서 예약 버튼을 클릭한다.
      4. 시스템은 도서가 예약 가능한지 확인하고, 예약이 가능하면 예약을 완료한다.
      5. 예약이 완료되면 회원에게 예약 확인 메시지를 표시하고, 해당 도서의 예약 상태를 "예약 중"으로 변경한다.
    • 대안 흐름:
      • 4단계에서 도서가 이미 예약 중이거나 대출 중이라면, 시스템은 해당 정보를 회원에게 알리고 예약을 거부한다.

유스케이스 특성

  1. 유스케이스는 사용자와 시스템간의 상호작용을 보여주는 ‘텍스트’
    • 상호작용을 이야기 흐름으로 표현한 것
    • 다이어그램이 중요한것이 아님
  2. 유스케이스는 하나의 시나리오가 아닌 여러 시나리오들의 집합
  3. 유스케이스는 단순히 기능을 나열하는것이 아닌 이야기를 통해 연관된 기능들을 함께 묶을 수 있음
  4. 유스케이스는 사용자 인터페이스(UI)와 관련된 세부 정보를 포함하면 안됨
  5. 유스케이스는 내부 설계와 관련된 정보를 포함하지 않음
  6. 유스케이스는 단지 사용자가 바라보는 시스템의 외부 관점만을 표현함

재료 합치기: 기능과 구조의 통합

  • 도메인모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안정한 기능을 서술하기 위해 가장 일반적으로 사용되는 도구
  • 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야 함

'독서 > 객체지향의 사실과 오해' 카테고리의 다른 글

chapter7. 함께 모으기  (1) 2023.12.22
chapter5. 책임과 메시지  (1) 2023.12.22
chapter4. 역할, 책임, 협력  (1) 2023.12.22
chapter3. 타입과 추상화  (0) 2023.12.22
chapter2. 이상한 나라의 객체  (0) 2023.12.22
댓글