본문 바로가기

Etc

[클린 아키텍처] 아키텍처와 설계

아키텍처와 설계

 

둘 사이에는 차이가 없다고 볼 수 있다.
아키텍처가 조금 더 거시적인 관점, 설계는 미시적인 관점

 

아키텍처

- 저수준의 세부사항과는 분리된 고수준의 무언가를 가르킬 때 사용


설계

- 저수준의 구조 또는 결정사항 등을 의미


소프트웨어에서 설계

- 저수준의 세부사항고수준의 구조는 모두 소프트웨어의 전체 설계의 구성요소
- 필요한 시스템을 만들고 유지보수하는데 투입되는 인력 최소화를 목표
- 비용이 낮고 시스템 수명이 다할 때까지 낮게 유지할 수 있다면 좋은 설계
- 새로운 기능이 출시할 때마다 비용이 증가하면 나쁜 설계

 


 

소프트웨어 시스템의 두 가지 가치

 

행위

- 이해관계자의 기능 명세서나 요구사항 문서를 구체화 하도록 코드를 작성
- 이를 위해 이해관계자는 프로그래머를 고용
- 기능이 있는 프로그램을 만드는 일
- 요구사항을 위반하면 디버깅


아키텍처

- 행위를 통해 만들어진 프로그램을 개발 및 변경, 확장하기 쉽게 해주는 가치
- 소프트웨어는 아키텍처를 통해 변경하기 쉬워져야한다.
- 좋은 아키텍처로 설계된 프로그램은 비용을 절감할 수 있다.


행위 가치 VS 아키텍처 가치

이해관계자는 행위에 더 높은 가치를 두겠지만 개발자는 아키텍처에 중점을 둔 프로그램을 만들어야한다.

행위에만 무게를 두어 개발이 진행되면 추후 새로운 요구사항 및 변경사항에 드는 비용이 시간이 지남에 따라 높아지게 될것이고

최악의 상황에는 개발 및 변경 비용이 수익을 추월하여 사실상 변경이 불가능해지는 상황이 올 수 있다.

그리하여 개발자는 시스템이 제공하는 특성이나 기능보다 개발하기 쉽고, 변경에 용의며 확장을 쉽게 해주는 시스템의 구조,
아키텍처의 가치에 더 집중할 필요가 있다.