1. 소개
1. 설계와 아키텍처란?
설계와 아키텍처는 같다
소프트웨어 아키텍처의 목표는 필요한 시스템을 만드고 유지보수하는데 투입되는 인력을 최소화 하는데 있다.
결과물의 총량을 순전히 프로그래머 수만으로 결정하거나, 코드의 설계의 구조를 깔끔하게 만들려는 생각을 전혀 하지 않으면, 파국으로 치닫는 비용곡선에 올라타게 된다.
최고의 선택지는 조직에 스면든 과신을 인지하여 방지하고 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는것이다.
소프트 웨어 아키텍처를 고려할 수 있으려면 좋은 아키텍처가 무엇인지 이해해야 한다.
비용은 최소화 하고 생산성은 최대화할 수 있는 설계와 아키텍처를 가진 시스템을 만들려면 이러한 결과로 이끌어 줄 시스템 아키텍처가 지닌 속성을 알고 있어햐 한다.
이를 통해 소프트웨어 개발자가 장기간에 걸쳐 수익을 창출하는 시스템을 만들 수 있게 하고자 한다.
2. 두 가지 가치에 대한 이야기
행위
소프트웨어의 가치는 바로 행위다 많은 프로그래머가 해야할일은 요구사항을 만족하도록 코드를 짜는것을 본인의 일이라 생각하지만 그것을 틀렸다
아키텍쳐
소프트웨어가 가진 본연의 목적을 추구하려면 소프트웨어는 변경하기 쉬어야 한다. 변경되는 범위에 비례 해야 하지 변경사항의 형태와는 관련이 없어야 한다.
더 높은 가치
완벽하게 동작하지만 수정이 아예 불가능한 프로그램 -> 쓸모가 없다.
동작은 하지 않지만 변경이 쉬운 프로그램 -> 앞으로도 계속 유용한 채로 남는다.
" 변경 비용이 너무 커서 현실적으로 적용할 수 없다"라고 하면 "실질적으로 변경이 불가능한 상태에 처할 때까지 시스템을 방치 했다" 라며 화를 낼 가능성이 높다.
아키텍처를 위해 투쟁하라.
아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해 진다. 이러한 상황이 발생하도록 용납했다면, 이는 결국 소프트웨어 개발팀이 스스로 옳다고 믿는 가치를 위해 충분히 투쟁하지 않았다는 뜻이다.
Last updated