금요일, 10월 19, 2007

[6부 2번 수필] '문제 해결'에 대한 당연한/기발한 생각

소프트웨어 개발의 본질은 무엇일까? 자료 처리? 전자 계산? 기술 집약적인 첨단 산업? 3D 업종? 로버트 L. 글래스 큰 형님은 소프트웨어 개발의 본질은 '문제 해결'이라고 주장한다. 너무나도 당연한 이야기이다. 그렇다면 문제를 해결하기 위해 어떤 과정을 밟을까?

  1. 문제를 정의한다
  2. 해결책을 구현한다
  3. 해결책을 점검한다
  4. 필요하다면 해결책을 지속해서 동작하게 만든다

그런데 상기 문제 해결 방식에 데자뷰가 느껴지지 않는가? 바로 우리가 악의 축(?)으로 생각하고 있던 (폭포수형) '소프트웨어 생명 주기'와 정확하게 일치한다. 그다지 놀랍지도 않는 이유는 '생명 주기'가 문제 해결에 일반적인 접근 방법이기 때문이다.

로버트 L 글래스 큰 형님은 소프트웨어 생명 주기와 관련해서 두 가지 문제점을 지적한다.

  1. 소프트웨어 업계 종사자들은 어느 생명 주기를 사용할지를 놓고 논쟁하느라 상당한 시간을 낭비한다. 여기서 모순은 생명 주기가 일반화한 방법이며 소프트웨어 개발 부문의 독창적인 개념이 아니라는 사실이다. 오랜 기간 동안 쌓여온 일반적인 문제 해결 방법을 거부하는 배짱도 종종 볼 수 있는데, 소프트웨어 분야에서는 용감한(?) 사람이 종종 눈에 띄는 모양이다.
  2. 스펙트럼의 반대쪽에 있는 또 다른 일부 용감한(?) 소프트웨어 업계 종사자는 생명 주기 개념을 전혀 이해하지 못한다. 생명 주기는 일단 '발견하고' 나면 절대불변의 신성 불가침의 규칙 집합이자, 소프트웨어 제작 과정에서 반드시 사용해야 하는 공정이자 한치도 어김없이 순서와 방법을 따라야 하는 신성 불가침한 무엇으로 신봉한다. 요구 사항을 확정하기 전에는 설계를 시작하지 못하며, 설계를 끝내기 전에는 구현을 시작하지 못하며, 구현을 끝내기 전에는 테스트를 시작하지 못한다.

생명 주기를 맹신하는 경직된 관점을 버려야 한다. 어느 누구도 문제 해결 단계를 특정 순서에 맞춰 따라해야 한다고 주장하지 않았지만, 소프트웨어 업계 종사자들은 이런 황당한 생각을 어디선가 접한 모양이다. 결론: '소프트웨어 개발'은 결국 '문제 해결'이므로 문제를 푸는 방법론에서 좀더 자유로워지자.

"소프트웨어 컨플릭트 2.0: 시대를 뛰어넘는 즐거운 논쟁" 공동 역자 박재호 올림

라벨: ,

수요일, 10월 03, 2007

[6부 1번 수필] 전산학이 진짜 과학이 되며, 소프트웨어 공학이 진짜 공학이 되려면

전산학과 소프트웨어 공학이 일반 과학과 공학 부문에 비해 미묘한 차이점이 있다는 사실은 전산학도나 소프트웨어 공학도라면 누구나 한번씩 생각을 해보았을 것이다. 어떤 사람은 전산학과 소프트웨어 공학의 연륜이 짧기 때문에 아직 미성숙한 결과라고 이야기하고, 어떤 사람은 전산학과 소프트웨어 공학이 사람 생각을 잡아서 이를 강력한 논리적 도구인 컴퓨터를 사용해서 구현해야 하기 때문에 복잡성이 높기 때문이라고도 설명한다.

그렇다면 로버트 L. 글래스 큰 형님께서는 여기에 대해 어떻게 생각하고 있을까? 다음과 같은 의견을 피력한다.

전산학이라는 과학과 소프트웨어 공학이라는 공학에는 탄탄한 실험에 기반하는 성향이 결여되어 있다.

사람 목숨이 달린 새로운 의약품, 신형 항공기, 차 세대 원자력 발전소 플랫폼에 들어가는 새로운 기술이 개발되었을 때 적용에 앞서 충분한 실험과 검토를 거치지만 소프트웨어 신기술이 등장하면 개발자들이 벌떼처럼 달려들어서 오래된 지식을 몰아내고 새 지식을 여과없이 현업에 적용하니 글래스 큰 형님가 지적한 '실험 부족'이 만연해있다고 보면 틀림없겠다. 심지어 데이비드 파나스는 전산학 수준을 '민간 신앙'에 빗대어 비아냥거릴 정도니 사태는 훨씬 더 심각하다.

그렇다면 글래스 큰 형님의 해법은? 필요한 자원을 확보한 누군가 소프트웨어 구매자 보고서(Software Consumer Report)와 같은 자료를 내놓아 실험에 기반해서 신 기술을 평가하여 생산성 향상이 어느 정도 높아지는지 객관적인 증거를 내놓으면 된다고 말한다. 여기서 문제는? 필요한 자원을 확보한 누군가(?)는 다른 엉뚱한 사고만 치고 있다는 사실이다. 전산학이 진짜 과학이 되며, 소프트웨어 공학이 진짜 공학이 되려면 여전히 목적지가 한참 남았다.

"소프트웨어 컨플릭트 2.0: 시대를 뛰어넘는 즐거운 논쟁" 공동 역자 박재호 올림

라벨: , ,