개발 서적 기록/오브젝트_조영호

18일차 - 하향식 기능 분해 설계

밍 끄적 2023. 8. 21. 01:13
728x90

2023.08.20 SUN

223p ~ 234p

 

17일차 내용 ⬇️

2023.08.19 - [개발 서적 기록/오브젝트_조영호] - 17일차 - 프로시저 추상화와 데이터 추상화

 

17일차 - 프로시저 추상화와 데이터 추상화

2023.08.18 FRI 214p ~ 224p 16일차 내용 ⬇️ 2023.08.19 - [개발 서적 기록/오브젝트_조영호] - 16일차 - 캡슐화가 적절지 않은 경우와 명령 쿼리 분리 원칙 16일차 - 캡슐화가 적절지 않은 경우와 명령 쿼리

magenta-ming.tistory.com


하향식 기능 분해 / 하향식 접근법

시스템을 구성하는 가장 최상위 기능을 정의하고, 이 최상위 기능을 좀 더 작은 단계의 하위 기능으로 분해해 나가는 방법이다.

전통적인 기능 분해 방법이다.

최상위의 추상적인 함수 정의에서 출발해서, 단계적인 정제 절차를 따라 시스템을 구축한다.

 

하향식 기능 분해의 문제점

- 시스템은 하나의 메인 함수로 구성되어 있지 않다.
   처음에는 중요했던 메인 함수가, 기능을 확장해나가면서 그 중요성을 잃는다.

 

- 기능 추가나 요구사항 변경으로 인해 메인 함수를 빈번하게 수정해야 한다.

 

- 비즈니스 로직이 사용자 인터페이스와 강하게 결합된다.

   사용자 인터페이스는 비즈니스 로직에 비해 비교적 빈번하게 변경되는데, 사용자 인터페이스의 변경이 비즈니스 로직에도 영향을 미친다.

 

- 하향식 분해는 너무 이른 시기에 함수들의 실행 순서를 고정하기 때문에 유연성과 재사용성이 저하된다.

 

- 데이터 형식이 변경될 경우 파급효과를 예측할 수 없다.

 

설계는 코드 배치 방법이며 설계가 필요한 이유는 변경에 대비하기 위해서다.

위와 같은 문제점을 고려했을때, 하향식 기능 분해는 변경에 유연하지 않은 설계로 이어진다.

 

데이터 변경으로 인한 영향 최소화하기

데이터가 함께 변경되는 부분과 그렇지 않은 부분을 명확하게 분리해야한다.

다시 말해서, 데이터와 함께 변경되는 부분을 하나의 구현 단위로 묶고, 외부에서는 제공되는 함수만 이용해서 데이터에 접근한다.

 

그래서 데이터 변경으로 인한 영향을 최소화하는 방면에서도 퍼블릭 인터페이스가 활용된다.

잘 정의된 퍼블릭 인터페이스를 통해서 데이터에 대한 접근을 통제할 수 있기 때문이다.

 

이를 통해서 의존성을 관리할 수 있다.

영향을 받는 데이터에 대한 부분을 분리하고, 퍼블릭 인터페이스로 접근을 통제함으로써, 변경에 대한 영향을 최소화하여, 의존성을 관리했다.

( 이런 방법을 정보 은닉과 모듈을 활용한 방법이라고 할 수 있다. 19일차에 작성 예정 )

 

728x90