아키텍처의 테마
이바 야콥슨의 "Object Oriented Software Engineering" 책을 언급하면서 저자는
책의 부제인 "유스케이스 주도 접근법"에 주목하였다.
야콥슨은 소프트웨어 아키텍처는 시스템의 유스케이스를 지원하는 구조라고 지적한다.
주택이나 도서관의 계획서가 해당 건축물의 유스케이스에 대해 소리치는 것처럼,
소프트웨어 애플리케이션의 아키텍처도 애플리케이션의 유스케이스에 대해 소리쳐야 한다.
또한 아키텍처는 프레임워크에 대한 것이 절대 아니며,
프레임워크는 사용하는 도구 일뿐 아키텍처가 준수해야 할 대상이 아니라고 강조한다.
아키텍처를 프레임워크 중심으로 만들어버리면
유스케이스가 중심이 되는 아키텍처는 절대로 나올 수 없다.
아키텍처의 목적
좋은 아키텍처는 유스케이스를 그 중심에 두기 때문에,
프레임워크나 도구, 환경에 구애받지 않고
유스케이스를 지우너하는 구조를 아무런 문제 없이 기술할 수 있다.
주택에 대한 계획서를 예로 들 때,
아키텍트가 주목하는 첫 번째 관심사는
주택이 거주하기에 적합한 공간임을 확실히 하는 것이고,
벽도로 지어지는지를 확인하는 것이 아니다.
좋은 소프트웨어 아키텍처는
프레임워크, 데이터베이스, 웹 서버, 그리고 여타 개발 환경 문제나 도구에 대해서는
결정을 미룰 수 있도록 한다.
프레임워크는 열어 둬야 할 선택사항이다.
좋은 아키텍처는 유스케이스에 중점을 두며,
지엽적인 관심사에 대한 결합은 분리시킨다.
프레임워크는 도구일 뿐, 삶의 방식은 아니다
프레임워크는 매우 강력하고 상당히 유용할 수 있지만,
"프레임워크가 모든 것을 하게 하자"라는 태도를 취하지 않도록 경계해야 한다.
프레임워크를 어떻게 사용할지,
그리고 프레임워크를 사용하지 않으려면 어떻게 해야할지
스스로에게 물어보라.
어떻게 하면 아키텍처를 유스케이스에 중점을 둔 채
그대로 보존할 수 있을지를 생각해야 한다.
프레임워크가 아키텍처의 중심을 차지하는 일을 막을 수 있는 전략을 개발하라.
테스트하기 쉬운 아키텍처
아키텍처가 유스케이스를 최우선으로 한다면,
그리고 프레임워크와는 적당한 거리를 둔다면,
프레임워크를 전혀 준비하지 않더라도
필요한 유스케이스 전부에 대해 단위 테스트를 할 수 있어야 한다.
테스트를 돌리는 데
웹 버서가 반드시 필요한 상황이 되면 안된다.
데이터베이스 역시 반드시 연결되어있어야만 테스트를 돌릴 수 있어서도 안된다.
엔티티 객체는 반드시 오래된 방식의 간단한 객체여야 하며,
프레임워크나 데이터베이스, 또는 여타 복잡한 것들에 의존해서는 안된다.
유스케이스 객체가 엔티티 객체를 조작해야 한다.
최종적으로,
프레임워크로 인한 어려움을 겪지 않고도
반드시 이 모두를 있는 그대로 테스트할 수 있어야 한다.
아키텍처는 시스템을 이야기해야 하며,
시스템에 적용한 프레임워크에 대해 이야기해서는 안된다.
만약 "헬스 케어 시스템"을 구축하고 있다면,
새로 들어온 프로그래머가 소스 코드 저장소를 봤을 때 첫 인상이
"헬스 케어 시스템"임을 금방 인지할 수 있어야 한다.
새로 합류한 프로그래머는
시스템이 어떻게 전달될지 알지 못한 상태에서도
시스템의 모든 유스케이스를 이해할 수 있어야 한다.
#클린아키텍처 #cleanArchitecture #소리치는아키텍처 #유스케이스
[Architecture] 5부 아키텍처 : 23장 프레젠터와 험블 객체 (0) | 2024.01.17 |
---|---|
[Architecture] 5부 아키텍처 : 22장 클린 아키텍처 (0) | 2024.01.17 |
[Architecture] 5부 아키텍처 : 20장 업무 규칙 (0) | 2024.01.14 |
[Architecture] 5부 아키텍처 : 19장 정책과 수준 (0) | 2024.01.14 |
[Architecture] 5부 아키텍처 : 18장 경계 해부학 (1) | 2024.01.14 |
댓글 영역