BLOG main image
24,456 Visitors up to today!
Today 0 hit, Yesterday 0 hit

2008.01.11 14:45, 배워가기..

"Professional 소프트웨어 개발"은 스티브 맥코넬이 IEEE Software에 기고했던 글들을 모은 일종의 에세이이다. 따라서, 이 책에는 스티브 맥코넬 자신의 생각이 강하게 투영된 글이기도 하다. 나는 스티브 맥코넬이 쓴 책들을 좋아한다. 사람들은 그를 일컬어 "소프트웨어 공학의 전도사"라고들 칭한다. 그만큼 그의 글들은 왠지 손에 잡힐 것처럼 생생하고, 매우 그럴 듯하며, 그가 제시하는 구체적인 데이터는 속된 말로 <심하게> 공감이 간다.

그의 책들을 읽어보면, 결국 소프트웨어 개발이 지향해야 하는 곳은 '과학'이 아닌 '공학'이라는 일관적 주장이 되풀이된다. 이 책은 그의 이러한 주장을 다소 철학적이면서 다분히 주관적인 자신의 의견을 제시한다. 작자는 공학을 실세계의 문제를 해결하기 위해 과학을 응용하는 것이라고 정의한다. 그리고 소프트웨어 공학은 정형화된 방법론을 모든 프로젝트에 적용하는 것이 아니라 프로젝트에 맞는 적절한 방법론을 선택하는 것이라고 말한다.

흔히들 소프트웨어공학이라고 하면 대부분의 사람들은 정형화된 방법론과 CASE툴을 떠올린다. 그리고, 일부 CASE 툴 혐오자들은 소프트웨어공학 자체에 대한 혐오감을 표시한다. 때로는, 소프트웨어공학이 제시하는 방법론을 맥도널드 햄버거 제조법에 비유해 적대적인 주장을 펴기도 한다. 작자는 이러한 그릇된 오해들은 공학을 잘못 이해했기 때문이라 말한다. 작자는 일관되게 소프트웨어공학의 만병통치약은 없음을 주장한다. 어떤 방법론도 현실 세계의 문제를 해결하는데 충분치 않음을 그는 주장하며, 그러한 방법론들을 '은빛 총알' 또는 '바보들의 황금'이라는 말로 경계하고 있다.

그는 작금의 소프트웨어공학은 '컴퓨터 프로그래밍'이라는 오해에서 벗어나야 함을 주장한다. 소프트웨어개발에서 '컴퓨터 프로그래밍'은 본질적인 속성이 아닌 우유적인 속성이며 우유적인 속성은 변하기 쉽다는 것이다. 변하기 쉬운 우유적인 속성에 매달리다보면, 전문성은 기르기 어렵고 임기 응변에만 급급하게 되며 쉽게 '일단 짜보고 고쳐보는' 원시적인 방법을 답습할 수 밖에 없다고 말한다. 그러나, 소프트웨어개발에는 변하지 않는 핵심 요소, 즉 본질적 속성이 존재하며 이 본질적인 속성을 체계화하여 전문적으로 개발할 수 있다고 말한다.

작자는 1968년 이래 소프트웨어공학은 많은 발전을 이루었으며, 소프트웨어공학의 지식체계 또한 많이 안정되었다고 주장한다. 그리고, 이렇게 안정된 지식체계는 향후 수십년간 사용될 수 있다고 말한다. 지난 세월 축적된 소프트웨어공학의 지식체계는 소프트웨어의 주요 목표인 최소한의 결함, 응답시간의 최소화, 최대한의 사용자만족도, 운영성, 확장성, 견고성, 정확한 결과와 같은 품질 목표를 달성하는 동시에 짧은 일정, 예측 가능한 납품 기한, 저비용, 소규모 팀, 프로젝트 도중 변할 수 있는 유연성 등의 장점을 제공한다.

결국 작자는 비가시적이고 변화하기 쉬운 소프트웨어개발의 속성을, 소프트웨어공학의 지식체계를 빌려 가시적이고 제어하기 쉬운 속성으로 바꿀 수 있음을 주장한다. 그리고 안정된 소프트웨어 지식체계를 주춧돌로 삼아, 이 지식체계를 전문적으로 습득한 사람들을 양성하는 것이 필요하다고 말한다. 그런데, 그 동안 습득된 지식 체계의 양이 너무나 방대해, 이들을 적절한 지식 영역으로 구분할 수 있으며, 그 지식 영역은 소프트웨어 요구사항, 소프트웨어 설계, 소프트웨어 구축, 소프트웨어 테스팅, 소프트웨어 유지보수, 소프트웨어 형상관리, 소프트웨어 품질, 소프트웨어공학 관리, 소프트웨어 툴과 방법론, 소프트웨어공학 프로세스 등으로 세분화될 수 있다고 하였다.

그가 소프트웨어개발은 공학이어야 한다고 주장하는 또 한가지 이유는 다른 공학 분야와 마찬가지로 소프트웨어 개발자들도 일종의 전문직에 종사하는 사람들이라 할 수 있으며, 오늘날 소프트웨어 개발이 일반 공학과 마찬가지로 사회에 미치는 영향이 커지는 만큼, 인가되지 않은 소프트웨어 개발자들에 의해 만들어진 소프트웨어에 의해 일어날 수 있는 재난을 사전에 막기 위해서는 인가된 소프트웨어 개발자와 조직에 의해 보다 안정된 소프트웨어를 개발할 필요성이 있다는 것이다. 이를 위해서는 소프트웨어 개발에 종사하는 업계가 나서 스스로의 자존을 세울 수 있는 인증 체계를 갖추고, 이러한 공식적인 인증을 받기 위해 소프트웨어 개발자들이 전문가로서 거듭나기 위해 기꺼이 훈련할 수 있는 풍토를 조성하는 것이 필요하다고 말한다. 아울러, 그는 소프트웨어의 공공성을 인정하고 소프트웨어 개발자의 윤리 교육이 필요하다고 역설한다. 이를 위해서는 이를 교육할 수 있는 연수 교육을 함께 실시하여야 한다고 말한다.

나는 이 책이 말하는 프로란 단순히 앵무새처럼 기술을 익힌 기술 전문가들을 의미하는 것이 아니라고 본다. 이제 소프트웨어 개발은 우리 사회 어디에서나 사용되고 있으며, 그것은 마치 강 사이에 다리를 놓는 것처럼 자연스러운 일이 되었다. 이제 소프트웨어 개발은 단순히 소수 개발자들의 자기 만족에 의해 개발될 수 없으며, 소프트웨어 개발자들은 소프트웨어가 가진 공공성을 인식하고 자신이 만든 소프트웨어에 대해 책임을 질 줄 하는 성숙한 자세를 갖추어야 한다. 자기가 만든 엉성한 소프트웨어는 끊어진 성수대교처럼 불특정 다수에게 해악을 끼칠 수도 있음을 자각하는 것, 이를 막기 위해서는 다소 불편하더라도 책임 의식을 다하여 불량없는 소프트웨어를 개발하려고 노력하는 자세야 말로 프로 의식을 가진 소프트웨어 개발자라 할 것이다. 이는 비단 개인만이 아니라 업계 스스로도 이러한 공공성을 자각하고 뒤떨어진 품질을 가진 소프트웨어를 아예 내놓지 않도록 노력하는 것이야 말로, 우리가 몸담은 소프트웨어 업계를 발전시키는 길인 것이다.

언젠가 운전면허 교육을 받을 때 강사가 하셨던 말이 생각난다. '운전 면허란 운전을 해도 좋다는 허가일 뿐이지 당신이 운전을 잘한다고 인정한 것이 아니다.' 마찬가지로 현재의 나 역시 프로그램을 해도 좋다는 허가만 받았을 뿐, 내가 프로그램을 잘 한다고 말할 수 없는 이치다. 어설프게 배운 운전자가 사고를 일으키는 것처럼, 어설프게 배운 프로그래머는 불량한 소프트웨어를 만들기 쉽다. 불량한 소프트웨어를 만들지 않기 위한 안전 장치로 소프트웨어 공학은 필요한 것이다. 물론, 이러한 안전 장치없이도 지금껏 아무 문제없이 소프트웨어 개발은 이루어져 왔으며 앞으로도 그럴 것이다. 그러나, 현재의 소프트웨어 개발이 가진 공공의 가치를 생각한다면, 최악의 조건을 미리 계산하고 대비하는 공학도들처럼 소프트웨어 개발자들도 발생할 수 있는 소프트웨어에 의한 재난을 막기 위해 최선을 다하는 프로다운 자세가 요구된다 하겠다.

 




 

top
Name
Password / Secret
Homepage