💡 모델
- 설계 청사진
- 사물 특징, 관계 그림으로 나타낸 것
- 시스템 구조 설명
특정 목적 달성 위해 최소한으로 필요한 요소를 갖춘 것
💡 모델링
- 모델 만드는 활동
- 모델링 하지 않으면, 변경하기 어렵고 악마 불러들이는 코드 작성
1. 악마를 불러들이기 쉬운 User 클래스
- 모델링을 제대로 하지 않은 User 클래스는 버그를 한 움큼 머금은 악마 클래스
2. 모델링으로 접근해야 하는 구조
시스템
- 목적 달성 수단
- 이족 보행 시스템 : 이동 목적 달성
- 음파 통한 회화 시스템 : 의사 전달 목적 달성
시스템 구조와 모델링
- 편리한 시스템은 특징적 구조 가짐
- 모델
- 시스템의 특징적 구조 설명을 위한 것
특정 목적 달성 위해 최소한으로 필요한 요소를 갖춘 것
- 모델링
소프트웨어 설계와 모델링
3. 안 좋은 모델 문제점과 해결 방법
- 안 좋은 모델
- 여러 목적에 무리하게 사용
- 모델링한 것 처럼 보이기만 하는 클래스
- 여러 요소가 추가되어
일관성 잃은 모델
- 예: 주문, 배송 목적으로 나누지 않은 상품 모델
정보 시스템 활용
- 물리적인 시스템과 달리 정보 시스템만이 갖는 특징 활용
- 현실 개념을 정보 시스템 내 개념으로 만들어, 개념적 처리를 빠르게 수행하는 것
목적별로 모델링하기
- 개념을 표현하는 수단은 목적에 따라 이름과 형태가 달라짐.
물리적 존재
: 정보 시스템 모델
= 1 : N
모델 = 목적 달성 수단
- 모델 ≠ 대상
- 모델을 대상으로 해석하면 모든 목적 담김
- 데이터 거대화 + 일관성 없는 구조
- 모델 = 목적 달성 수단
- 목적 중심 이름 설계 필요
- 목적 달성에 적절한 모델링 가능
- 구체적인 이름
- 의미 범위가 좁은 이름
- 목적 나타내는 이름
단일 책임 = 단일 목적
- 목적 = 책임
클래스가 이뤄야 하는 목적은 반드시 하나
특정 목적 특화하도록 설계 → 변경 쉬운 고품질 구조
- 목적 먼저 확립 → 관심사에 따라 책임 정하기
모델을 다시 확인하는 방법
- 모델의 달성 목적 모두 찾기
- 목적 별 모델링 수정
- 목적 중심 이름 설계 기반으로 모델 작명
- 모델에 목적 외 요소 포함되면 재수정
모델과 구현은 반드시 피드백 순환
- 모델 ≠ 클래스
- 모델 = 클래스 * N
- 상품 = 상품 ID + 상품명 + 판매 가격 + 재고 수량
- 모델 → 클래스(코드) 과정에서 동작 필수 요소 간과하는 경우 다반
- 이 과정에서 지속적으로 모델에 피드백
- 모델 수정 → 모델 구조 개선
- 나중에 피 보기 싫으면 개발 초기부터 목적에 맞는 모델링에 목숨 걸자
4. 기능성을 좌우하는 모델링
숨어 있는 목적 파악
- 법적 내용이 시스템에 반영되어야 함
개념의 정체
, 숨겨있는 중요한 목적
에 유의
깊은 모델
- 기능성을 혁신하는 모델
- 뛰어난 변환 능력을 갖춘 모델
- 본질적 과제 해결 + 기능성 혁신에 공헌
- 한 번의 설계 아닌, 매일 개선을 반복하는 설계