정의
아래는 우리가 일반적으로 혼용해서 사용하는 두 용어이다.
아키텍처 (Architecture) : 고수준의 구조 또는 결정사항을 의미
설계 (Design) : 저수준의 구조 또는 결정사항을 의미
두 용어는 본질적으로 같은 의미이다.
둘 모두 SW 전체 설계의 구성 요소이며 개별로 존재할 수 없고 경계는 뚜렷하지 않다.
단지, 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐.
목표
SW Architecture의 궁극적 목표는 무엇일까?
"SW Architecture의 목표는 필요한 SW를 만들고 유지보수에 투입되는 인력을 최소화하는 데 있다."
좋은 설계는 처음부터 제품 수명이 다할 때까지 유지보수 비용을 낮게 유지할 수 있다.
요구사항이 변화할 때마다 비용이 증가한다면 그 설계는 나쁜 설계이다.
"코드는 나중에 정리하면 돼. 당장은 시장에 출시하는 게 먼저야!"
급한 일정 속에 자주 들곤 하는 생각이다. 혹은 디자인을 깊게 고민하다 보면 어느새 지쳐 유혹에 빠진다.
하지만 진실은 아래와 같다.
" 엉망으로 만들면 깔끔하게 유지할 때보다 항상 더 느리다. "
엉망으로 짜인 코드는 개발 시간보다 불량을 잡는 시간이 훨씬 길다.
결론
기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 Architecture를 만들어야 한다.
Architecture가 후순위가 되면 개발하는 비용이 더 많이 들며 변경이 불가능해질 수 도 있다.
아키텍처는 중요하지만 대게 긴급하지 않다.
긴급하지 않은 아키텍처의 중요성을 설득하는 일은 SW 개발자의 의무이다.
" 개발자는 스스로 옳다고 믿는 가치를 위해 충분히 투쟁해야 한다. "
'SW Engineering > Architecture' 카테고리의 다른 글
단일 책임 원칙 ( SRP : Single Responsibility Principle ) (0) | 2021.09.30 |
---|---|
Architecture와 Programming Paradigm (0) | 2021.09.28 |