[6부 2번 수필] '문제 해결'에 대한 당연한/기발한 생각
소프트웨어 개발의 본질은 무엇일까? 자료 처리? 전자 계산? 기술 집약적인 첨단 산업? 3D 업종? 로버트 L. 글래스 큰 형님은 소프트웨어 개발의 본질은 '문제 해결'이라고 주장한다. 너무나도 당연한 이야기이다. 그렇다면 문제를 해결하기 위해 어떤 과정을 밟을까?
- 문제를 정의한다
- 해결책을 구현한다
- 해결책을 점검한다
- 필요하다면 해결책을 지속해서 동작하게 만든다
그런데 상기 문제 해결 방식에 데자뷰가 느껴지지 않는가? 바로 우리가 악의 축(?)으로 생각하고 있던 (폭포수형) '소프트웨어 생명 주기'와 정확하게 일치한다. 그다지 놀랍지도 않는 이유는 '생명 주기'가 문제 해결에 일반적인 접근 방법이기 때문이다.
로버트 L 글래스 큰 형님은 소프트웨어 생명 주기와 관련해서 두 가지 문제점을 지적한다.
- 소프트웨어 업계 종사자들은 어느 생명 주기를 사용할지를 놓고 논쟁하느라 상당한 시간을 낭비한다. 여기서 모순은 생명 주기가 일반화한 방법이며 소프트웨어 개발 부문의 독창적인 개념이 아니라는 사실이다. 오랜 기간 동안 쌓여온 일반적인 문제 해결 방법을 거부하는 배짱도 종종 볼 수 있는데, 소프트웨어 분야에서는 용감한(?) 사람이 종종 눈에 띄는 모양이다.
- 스펙트럼의 반대쪽에 있는 또 다른 일부 용감한(?) 소프트웨어 업계 종사자는 생명 주기 개념을 전혀 이해하지 못한다. 생명 주기는 일단 '발견하고' 나면 절대불변의 신성 불가침의 규칙 집합이자, 소프트웨어 제작 과정에서 반드시 사용해야 하는 공정이자 한치도 어김없이 순서와 방법을 따라야 하는 신성 불가침한 무엇으로 신봉한다. 요구 사항을 확정하기 전에는 설계를 시작하지 못하며, 설계를 끝내기 전에는 구현을 시작하지 못하며, 구현을 끝내기 전에는 테스트를 시작하지 못한다.
생명 주기를 맹신하는 경직된 관점을 버려야 한다. 어느 누구도 문제 해결 단계를 특정 순서에 맞춰 따라해야 한다고 주장하지 않았지만, 소프트웨어 업계 종사자들은 이런 황당한 생각을 어디선가 접한 모양이다. 결론: '소프트웨어 개발'은 결국 '문제 해결'이므로 문제를 푸는 방법론에서 좀더 자유로워지자.
"소프트웨어 컨플릭트 2.0: 시대를 뛰어넘는 즐거운 논쟁" 공동 역자 박재호 올림
라벨: 문제 해결, 소프트웨어 생명 주기



0 Comments:
Home | 댓글 쓰기