모바일 앱 모듈화와 정보 은닉💊

최근 모바일 소프트웨어 아키텍처를 결정할 때 모듈화를 중요시한다. 모듈화를 할 때 신경 쓰는 것이 많지만 특히 신경 쓰는 부분은 ‘느슨한 결합’이다. 그리고 느슨한 결합을 위해 고려해야 할 원리 중 가장 중요한 원리는 단연 ‘정보 은닉’ 과 ‘캡슐화’이다. 정보 은닉은 모듈을 분할하기 위한 기본 원리이다. 정보 은닉은 모듈 외부에는 감추어야 하는 모듈의 책임에 따라 모듈을 분할할 수 있게 도와준다. 모듈은 변경될 가능성이 있는 책임을 내부로 감추고 쉽게 변경되지 않을 인터페이스를 모듈 외부에 제공하여 모듈 내부에 접근하지 못하도록 한다. 모듈이 감추어야 할 책임은 SRP원칙을 지키려는 노력의 열매이다. 모듈의 협력을 해야 하는 또 다른 모듈 입장에서 너무 복잡하지 않게 도움을 요청할 수 있게 모듈을 추상화시킬 수 있는 간단한 인터페이스를 제공하여 모듈의 복잡도를 낮춰야 하고, 모듈이 변경될 때 하나의 모듈만 수정하면 되도록 변경 가능성을 모듈 내부로 감추고 외부에는 쉽게 변경되지 않을 인터페이스를 제공해야 한다. 최근 TCA(컴포저블 아키텍처)를 사용하면서 모듈의 동작에 정보 은닉이 필요하다는 생각이 들었고, 여러 방법을 찾아냈다. 그중 하나를 소개하자면 모듈의 동작을 크게 세 가지로 나누는데, 1️⃣ 모듈에 대응되는 View에 제공할 동작 2️⃣ 모듈 내부에 감추어야 할 동작 3️⃣ 다른 모듈에 인터페이스로 제공할 동작 모듈을 설계할 때 유독 지키기 힘든 것은 정보 은닉과 캡슐화를 지키려고 노력은 하는데 변경에 따르는 비용이 여전히 적지 않게 든다는 것이다. Robert C. Martin, “소프트웨어 개발의 지혜”에서는 모듈 설계 시 변경 가능성이 명확하지 않다면 실제로 변경이 발생할 때까지는 변경 가능성을 생각하지 않고 개발한 후에 변경이 발생할 경우 리팩터링에 따른 위험성을 낮추기 위해 테스트 케이스를 잘 만들어내는 것을 추천한다. 물론 변경 가능성에 대비하는 설계가 항상 좋은 것은 아니다. 변경은 실제로 변경이 발생할 떄 의미가 있기에 단기간에 경제적인 이익을 거둬야 한다면 불필요한 작업이 될 수도 있다. 하지만 장기적인 측면에서 봤을 땐 소프트웨어를 빨리, 그리고 자주 릴리즈하고, 가능한 한 빠르게, 자주 고객에게 전달할 수 있을 것이다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 26일 오후 10:03

 • 

저장 6조회 1,734

댓글 0