더북(TheBook)

▼ 표 2.2 핵심 품질 속성에 다면적인 추상화가 미치는 영향

품질 속성

미치는 영향

이해 가능성

다면적인 추상화 악취를 풍기는 클래스는 여러 측면을 추상화했기에 사용자에게 인지 부하를 가한다. 클래스가 여러 책임을 맡을 때, 각 책임을 이해하고 추상화에서 각 연관성을 파악하는 데 많은 시간과 노력이 필요하다. 이는 이해 가능성에 부정적인 영향을 미친다.

변경 가능성과 확장 가능성

클래스에 여러 책임이 있을 때, 변경이나 개선을 지원하려면 어떤 멤버 함수를 변경해야 하는지 파악하기 어렵다. 또 멤버 함수 변경이 동일 클래스 내부의 관련 없는 책임에 영향을 미칠지도 모른다. 이는 전체 설계에 영향을 미칠 수 있다. 이런 이유에서 결과로 나타나는 파급 효과가 소프트웨어의 정확성에 부정적인 영향을 미치지 않게 보증하면서 클래스를 변경하거나 확장하는 데 상당히 많은 시간과 노력이 필요하다. 이는 변경 가능성과 확장 가능성에 부정적인 영향을 미친다.

재사용 가능성

단일 책임을 지원하는 제대로 된 추상화는 다양한 맥락에서 한 단위로 재사용 가능한 잠재력을 발휘한다. 추상화에 여러 책임이 있으면 한 가지 책임을 재사용할 때조차 전체 추상화를 사용해야만 한다. 이 경우 불필요한 책임은 반드시 해결해야 하는 값비싼 부담이 될지도 모른다. 따라서 추상화의 재사용성이 훼손된다. 게다가 여러 책임이 있는 추상화는 종종 책임이 서로 뒤섞일 수 있다. 단일 책임만 재사용할 때도 추상화의 전반적인 행동 방식을 예측하기 어렵기에 재사용 가능성에 다시 한 번 나쁜 영향을 미친다.

테스트 가능성

종종 클래스에 여러 책임이 있을 때, 이런 책임은 서로 밀접한 결합이 있어 개별적으로 책임을 분리해서 테스트하기 어렵다. 이는 클래스의 테스트 가능성에 부정적인 영향을 미칠 수 있다.

안정성

책임이 뒤섞인 클래스를 변경할 때 예측 불가능하거나 실행 과정의 문제로 이어질 수 있다. 예를 들어, 책임마다 분리된 변수 집합을 연산하는 경우를 고려해 보자. 이 변수들이 합쳐져 단일 추상화로 자리 잡으면 잘못된 변수에 실수로 접근하기 쉽고 실행 과정에서 문제를 일으킨다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.