1. 우리가 사는 세상은 SW공학을 필요로 한다.
지금 우리는 디지털 시대에 살고 있습니다. Smartphone, Facebook, Twitter, Cyworld 등 효과적인 커뮤니케이션 전달수단을 통해 사회 전반적으로 새로운 휴먼 네트워크 문화를 구축하고 있습니다. 이와 같은 디지털 시대 중심에 바로 소프트웨어(이하 SW로 명명함)가 자리잡고 있습니다. SW가 없는 우리의 삶은 상상 할 수 없을 정도로 불편할 것입니다. 이제 SW는 글로벌 경쟁력을 위하여 신경써야 할 핵심자산으로 자동차, 조선, 전자 분야 등 국가 전략산업의 가치혁신을 견인하고 있습니다.
이와 같이 우리의 삶에 필수불가결한 요소로 자리잡은 SW를 개발하는데 있어서 체계적인 절차와 방법이 필요한 것은 당연한 것입니다. 초등학교의 수학 학습과 SW공학을 비교하여 설명해보자. 요즘 어린이들은 초등학교 1학년이면 구구단 정도는 이미 알고 있다고 합니다. 이것은 아이들이 살아가면서 부딪힐 일상에서의 생활 수학에 대한 중요성과 필요성에 대한 교육결과입니다. 이때 가장 중요하게 배우는 것이 수의 개념입니다. 자연법칙인 것입니다. 이를 통하여 우리는 미지의 세계와 보이지 않는 것들에 대한 계산과 예상을 해낼 수 있으며, 더 높은 수준의 과학적용과 경쟁력의 밑거름이 됩니다.
우리의 SW개발 상황들은 어떠한가? 이미 다양한 언어들, 플랫폼, 통신기술, 기기제어기술 등 매우 복잡하고 고난이도의 개발기술들이 존재하며, 개별적인 기술들을 구현하고, 발전시키려는 수많은 노력들을 하고 있습니다. 정보의 규모, 학습할 대상의 규모 면에서, 이미 외워서 될 일이 아닌 것입니다. 체계적인 절차와 방법이 정립된 공학적 개념이 필요한 것입니다. 즉, 초등학교 학생들에게 수의 개념이 필요하듯이, 우리 생활에 깊게 파고든 SW를 위해서는 발주처, SW관련 기업 등 이해관계자들에게 SW공학적 개념이 필요한 것입니다.
지난 1990년대 초반 IT열풍과 함께 SW인력에 대한 양적인 성과를 이루어 냈습니다. 이후 SW관련 취업관문에서 ‘SW개발’은 간단한 ‘XX언어 2주 완성’이라는 책 한권을 보거나, ‘속성 XX개발자 1개월 과정’을 이수하면 할 수 있다고 생각하는 많은 사람들이 있습니다. 이것은 마치 주어진 몇 개의 덧셈 문제를 외우려 노력하는 것과 같습니다. 이렇게 출발한 SW개발은 결국 수많은 시행착오와 반복되는 작업, 결과적으로 통제가 불가능한 SW개발 상태, 즉 SW위기를 초래하기가 쉽습니다.
또한 우리는 SW개발 과정 속에서 단순 반복적인 일들과 복잡하고 방대한 작업들의 비효율적인 대처 방법에 대하여 의문을 갖게 됩니다. 체계적으로 접근해서 보다 빠르고, 신뢰성 있는 개발 결과물을 도출하고 싶은데, 현실은 항상 납기 시간에 쫓기면서 비효율적으로 작업을 하고 있는 것입니다. 이와 같은 것을 극복하기 위하여 SW공학이 존재하며, SW공학은 SW개발 프로젝트의 품질과 생산성을 높이기 위한 뼈대가 되는 것입니다.
유비쿼터스 시대에 살고 있는 우리는 생활 곳곳에서 SW를 이용하고 있으며, 우리 생활의 일부분으로 자리잡은 SW의 품질과 생산성을 높이기 위해서 SW공학 적용은 선택이 아니라 필수인 것입니다. 즉, 우리가 사는 세상은 SW공학을 필요로 하는 것입니다.
2. 이제 SW공학의 세계로…
SW공학이란 용어는 1960년 후반에 ‘SW 위기’라는 것을 토론하기 위해서 열린 국제 회의에서 제안되었습니다. 3세대 컴퓨터 하드웨어의 소개로 이전의 시스템 개발 방법을 큰 SW시스템에 적용하는 것이 불충분하게 되면서 SW 위기가 대두되었던 것입니다. SW공학은 컴퓨터 시스템들의 SW를 개발하는데 필요한 방법, 도구에 관심을 두고 있다1). 좀 더 SW공학을 이해하기 쉽게 방송 제작 프로세스와 SW개발 프로세스를 비교하여 설명하면 다음과 같습니다.
모 방송사의 인기 버라이어티 프로그램의 제작과정을 한번 살펴보자. 제작진과 출연진이 구상한 프로그램의 각 코너들은 자체적으로 수많은 검토와 검증, 리허설을 거쳐 무대에 오르게 됩니다. 무대에 오르게 된다고 해도 반드시 방송에 나가는 것은 아닙니다. 현장의 반응을 살펴 바로 편집되는 경우도 있으며, 방송 후에는 시청자의 반응에 따라 코너가 폐지되기도 하고 반응이 좋을 경우 새롭게 다듬어져서 장수코너로 자리 잡기도 합니다. 장기간 제작진과 출연진이 끊임없이 바뀌어 왔지만 인기프로그램으로 존속할 수 있는 이유는 바로 이러한 체계를 엄격하게 유지해 왔기 때문이라고 볼 수 있습니다.
3. 우리의 미래는 SW공학이다
앞에서 SW 중요성을 반영하여 SW공학의 실체를 설명하고자 하였으며, SW공학의 필요성, 우리나라와 선진외국과의 SW공학 수준 차이, SWEBOK의 소개, SW공학 기술 적용 성공사례를 통해 SW공학에 대하여 체계적으로 접근하고자 하였습니다.
그 동안의 수많은 SW 개발 프로젝트를 통해 성공사례와 실패사례가 존재합니다. 우리는 지속적으로 SW공학을 적용하지 못해 실패한 SW개발 프로젝트들을 쉽게 찾아 볼 수 있습니다. 이들 사례를 보면, 비용, 기간 등 현실적인 문제 때문에 SW공학 적용이 결코 쉬운 것만은 아니다. 그러나, 장기적인 관점에서 SW개발비용 절감, 적기개발, 품질개선을 위해서 SW개발 프로젝트에서 SW공학을 적용해야 하는 것도 주지의 사실입니다. 이에 발주자 측면, 기업 측면, 인프라 측면에서 SW개발 시 효과적인 공학 적용 방향에 대하여 정리하면 다음과 같습니다.
첫째, SW개발기업 뿐만 아니라 발주자도 SW공학 사상을 인지하고 성공적인 SW개발 프로젝트가 되기 위해서 SW요구사항 제시부터 SW인수까지 양질의 SW가 생산되도록 노력해야 합니다.
둘째, SW개발 및 유지보수 관련 기업은 지속적인 SW공학 적용에 대한 의지가 반드시 필요하다. 또한, 선행 SW프로젝트의 시행착오 결과를 평가하고 정리한 후 후행 SW프로젝트에서 효율적으로 대처해야 할 것입니다.
셋째, 인프라 측면에서 효율적인 방법론, 자동화된 도구를 사용해야 한다. 복잡해지는 SW아키텍처 특성과 프로젝트 환경을 고려한 SW 개발방법론 및 프로젝트 관리방법론을 적용해야 하며, 자동화된 도구 활용을 통해 SW 컴포넌트의 재사용성을 증대시키고 SW개발 생산성을 향상시켜야 합니다.
자세히 보기 →