////
Search
Duplicate
🪠

Chapter 17. 내 애플리케이션은 뼈대가 약하다

오래된 애플리케이션은 무질서하게 확장되기 쉽다.
처음에는 잘 설계된 구조를 가지고 있다가 시간이 지남에 따라 일정 압박에 시달리며 무분별하게 증축되고는 한다.
이렇게 무질서한 구조는 우리에게 시스템의 설계를 변경하는 것과 전면적으로 재작성하는 것 중 하나의 선택을 강요하곤 한다.
전통적으로 많은 조직들이 이런 문제를 풀기 위해 아키텍트라는 역할을 두고 구조를 관리했다. 그러나 이는 소통 오류가 발생할 지점을 하나 더 늘릴 위험이 있다.
개발자들은 스스로 자신 시스템의 아키텍처를 이해하고 있어야 한다.
이를 방해하는 요인들은 다음이 있다.
시스템이 너무 복잡하여 전체 그림을 이해하는데 비용이 많이 든다.
시스템이 너무 복잡하여 전체 그림이 없다.
전체 그림이 없다 보니 긴급한 상황이 자주 발생하고 이를 막고자 간이 처방만 하게 된다.
⇒ 문제는 근본적으로 풀어내어야 한다.

시스템의 스토리텔링

이 기법은 최소한 두 사람이 필요하다.
먼저 한 사람이 다른 사람에게 다음과 같이 질문한다. “시스템의 아키텍처는 어떤가요?”
그러면 상대방은 최대 2~3개의 개념만을 가지고 시스템의 아키텍처를 설명한다.
이때, 설명을 듣는 당사자가 전혀 모르고 있음을 가정하고 쉽게 설명해야 한다.
이런 과정을 시스템의 핵심 설계와 관련 있는 중요 사항이 모두 나올 때까지 반복한다.
⇒ 시스템을 추상화하여 간략한 약도를 그릴 수 있게끔하라는 의미의 내용 같다.

네이키드 CRC

CRC는 클래스, 책임, 협력의 첫 글자를 따서 만든 용어다.
카드에 클래스의 이름, 책임, 협업 클래스를 기재한 후, 이들 간의 의존성을 연결하는 방법이다.
네이키드 CRC는 조금 더 발전된 형태로 카드를 인스턴스라고 가정한다.
그리고 각 인스턴스들이 어떻게 상호작용하는지 손으로 설명한다.

대화 음미

대화 내용이나 회의 내용 등, 명세한 내용과 코드가 다르다면, 그 이유를 알아내야 한다.
개발 팀이 같은 언어를 공유하고 있지 않거나 서로 다른 목표를 바라보고 있을 가능성이 있다.