Replies: 1 comment
|
다음은 본문의 내용을 ChatGPT를 통해 요약한 글입니다. 추가로 Napkin AI를 통한 시각화 자료도 같이 첨부하였습니다. 📌 가장 핵심적인 요약:
📌 좋은 설계란?
📌 도메인 모델이 중요한 이유:
📌 유스케이스의 목적과 한계:
📌 객체지향 설계의 핵심 원칙:
📌 결론(Nut shell):
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
🆕 새롭게 알게 된 점
"자주 변경되는 기능이 아니라, 안정적인 구조를 따라 역할, 책임, 협력을 구성하라. 이것이 이번 장의 주제다."
📖 핵심 내용 요약
1. 기능 설계 vs 구조 설계
2. 두 가지 재료: 기능과 구조
사용자의 목표를 만족시키기 위해, 책임을 수행하는 시스템의 행위로 표현.
사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현.
3. 안정적인 재료: 구조
1) 도메인 모델
도메인: 사용자가 프로그램을 사용하는 대상 분야.
모델: 대상을 추상화하고 단순화한 것.
사람들이 자기 자신, 다른 사람, 환경, 자신이 상호작용하는 사물들에 대해 갖는 모형.
사용자 모델, 디자인 모델, 시스템 이미지 → 3가지로 구분
2) 표현적 차이
3) 도메인 모델을 기반으로 코드를 작성하는 이유
표현적 차이는 줄어들고, 사용자의 멘탈 모델이 그대로 코드에 녹아들게 된다.
도메인 모델이 제공하는 구조가 상대적으로 안정적이기 때문.
변경에 쉽게 대처할 수 있을 가능성이 커진다.
→ 사용자에게 제공할 기능을 기술한 정보가 필요.
→ 소프트웨어의 기능을 기술하기 위해 유스케이스 라는 유용한 기법을 사용해왔다.
4. 불안정한 재료: 기능
1) 유스케이스
2) 유스케이스의 특성
핵심은 사용자와 시스템 간의 상호작용을, 일련의 이야기 흐름으로 표현하는 것.
하나의 시나리오가 아니라, 여러 시나리오들의 집합이다.
단순한 피처 목록과 다르다.
사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.
내부 설계와 관련된 정보를 포함하지 않는다.
유스케이스의 목적
3) 유스케이스는 설계 기법도, 객체지향 기법도 아니다
5. 재료 합치기: 기능과 구조의 통합
1) 도메인 모델, 유스케이스, 그리고 책임-주도 설계
변경에 유연한 소프트웨어를 만들기 위해서는, 유스케이스에 정리된 시스템의 기능을, 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야 한다.
견고한 객체지향 애플리케이션을 개발하기 위해서는, 사용자의 관점에서 시스템의 기능을 명시하고, 사용자와 설계자가 공유하는 안정적인 구조를 기반으로, 기능을 책임으로 변환하는 체계적인 절차를 따라야 한다.
도메인 모델의 속성 을 클래스의 인스턴스 변수 로, 협력 안에서의 책임 을 클래스의 메서드 로 변환했음에 주목하라.
시스템의 기능: 역할과 책임을 수행하는 객체들의 협력 관계를 통해 구현.
책임 할당의 기본 원칙: 책임을 수행하는 데 필요한 정보를 가진 객체에게 그 책임을 할당 → 관련된 상태와 행동을 함께 캡슐화 → 자율적인 객체
유스케이스 → 객체들의 협력 → 객체 안에 다른 객체를 포함하는 재귀적 합성 (객체지향의 기본 개념)
객체에 대한 재귀 → 객체지향의 개념을 모든 추상화 수준에서 적용 가능하게 하는 동시에, 객체지향 패러다임을 어떤 곳에서든 일관성 있게 적용.
2) 기능 변경을 흡수하는 안정적인 구조
도메인 모델을 기반으로 객체 구조를 설계하는 이유 → 도메인 모델이 안정적이기 때문
도메인 모델을 구성하는 개념은 비즈니스가 없어지거나 완전히 개편되지 않는 한, 안정적으로 유지된다.
도메인 모델을 구성하는 개념 간의 관계는, 비즈니스 규칙을 기반으로 하기 때문에, 비즈니스 정책이 크게 변경되지 않는 한, 안정적으로 유지된다.
→ 변경에 대한 파급효과를 최소화, 요구사항 변경에 유연하게 대응할 수 있는 시스템을 구축.
객제지향이 강력한 이유
코드의 변경으로부터, 도메인 모델의 변경 사항을 유추 가능.
가역성(↔연결완전성): 코드에서 모델로의 매끄러운 흐름을 의미하는 것.
도메인 모델의 진정한 목표
❓ 어려웠거나 이해가 부족했던 부분
💭 궁금한 점
💡 토론해 보고 싶은 질문
🌟 인상 깊었던 책의 내용
📌 기억에 남는 문장
🔎 적용 방법 고민
📚 관련 아티클 & 추가 자료
🔗 추천 자료
All reactions