[2부 1번 수필] 인지적 견해: 소프트웨어 설계를 보는 다른 시각
설계 부문의 고전인 'Design Methods'를 지은 존 크리스토퍼 존스 큰 형님 사진
소프트웨어 분야에서 소프트웨어 설계만큼 신기하면서도 어려운 공정이 없다는 생각이다. 로버트 L 글래스 큰 형님 말처럼 30여년이 넘게(지금은 45여년이 넘게) 소프트웨어를 설계해왔고, 상식적으로 필요하다 싶은 설계 방법론과 설계 언어를 모두 갖추고 있지만, '설계'에 대해 명쾌하고 가슴이 와 닿는 정의를 내리기는 무척 어렵다.
이런 상황에서도 대가들은 뭔가 달라도 다르다. 오늘은 존 크리스토퍼 존스 큰 형님이 설계에 대해 정의한 문구를 소개하고 싶다. 개인적으로 아주 좋아하는 설계 관련 이야기이기도 하다.
근본적인 문제는 예측이 올바르지 않을 경우 현실화되지 못하는 _미래_ 상태를 예측하기 위해 설계자가 _현재_ 주어진 정보를 사용해야 한다는 사실이다. 설계의 마지막 결과물은 결과물을 만드는 수단을 펼치기 앞서 미리 가정해놓아야 한다. 설계자는 영향을 미치는 사건 연쇄가 시작되는 초기에 세상에 영향을 미칠 시점을 기준으로 시간을 거슬러 올라가면서 작업해야 한다.
쉽게 설명해서, 설계자는 설계의 결과가 어떻게 동작할지 모두 알기에, 속된 말로 짜고치는 고스톱을 친다는 말이다. 심심풀이로 주변에 프로그램을 잘 짜는 친구들을 대상으로 인터뷰를 해보면 한결같은 대답이 나온다.
질문: 개발 과정 중에서 언제부터 프로그램 구현을 시작합니까? 대답: 내가 짠 프로그램이 제대로 돌거라는 확신이 설 때부터.
서투른 개발자는 프로그램 구현에 있어 부딪히는 모든 함정에 따 빠지면서 가까스로 목표를 향해 전진하지만, 뛰어난 개발자는 마치 매트릭스에서 네오가 총알을 부드럽게 피하듯 주변에 함정이 어디있었냐는 듯(실제로 함정에 빠지긴 하지만 워낙 회복 속도가 빨라서 주변 사람들에게는 함정을 피한 듯이 보일 뿐이다. :))이 목표를 향해 그대로 돌진하다.
크리스토퍼 존스 큰 형님에 이어 로버트 L. 글래스 큰 형님도 한마디 거든다.
연구 결과를 이해하려면 먼저 짧은 소프트웨어 역사 속에서 전통이 되어버린 사고에 대한 집착을 버려야 한다. 설계의 외적인 표현에 연연하지 말고 사고의 흐름에 초점을 맞춰야 한다. 설계의 비밀은 _마음_속에 있다.
이런 평범하다면 지극히 평범한 진리를 이해하지 못하기 때문에 제대로 된 프로그램을 만들기 위해서는 객체지향형 언어인 C++나 자바나 파이썬이나 루비타 기타 등등의 언어를 사용해야_만_한다고 교조주의적인 주장(예: "아직도 C를 쓰세요? 설계에 대해 X도 잘 모르시는군요.")이 나온다. 설계의 비밀은 프로그램 언어에 있지 않고 방법론에도 있지 않다. 여러분 _마음_속에 있다.
로버트 L. 글래스 큰형님은 설계의 본질을 딱 네 줄로 설명한다.
- 마음 속으로 모델을 만들어본다.
- 마음 속으로 모델을 실행한다. 즉, 시물레이션을 통해 모델이 문제를 해결하는지 확인한다.
- (대게 모델이 너무 단순해서) 문제를 해결하지 못하면, 불충분한 모델에서 실패하는 부분을 찾아서 개선한다.
- 모델이 문제를 해결할 때까지 1-3단계를 반복한다.
즉, 설계는 정신적이고, 아주 빠르고, 반복적이며, 사실상 시행착오를 거듭하는 과정이며, 마음이 문제 해결책을 구상한다. 즉 설계의 본질은 신속한 모델링, 시물레이션이며, 설계의 핵심 요소는 해결책을 제안하고 실패하는 능력과 실패를 극복하는 능력이다.
로버트 L. 글래스 큰형님의 마지막 아름다운 말씀을 전하면서 마무리 하겠다.
설계는 마음 속에서 번개처럼 떠오르는 무언가임을. 그리고 어떤 사람의 번개는 다른 사람의 번개보다 훨씬 빠르다는 사실을."소프트웨어 컨플릭트 2.0" 역자 박재호 올림



4 Comments:
-
바비(Bobby) said...
-
- 월요일, 3월 19, 2007 3:29:00 오후
-
jhrogue said...
-
- 월요일, 3월 19, 2007 5:47:00 오후
-
익명 said...
-
- 화요일, 3월 20, 2007 5:51:00 오후
-
익명 said...
-
- 수요일, 12월 17, 2008 9:10:00 오전
Home | 댓글 쓰기좋은 글 감사합니다. ^^
제 블로그에서 해당 포스트를 소개하였습니다.
뛰어난 설계는 마음으로 하는 것
류한석님, 좋은 피드백 감사드립니다. 저도 http://tapm.blogspot.com/2007/02/20.html에 링크를 걸어 두었습니다. :)
좋은글 감사합니다. 항상 좋은 글 잘 보고 있습니다.
좋은 글이네요~