SW Engineering/Architecture

Architecture란?

민몬+ 2021. 9. 28. 00:49

정의

 

아래는 우리가 일반적으로 혼용해서 사용하는 두 용어이다.

아키텍처 (Architecture) : 고수준의 구조 또는 결정사항을 의미

설계 (Design) : 저수준의 구조 또는 결정사항을 의미

 

두 용어는 본질적으로 같은 의미이다. 
둘 모두 SW 전체 설계의 구성 요소이며 개별로 존재할 수 없고 경계는 뚜렷하지 않다. 

단지, 고수준에서 저수준으로 향하는 의사결정의 연속성만 있을 뿐.

목표

SW Architecture의 궁극적 목표는 무엇일까?

"SW Architecture의 목표는 필요한 SW를 만들고 유지보수에 투입되는 인력을 최소화하는 데 있다."

 

좋은 설계는 처음부터 제품 수명이 다할 때까지 유지보수 비용을 낮게 유지할 수 있다.

요구사항이 변화할 때마다 비용이 증가한다면 그 설계는 나쁜 설계이다.

 

"코드는 나중에 정리하면 돼. 당장은 시장에 출시하는 게 먼저야!"

급한 일정 속에 자주 들곤 하는 생각이다. 혹은 디자인을 깊게 고민하다 보면 어느새 지쳐 유혹에 빠진다.

하지만 진실은 아래와 같다.

" 엉망으로 만들면 깔끔하게 유지할 때보다 항상 더 느리다. "

엉망으로 짜인 코드는 개발 시간보다 불량을 잡는 시간이 훨씬 길다.

 

결론

기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 Architecture를 만들어야 한다.

Architecture가 후순위가 되면 개발하는 비용이 더 많이 들며 변경이 불가능해질 수 도 있다.

 

아키텍처는 중요하지만 대게 긴급하지 않다.

긴급하지 않은 아키텍처의 중요성을 설득하는 일은 SW 개발자의 의무이다.

" 개발자는 스스로 옳다고 믿는 가치를 위해 충분히 투쟁해야 한다. "