Screaming Interfaces – 사용자 인터페이스도 스스로 사용법을 외쳐야 한다.

클린 아키텍쳐의 21장의 커버 일러스트를 바탕으로 위 이미지를 ChatGPT 4o 모델로 생성했습니다.

소프트웨어 공학의 개념 중에 Robert C. Martin이 제안한 소리치는 아키텍처(Screaming Architecture)라는 설계 개념이 있습니다. 지원하는 사용 케이스를 아키텍처 자신이 스스로 소리쳐서(Screaming) 알려주는 개념입니다.

프런트엔드 개발에서 만드는 UI 또한 마찬가지입니다. 사용자 입장에서 인터페이스의 용도를 바로 파악할 수 있게 하는 것이 필요합니다. 이러한 저의 생각을 “소리치는 인터페이스”라는 용어로 제안하고 싶습니다.

사용 케이스와 변하는 도구

자, 여러분의 애플리케이션 아키텍처는 뭐라고 소리치는가? 상위 수준의 디렉터리 구조, 최상위 패키지에 담긴 소스 파일을 볼 때, 이 아키텍처는 “헬스케어 시스템이야." 또는 “재고 관리 시스템이야"라고 소리치는가? 아니면 “레일스(Rails)야”, “스프링(spring)/하이버네이트(Hibernate)야”, 아니면 “ASP야"라고 소리치는가?

아키텍처는 시스템을 이야기해야 하며, 시스템에 적용한 프레임워크에 관해 이야기해서는 안 된다. 당신이 헬스케어 시스템을 구축하고 있다면, 새로 들어온 프로그래머가 소스 저장소를 봤을 때 첫인상은 “오, 헬스케어 시스템이군"이어야만 한다. 새로 합류한 프로그래머는 시스템이 어떻게 전달될지 알지 못한 상태에서도 시스템의 모든 사용 케이스를 이해할 수 있어야 한다.

소리치는 아키텍처(Screaming Architecture) 본문 내용 중

로버트 마틴의 의견에 따르면 “변화가 빠른 개발 도구·환경은 고정 요소가 아니라, 상황에 맞게 교체할 수 있는 ‘선택지’로 남겨야 한다고 말합니다.”

휴대전화를 교체하듯이 프런트엔드 개발 환경은 높은 관심을 받으며 빠르게 변화하고 있습니다. 그러나 HTML · 접근성 표준처럼 수십 년째 변하지 않는 기본에 대해서는 상대적으로 관심이 적은 현상에 대해 저는 안타깝게 생각합니다.

오늘날 웹이 어느 플랫폼보다 가장 널리 쓰이게 된 계기가 웹의 창시자인 Tim Berners-Lee 가 의도한 디자인으로 범용적인 접근성을 우선시하여 생긴 파급력 때문인데 말이죠.

결론 - 사용성

웹의 힘은 보편성에 있습니다. 장애와 관계없이 모든 사람의 접근은 필수적인 측면입니다.
– Tim Berners-Lee, Accessibility | Our mission | W3C

“소리치는 아키텍쳐” 내용에서 “사용 케이스를 직접 소리쳐야 한다"고 말하듯, 사용자 인터페이스 또한 “어떻게 보여주는지"의 반 만큼만이라도 “무엇을 할 수 있는지” 사용성을 먼저 외쳐야 한다고 생각합니다.

언젠가 이들은 당신을 찾아와서 이렇게 말할 것이다.

“모델처럼 보이는 것들을 확인했습니다. 그런데 뷰와 컨트롤러는 어디에 있죠?”

그러면 당신은 응당 다음과 같이 답해야 한다. “아, 그것은 세부 사항이므로 당장은 고려할 필요가 없습니다. 나중에 결정할 겁니다.”

소리치는 아키텍처의 마지막 문단