brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 Aug 01. 2023

입자와 파동의 이중성을 소프트웨어 설계에 응용하기

한국의 마틴 파울러가 되기

요즘 푹 빠져 있는 김상욱 교수님의 강의를 보다가 문득 하나의 아이디어가 떠올랐습니다. 정확한 워딩은 아닐 수 있지만, 교수님의 다음 발언을 들을 때 번쩍 했습니다.

원자를 나눌 수 있다면,
구조가 있다는 것이다


이때 제가 느낀 느낌을 어떻게 말로 풀어낼 수 있을까요? 시도해 봅니다.


원자와 원소, 아원자, 파티클

재작년에 과학에 관심을 보이던 아이가 있어 썼던 <물질의 원소는 원자인가?>편이 떠오릅니다. 다시 열어 보니 박문호 박사님의 월말김어준 강의 덕분에 익숙해진 파티클들의 이미지가 있습니다.

 그리고, '원자와 입자'를 키워드로 구글링 해 보며 다음과 같은 내용도 찾아보았습니다.


모호함이 사라질 때까지 매개체를 풀어가기

과학적 사실뿐만 아니라 우리가 발견한 사실이 바뀔 수도 있다는 사실을 상기시켜 줍니다. 임춘봉 훈장님이 밥먹듯이 반복하시던 '인수분해가 왜 중요한지'가 떠올랐습니다. 이미 그에 대한 글은 <모호함이 사라질 때까지 매개체를 풀어가기>편에 정리한 바 있습니다.


이렇게 글을 쓰고 보니 원자의 구조를 알고 놀랐던 과학자들의 심정을 다르게 응용할 수 있었습니다.

간단해 보였던 로직이 엄청난 복잡도로 커지는 경우도 흔히 있습니다. 예를 들어 이커머스에서 카드 할인 제휴업무를 알기 전에는 정산이 왜 어려운지 알지 못했고, 중국에서 리테일 IT 서비스에 참여하기 전에는 상품 정보와 결제 정보가 함께 수집되기 어려운 이유를 알지 못했습니다.


처음에는 원자로 본 정도는 아니더라도 잘 몰라서 혹은 시간이나 자원 부족으로 간단하게 판단했던 업무에서 구조가 드러나는 장면을 상상한 것인데, 표현이 어렵네요.


아무튼 여기까지 기록한 대로 물리학 강의를 들으며 받은 영감이 소프트웨어 관련한 제 경험과 지식과도 연관성이 보인다는 사실을 발견하는 짜릿함을 즐기고 있었습니다.


입자와 파동의 이중성은 설계에도 적용할 수 있지 않을까?

그러다가 흥미로운 도전을 꿈꾸게 되었습니다. 양자역학이 발견한 일종의 딜레마 즉, 빛이 입자이면서 동시에 파동이라는 발견이 물리의 새로운 관점을 제시했다고 합니다. 그런데 이는 물리에만 국한된 발견은 아니란 생각이 들었습니다. 그래서, 내가 속한 분야에도 똑같이 적용할 수 있지 않을까 질문을 던졌습니다.


UML을 열심히 쓰던 시절 다이어그램 검증을 위해사 행위와 구조의 상호 의존 관계로 검증했습니다. 예를 들어 유스케이스도를 그리면 그에 대응하는 클래스의 오퍼레이션이 있나 확인하는 식으로 검증할 수 있습니다. 그리고 순차도(seqence diagram)를 그리면 클래스의 관계가 호출할 수 있도록 연결되어 있는지를 그리고 호출할 오프레이션이 있는지 검증했습니다.


구조와 행위 혹은 동적 양상과 정적 구조는 이중성이라고 볼 수도 있습니다. 입자와 파동이라는 이분법은 적어도 객체지향 지식에 익숙한 저에게는 객체와 이벤트(사건)로 일대일대응시킬 수 있을 듯이 보였습니다.


찾아보니 <DI 적용도 생각하는 힘과 함께 하자> 이후로 일 년 동안 도메인 스토리텔링 응용 연재를 잊고 있었습니다. 물리학 강의 덕분에 <모호함이 사라질 때까지 매개체를 풀어가기>편도 찾아내고 흥미로운 도전 과제도 찾았습니다. 다만, 글이 길어져 발견의 즐거움에 대한 기록만 남기고 실제 사례는 다음에 별로의 글로 다루도록 하겠습니다.


지난 한국의 마틴 파울러가 되기 연재

1. 현실과 시스템의 불일치, 그리고 UX의 역할

2. 대상과 조건 그리고 자기 속도에 부합하는 조건 만들기

3. Code Smells 비유와 기술 부채

4. 기술 부채를 Code Smell로 관리할 수 있는가?

5. 형상 구성단위로 TestCase 유용할까?

6. 설계 요소의 사분면

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari