우리는 종종 소프트웨어 공학을 고층빌딩,댐 또는 도로를 만드는 것에 비유하는 것을 들을 수 있습니다. 몇몇 중요한 측면에서는 사실입니다.
도시 공학에서 가장 어려운 부분은 한번에 완성되는 빌딩을 설계하는 것이 아니라, 건축 과정을 이해하는 것입니다. 건축 과정은 황량한 땅에서 완공된 빌딩까지 진행됩니다. 그 사이에, 모든 작업자는 각자의 업무를 책임감을 가지고 수행할 수 있어야 하며, 모든 공사기간 동안 완공되지 않는 구조체는 지탱해야 합니다. 우리는 거대한 통합 시스템(완공된 빌딩)을 배포하는 시점에서 교훈을 얻을 수 있습니다. (여기서 “통합”이란 단어는 거의 모든 엔터프라이즈 및 웹 어플리케이션을 포함합니다.!)
전통적인 “빅 뱅(big bang)” 1방식의 배포는 대들보(집과 지붕을 받치는 큰 보)와 들보(하중을 지탱하는 구조물 ) 더미를 쌓아 올려, 높이 올린 다음(공중으로 집어 던진 다음), 건물 형태대로 잘 이어 붙기를 기대하는 것과 같습니다.
하나의 시스템은 독립적인 프로그램들로 구성됩니다.
우리는 프로그램들과 이들 프로그램들과의 관계를 정리하는 것을 아키텍쳐라고 부릅니다.
이들 시스템들의 다이어그램을 그릴 때, 종종 개개의 프로그램들과 서버들을 간략하고 조그만 사각형들로, 연결 관계들을 화살표들로 표현합니다.
“HTTP를 통신하는 SOAP-XML을 사용한 동기화/비동기 요청/응답”을 의미하는 하나의 화살표가 있습니다. 단 하나의 그림 문자가 표현하기에는 너무나 많은 정보를 가지고 있습니다. 이러한 모든 것을 표현하기에는 충분한 공간이 없습니다.
그래서 우리는 화살표 위에 내부적인 관점으로는 “XML over HTTP (HTTP 기반의 XML)”, 외부적인 관점으로는 “SKU[1] Lookup”[2] (재고 검색)라고 이름을 붙입니다.
프로그램들을 연결하는 화살표는 직접적으로 프로그램들과 통신하는 것 같아 보이지만, 사실은 그렇지 않습니다. 박스들 사이에 하얀 공백들은 하드웨어와 소프트웨어 컴포넌트들로 가득 채워져 있습니다.