변화의 주창자

프로그램은 설계 행위이다(Programming Is an Act of Design) 본문

교육,공부/SW Architecture

프로그램은 설계 행위이다(Programming Is an Act of Design)

allsolution allsolution 2009. 7. 15. 03:52

사용자 삽입 이미지
객체지향 프로그래밍과 Simula프로그래밍언어의 아버지인 Kristen Nygaard는 “프로그래밍은 배우는 것이다”  라고 말하곤 한다. 프로그래밍, 더 정확히 소프트웨어 개발을 받아들이는 것은 발견과 배움의 과정이지 공학의 과정이 아니다. 그리고 구축은 소프트웨어 프랙틱스를 진보시키는 필수요소이다. 소프트웨어 개발의 전통적 공학과 구축의 개념의 적용은 효과가 없다. 이러한 문제는 30년 이상 유력한 소프트웨어 사상가들에 의해 문서화 되고 이야기 되어왔다. 한 예로 1987년 Fredric Brooks JR는 “Report of the Defense Science Board Task Force on Military Software”에서 document driven, 즉 명세 후 구현하는 방식은 많은 소프트웨어 문제로 거짓임을 기술했다.

그렇다면 소프트웨어 산업이 그 프랙틱스를 향상시키기 위해 어디에 주의해야 하는가? 차나 의약품, 반도체와 같은 정교한 대중시장 제품의 생산에 관련된 산업은 어떤가?

자동차 산업을 보자. 새로운 모델을 계획할 때 최초로 하는 것이 컨셉이나 원형을 선택하는 것이다. 이것이 주된 아키텍처적인 배치 방법이다. BMW X6는 BMW가 Sports Active Coupe라고 부르는 SUV와 쿠페의 속성을 결합한 새로운 컨셉의 한 예이다. 생각해볼 점은 당신이 새로운 X6를 구매하기 전에 BMW가 이 자동차와 제조 설계에 수천시간과 수백만 달러를 투자했다는 것이다. BMW가 당신의 주문을 받을 때, 조립라인이 가동될 것이고 당신의 요구에 맞춘 버전의 X6를 생산할 것이다.

그렇다면 이 자동차 생산자의 시나리오에서 배울 점은 무엇일까? 중요한 배움은 새로운 자동차를 만드는데 2개의 프로세스가 수반된 다는 것이다. 첫번째 프로세스는 필요로 하는 조립라인을 세우는 것을 포함한 창조적인 디자인 프로세스이다. 두번째 프로세스는 공정 안에서 고객의 명세서에 맞춘 자동차 제조이다. 이는 많은 면에서 우리가 소프트웨어 산업에서 발견할 수 있는 프로세스이다. 도전은 우리가 이 조건 에 무엇을 투자하는 가이다.

"What is software design?(소프트웨어 설계란 무엇인가?)" 라는 기사에서 Jack Reeves는 고전적인 공학에서 이해되어지고 사용되었던 설계 문서의 기준을 만족시키는 소프트웨어 공학의 유일한 산출물이 소스코드임을 제시했다. 소프트웨어의 제조는 컴파일러, 빌드, 테스트 스크립트에 의해 자동화 되어지고 관리되었다.

소스코드를 조각해 가는 것은 설계의 행위이지 구현의 행위가 아니다는 것을 받아들임으로 인해 우리는 일하는 것이 입증되는 유리한 관리 프랙틱스를 채택할 수 있는 위치에 있게 됐다.
이들은 새로운 자동차, 의약품, 컴퓨터게임 개발과 같은 창조적이고 예측하기 힘든 일을 관리하는데 사용되는 프랙틱스이다. 우리는 에자일 제품 관리와 SCRUM과 같은 린 생산 에 대해서 이야기 한다. 이 프랙틱스들은 특정기간에 고객가치의 최대 투자수익률(ROI)에 집중한다.


이 프랙틱스를 이용할 소프트웨어 산업을 위해 우리는 기억해야 한다. 프로그램은 설계의 행위이지 구축의 행위가 아니다 라는 것을…

Written by Einar Landre

0 Comments
댓글쓰기 폼