엔지니어링/설계
[소프트웨어 아키텍처 101] 2. 아키텍처 사고
[소프트웨어 아키텍처 101] 2. 아키텍처 사고
2024.05.07인상깊은 부분기술 폭2장에서도 1장과 마찬가지로 기술폭에 대한 언급이 나와서 좀 더 생각해봄문제를 해결할 수 있는 특정 기술보다는, 그 문제를 해결할 수 있는 여러 기술을 알라는 조언으로 생각하는 게 좋겠음내가 알던 좋은 아키텍트 겸 리더는 훌륭한 개발자로 깊이를 만든 후 폭을 넓힌 것 같음. 혹은 둘 다 동시에 진행한 것으로 보여짐.개인적인 경험으로 미루어 볼 때 깊이가 없으면 폭을 넓히기도 쉽지 않음.기본적으로 어떤 문제를 해결하기 위해 다양한 솔루션을 확인하고, 특정 기술 한 두 가지 정도는 뾰족하게 가져가야 좋을 것 같음.경매 시스템의 트레이드 오프개인적으로 마음에 드는 예제 p60 ~ p63요약아키텍처 사고 방식은 크게 4 가지로 구성아키텍처와 설계의 차이 이해 및 개발팀과 어떻게 협력해야할 지..
[소프트웨어 아키텍처 101] 1. 서론
[소프트웨어 아키텍처 101] 1. 서론
2024.05.06서문이 책은 지난 10년 동안 일어난 모든 혁신과 더불어 오늘날의 새로운 구조와 관점에 부합하는 새로운 지표를 바탕으로 소프트웨어 아키텍처를 현대적인 관점에서 살펴본다.이 책의 부제는 '엔지니어링 접근 방식'이다.기존 소프트웨어 아키텍처에서 당연시됐던 많은 공리들을 최근 생태계와 설계 아키텍처의 관점에서, 그리고 요즘 전반적인 추세와 비교하여 다시 한번 돌아보겠다.인상깊은 부분아키텍처를 공부하기 어려웠던 이유아래와 같은 이유로 아키텍처에 대한 공부를 하기 어려웠군.소프트웨어 아키텍처의 역사는 과거 아키텍트들의 시도가 난잡하게 얽혀있음소프트웨어 아키텍처에 관한 자료는 대부분 역사적인 연관성을 강조함위키피디아 페이지를 읽다보면 종잡을 수 없는 약어들로 광활한 지식의 세계로 상호 참조하는 링크들을 어렵잖게 발..
디미터 법칙(Law of Demeter)과 묻지 말고 시켜라(Tell, Don’t Ask)
디미터 법칙(Law of Demeter)과 묻지 말고 시켜라(Tell, Don’t Ask)
2022.03.13💡 Oreilly의 Implementing Domain-Driven Design, 조영호님의 객체지향의 사실과 오해, 로버트 C. 마틴의 Clean Code을 인용하여 두 원칙을 설명하고 있습니다. 자세한 출처는 포스팅 하단에 적어두겠습니다. 이 글은 킹갓제너럴 동료 조셉님이 인싸이트를 제공해주어 작성하게 되었습니다 (🙌 감사) 디미터 법칙(Law of Demeter [Appleton, LoD]) 과 묻지 말고 시켜라(Tell, Don’t ASK [PragProg, TDA] 은 Aggregates 을 구현할 때 사용할 수 있는 설계 원칙이며, 두 가지 원칙 모두 메시지를 먼저 결정하고 객체가 메시지를 따르게 하도록 설계하여 정보 은닉을 강조한다. 송신자는 수신자가 어떤 객체인지 모르지만 자신이 전송한 메..
객체지향 도메인 모델 설계와 멘탈 모델의 연관성
객체지향 도메인 모델 설계와 멘탈 모델의 연관성
2020.12.12최근에 객체지향의 사실과 오해(조영호) 이라는 책을 읽던 중 도메인 모델 설계을 멘탈 모델(심성모형)을 통해 설명하는 부분에서 충격을 받았다. 어떻게 이 두 개념의 연관을 이렇게 지을 수 있었을까? 멘탈 모델(심성모형) 나는 인간중심디자인(Human Centered Design)이라는 수업에서 멘탈모델에 대해 배웠었고, DB 모델링이나 프로그래밍을 통해 설계도 조금은 익숙한데 이 두 개념을 전혀 연관을 짓지 못했다. 멘탈모델에 대해 다시 알아보고 싶어서 구글링을 하던 중 귀여운 사례로 멘탈 모델에 대해 설명하는 글을 발견했다. 아래 글을 요약하자면 멘탈 모델이란 어떤 사물이 어떻게 동작할 것이라는 믿는 사고 방식이고, 개개인마다 동일한 사물에 대해서도 멘탈 모델이 다르기 때문에 발생한 귀여운 해프닝에 대..
[책] 객체지향의 사실과 오해 요약(5)
[책] 객체지향의 사실과 오해 요약(5)
2020.10.105. 책임과 메시지 자율적인 책임 설계의 품질을 좌우하는 책임 자신의 의지에 따라 증언할 수 있는 자유 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. (어떤 책임이 있는 지 구체적으로 세세하게 정하지 말라는 뜻) 너무 추상적인 책임 어떤 책임이 자율적인지를 판단하는 기준은 문맥에 따라 다르다는 사실에 유의하라. 재판이라는 협력 안에서는 '증언하라'라는 책임이 무자 장수의 자율권을 보장하는 가장 적절한 수준의 책임이지만 다른 상황에서는 오히려 '설명하라'라는 책임이 자율권을 보장하는 최선의 선택이 될 수 있다. 어떤 책임이 가장 적절한가는 설계 중인 협력이 무엇인가에 따라 달라진다. 성급한 일반화의 오류를 피하고 현재의 문맥에 가장 적합한 책임을 선택할 수 있는 날카로운..
[책] 객체지향의 사실과 오해 요약 (4)
[책] 객체지향의 사실과 오해 요약 (4)
2020.10.104장 역할, 책임, 협력 최후 통첩 게임을 통해 인간이 어떤 본직절인 특성을 지니고 있느냐가 아니라 어떤 상황에 처해있느냐가 인간의 행동을 결정한다는 것을 설명한다. 즉, 각 개인이 처해 있는 정황 또는 문맥(context)이 인간의 행동 방식을 결정한다는 것이다. 여기서 인간의 행동을 결정하는 문맥(context)는 타인과의 협력이다. 가장 흔한 실수는 문맥을 고려하지 않은 채 객체가 가져야 할 상태와 행동부터 고민하기 시작하는 것이다. 객체의 행동(책임)보다는 협력을 먼저 고민하라. 훌륭한 객체지향 설계자는 객체들 간의 요청과 응답 속에서 창발하는 협력에 초점을 맞춰 설계한다. 협력이 자리를 잡으면 저절로 객체의 행동이 드러나고 뒤이어 적절한 객체의 상태가 결정된다. 어떤 협력에 참여하는 지가 객체에..
[책] 객체지향의 사실과 오해 요약 (3)
[책] 객체지향의 사실과 오해 요약 (3)
2020.10.093장 타입과 추상화 해리 백이 창조한 지하철 노선도의 핵심은 지도가 당연히 가져야 한다고 생각되는 정확성을 버리고 목적에 집중한 결과다. 승객이 꼭 알아야 하는 사실만 정확하게 표현되고 몰라도 되는 정보는 무시함으로써 이해하기 쉽고 단순하며 목적에 부합하는 지하철 노선도를 창조해낸 것이다. 해리 벡의 가장 위대한 업적은 지하철 노선도를 추상화한 것이다. 추상화를 통한 복잡성 극복 추상화의 정의 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 추상화는 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 본질에 집중하여 복잡성을 극복한다. 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이다. 복잡성..
[책] 객체지향의 사실과 오해 요약 (2)
[책] 객체지향의 사실과 오해 요약 (2)
2020.09.27이상한 나라의 객체 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제이다. - 레베카 워프스브록 객체지향 패러다임 객체지향 패러다임은 실세계와 같이 소프트웨어 세계 역시 인간이 인지할 수 있는 다양한 객체들이 모여 이루어져 있다는 믿음에서 출발한다. 하지만 현실세계와 소프트웨어 세계의 유사성은 여기까지이다. 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 그를 기반으로 새로운 세계를 창조하는 것이다. 객체 객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 ..
[책] 객체지향의 사실과 오해 요약 (1)
[책] 객체지향의 사실과 오해 요약 (1)
2020.09.26조영호님의 책 객체지향의 사실과 오해를 통해 그 동안 맹신에 가까웠던 객체지향에 대한 미신을 되짚어 보고, 진정한 객체지향이란 무엇인가에 대한 생각의 실마리를 열어 준다. 기존에 객체지향을 설명할 때 들었던 붕어빵 틀(클래스)과 붕어빵(객체)라는 것에서 벗어나보자. 총 7장으로 이루어져있으며, 각 장별 내용을 요약하여 실제 코딩할 때에도 객체지향적으로 설계할 수 있도록 연습할 계획이다. 1장 협력하는 객체들의 공동체 객체지향의 목표 : 실세계를 모방하는 것이 아니라, 고객과 사용자를 만족시킬 수 있는 새로운 세계를 창조하는 것 객체 지향을 설명할 때 실세계를 비유하는 이유? 실세계 모방이라는 개념은 실무적으로 부적합하지만, 객체지향이라는 용어에 담긴 기본 사상을 이해하고 학습하는 데는 효과적이기 때문이다..