Functional decomposition vs Entity-based decomposition
Functional decomposition는 시스템이 제공해야하는 기능을 기준으로 분할 하는 것이다. 특히 3GL (C,Pascal)로 구현하는 시스템에서 주로 사용되는 방식이다.
반면에 Entity-based decomposition은 주로 객체지향 언어에서 사용되는데 시스템에서 사용되어야 하는 Entity를 기준으로 분할하는 방식이다.비즈니스는 분석한다는 것은 주로 이두 개의 decomposition을 기준으로 수행된다.
Problem-domain-based decomposition vs Solution-domain-based decomposition
만약 시스템을 3Tier 구조로 가져가겠다라고 결정하였을때 이분할은 Solution-domain-based decomposition이다. 시스템에서 처리하고자하는 기능을 역할 분할하여 배치하는 것이다. 반대로 컴파일러 프로그램 처럼 어휘분석 -> 구문분석 -> 기계코드 생성 과 같이 해결해야 하는 문제를 기준으로 분할 하는 것을 Problem-domain 중심적인 분할이다.
S/W아키텍쳐가 설계될때 주로 이두개의 관점을 통해 아키텍쳐를 수립하게되는데 Tier나 Layer를 결정하는것을 Solution-based decompostition에 해당하고 Log나 Exception, Configuration등의 문제를 정리하는 것을 Problem-domain decomposition을 통해서 도출하게된다. 전자는 개념적 아키텍쳐가 되고 후자는 메커니즘/전략으로써 정리된다.
또한 Problem-domain은 추적성이 떨어지는 문제가 있다 예를 들어 log, config와 같은 문제들은 이전에 특정한 요구에 기반하지 않고 컴퓨터 시스템이라는 특수성에 의해 도출되는 경우가 많아 주의를 요하는 경우가 많다.
참고 : Design & use of software architecture p63