13. 모델링 - 클래스 설계의 토대

내용


악마를 불러들이기 쉬운 User 클래스

  • 너무 범용적이다.

모델링으로 접근해야하는 구조

  • 시스템이란?

    • 이족 보행 시스템

    • 음파를 통한 회화 시스템

    • 자동차 시스템

      • 시스템은 목적달성을 위한 수단

      • 기술의 본질은 능력을 확장하는 것

  • 모델이란?

    • 시스템의 구조를 설명하기 위해 사용되는 것

  • 정리하자면..

    • 시스템은 목적을 달성하기 위한 수단이고,

    • 모델은 시스템의 구성 요소

      • 모델은 목적을 달성하기 위한 수단의 일부를 개념화한 것.

  • 소프트웨어 설계에서의 모델?

    • 모델은 '특정 목적 달서을 위해서 최소한으로 필요한 요소를 갖춘 것'

    • e.g. 주문 시의 상품 모델, 배송 시의 상품 모델

안 좋은 모델의 문제점과 해결 방법

  • User 클래스

    • 문제점, '여러 목적에 무리하게 사용되고 있으모 모델링이 되어있지 않음.'

  • 어떻게 해결해야하나?

    • User -> 사용자, 이용자

      • 사용자 -> 시스템 사용자

    • 모델이란 '특정 목적 달성을 위해 최소한으로 필요한 요소를 갖춘 것'

      • User -> 개인 계정, 법인 계정, 프로필, 회사 개요, 직무 경험..

      • '현실 세계의 물리적인 존재'와 '정보시스템에 있는 모델' 은 일대다 대응 되는 경우가 많다.

  • 모델링이 되지 않은 이유.

    • 모델을 단순히 '대상' 으로 해석하고 있기 때문

    • 모델은 목적 달성을 위한 최소한의 부분임을 잊지 말것.

  • 모델을 다시 확인하는 방법

    • 해당 모델이 달성하려는 목적을 모두 찾아낸다.

    • 목적별로 모델링을 다시 수정한다.

    • 목적 중심 이름 설계를 기반으로 모델에 이름을 붙인다.

    • 모델에 목적 이외의 요소가 들어가 있다면 다시 수정한다.

  • 모델과 구현은 반드시 서로 피드백하기

    • '모델 = 클래스' 가 아니다.

    • 일반적으로 모델 하나에 여러개의 클래스로 구현된다.

    • 클래스 설계 시, 미처 인지하지 못했던 점을 확인한다면 모델도 개선해야한다. (서로 피드백)

기능성을 좌우하는 모델링

  • 기능을 제대로 발휘하려면 '개념의 정체' 와 '뒤에 숨어 있는 중요한 목적' 을 잘 파악해야한다.

  • e.g. '상품 구입'

    • 상품 구매의 진짜 목적은 무엇인가?

    • 매매 계약

      • 어떤 방법으로 지불하는 지 등에 대한 개념도 있어야한다.

  • 뛰어난 변환 능력을 갖춘 모델을 설계하는 것이 곧 기능성의 혁신으로 이어진다.

    • 깊은 모델

      • 본질적으로 과제를 해결하고, 기능성 혁신에 공헌하는 모델

정리


  • '현실 세계의 물리적인 존재'와 '정보시스템에 있는 모델' 은 일대다 대응 되는 경우가 많다.

  • 목적 중심 이름 설계

  • 단일 책임 원칙

  • 클래스 설계 시, 미처 인지하지 못했던 점을 확인한다면 모델도 개선해야한다. (서로 피드백)

참고


  • https://product.kyobobook.co.kr/detail/S000202521361

Last updated

Was this helpful?