13. 모델링 - 클래스 설계의 토대
내용
악마를 불러들이기 쉬운 User 클래스
너무 범용적이다.
모델링으로 접근해야하는 구조
시스템이란?
이족 보행 시스템
음파를 통한 회화 시스템
자동차 시스템
시스템은 목적달성을 위한 수단
기술의 본질은 능력을 확장하는 것
모델이란?
시스템의 구조를 설명하기 위해 사용되는 것
정리하자면..
시스템은 목적을 달성하기 위한 수단이고,
모델은 시스템의 구성 요소
모델은 목적을 달성하기 위한 수단의 일부를 개념화한 것.
소프트웨어 설계에서의 모델?
모델은 '특정 목적 달서을 위해서 최소한으로 필요한 요소를 갖춘 것'
e.g. 주문 시의 상품 모델, 배송 시의 상품 모델
안 좋은 모델의 문제점과 해결 방법
User 클래스
문제점, '여러 목적에 무리하게 사용되고 있으모 모델링이 되어있지 않음.'
어떻게 해결해야하나?
User -> 사용자, 이용자
사용자 -> 시스템 사용자
모델이란 '특정 목적 달성을 위해 최소한으로 필요한 요소를 갖춘 것'
User -> 개인 계정, 법인 계정, 프로필, 회사 개요, 직무 경험..
'현실 세계의 물리적인 존재'와 '정보시스템에 있는 모델' 은 일대다 대응 되는 경우가 많다.
모델링이 되지 않은 이유.
모델을 단순히 '대상' 으로 해석하고 있기 때문
모델은 목적 달성을 위한 최소한의 부분임을 잊지 말것.
모델을 다시 확인하는 방법
해당 모델이 달성하려는 목적을 모두 찾아낸다.
목적별로 모델링을 다시 수정한다.
목적 중심 이름 설계를 기반으로 모델에 이름을 붙인다.
모델에 목적 이외의 요소가 들어가 있다면 다시 수정한다.
모델과 구현은 반드시 서로 피드백하기
'모델 = 클래스' 가 아니다.
일반적으로 모델 하나에 여러개의 클래스로 구현된다.
클래스 설계 시, 미처 인지하지 못했던 점을 확인한다면 모델도 개선해야한다. (서로 피드백)
기능성을 좌우하는 모델링
기능을 제대로 발휘하려면 '개념의 정체' 와 '뒤에 숨어 있는 중요한 목적' 을 잘 파악해야한다.
e.g. '상품 구입'
상품 구매의 진짜 목적은 무엇인가?
매매 계약
어떤 방법으로 지불하는 지 등에 대한 개념도 있어야한다.
뛰어난 변환 능력을 갖춘 모델을 설계하는 것이 곧 기능성의 혁신으로 이어진다.
깊은 모델
본질적으로 과제를 해결하고, 기능성 혁신에 공헌하는 모델
정리
'현실 세계의 물리적인 존재'와 '정보시스템에 있는 모델' 은 일대다 대응 되는 경우가 많다.
목적 중심 이름 설계
단일 책임 원칙
클래스 설계 시, 미처 인지하지 못했던 점을 확인한다면 모델도 개선해야한다. (서로 피드백)
참고
https://product.kyobobook.co.kr/detail/S000202521361
Last updated
Was this helpful?