최근 몇 년 사이에 정보기술(IT)이 경제산업계뿐 아니라 일반 소비자에게 널리 보급됨에 따라 소프트웨어 엔지니어링 툴과 기술의 사용이 크게 늘어나고 있다. 인터넷의 급속한 확산과 더불어 소프트웨어의 과잉 공급현상이 일어남으로써 새로운 소프트웨어에 대한 수요가 급증하고 있다.
이처럼 인터넷이 기업과 학계, 사회 전반으로 확산됨으로써 소프트웨어 개발업체들이 응용 프로그램을 개발할 수 있는 기본 바탕이 마련됐다. 또한 프로세서와 메모리의 단위 가격이 꾸준히 내려가서 모든 기업체들이 컴퓨터를 사용할 수 있게 됐고 특정 컴포넌트 소프트웨어는 많은 기업체로 하여금 IT와 사업 전략을 통합할 수 있도록 해주었다. 하지만 오랫동안 일부 기업의 경영진은 IT를 하나의 추가적인 기능 또는 사업과는 직접 관계가 없는 별개의 것으로 간주해 왔다. 이런 단견으로 각국 기업체들의 소프트웨어 도입 프로젝트가 실패하거나 IT예산이 삭감되는 등 여러 가지 문제가 일어났다.
그러나 이제는 경영진의 IT에 대한 인식이 달라졌다. 많은 기업체들의 사업부서가 각기 다른 사업을 추진하면서 부서간의 상호 협력분야가 넓어짐에 따라 IT구조도 각 사업부서의 목적에 적합한 컴포넌트로 구성되면서 서로 네트워크로 연결돼야 하기 때문이다. 현재 자바와 같은 제품이 시장에서 성공했고 인터넷과 월드와이드웹(world wide web)이 폭발적으로 확산되고 있어 IT산업은 네트워크 중심으로 발전하고 있다.
IT산업의 변화에 따라 컴포넌트 기반 소프트웨어 엔지니어링(CBSE: Component-Based Software Engineering)의 중요성이 대두되고 있다. 컴포넌트 기반 소프트웨어 엔지니어링의 주요 기능은 핵심 데이터를 통합하고 중복되지 않게 해 중앙 저장소에 저장하고 이를 소프트웨어 개발 팀원들이 공유할 수 있도록 하는 데 있다. 객체기술을 사용하면 개방 시스템 모델에 필요한 컴포넌트를 제공할 수 있으나 컴포넌트를 많이 사용하면 개방 시스템이 극히 복잡해질 수 있다. 각기 다른 여러 업체나 시스템의 컴포넌트와 객체 프로그램을 사용해 견실하고 기능이 우수한 응용 시스템을 개발하려면 컴포넌트 기반 소프트웨어 엔지니어링의 툴, 환경, 표준, 방법론, 전문지식 등이 있어야 한다.
이런 가운데 인터넷 기술은 사업 응용 프로그램과 개발 기술면에서는 아직 성숙되지 않은 상태에 있고 툴 시장은 주력 제품이 없이 군소 제품이 난립해 있다. 많은 신생기업들이 인터넷 개발 툴 신제품을 발표하고 있으나 진정한 의미의 완벽한 인터넷 개발 환경을 제공하는 제품이 없는 상황이다. 게다가 표준 주력 개발 툴이 없는 것이 문제다. 앞으로 가까운 장래에 HTML, 플러그인(Plug-In), 액티브엑스 컨트롤스(ActiveX Controls), 자바 등 사실상의 인터넷 표준이 나와서 인터넷 기능을 충분히 지원하는 클라이언트 서버 환경의 기초가 다져질 것으로 보인다.
기업 내 정보 시스템을 구축하고 일반 소비자를 대상으로 하는 제한적인 인터넷 정보 서비스를 제공하기 위하여 TCP/IP와 다른 인터넷 표준을 채용하는 업체가 늘어남에 따라 응용 프로그램 개발업체들이 기존의 정적인 웹기반 정보보다 더욱 생동감 있는 콘텐츠를 개발하는 데 힘을 기울이고 있다. 하지만 새로운 인트라넷/웹 응용 프로그램이 나와있음에도 불구하고 기업체들이 클라이언트 서버 환경에 있는 기존 응용 프로그램을 새로운 인트라넷으로 제대로 옮기지 못하고 있다. 현재로서는 기존 코드를 새로운 인터넷 호환 소프트웨어와 통합하기가 어려우며 이러한 상황이 앞으로 상당기간 지속될 것으로 보인다.
세계는 소프트웨어로 넘쳐 흐르고 있다. 전통적인 소프트웨어는 연속적인 선형(線形) 명령에 따라 입력해서 출력하는 논리로 구성돼 있는데 이러한 경직된 선형 구조의 소프트웨어는 확장이나 수정, 관리하기가 어렵다. 하지만 객체지향 소프트웨어는 이러한 선형 논리절차를 각 객체(object)와 관련된 데이터뿐 아니라 논리절차나 방법을 갖고 있는 컴포넌트 또는 객체로 재구성할 수 있다. 객체지향 소프트웨어의 이런 기능은 엔지니어들로 하여금 기본 소프트웨어의 하위세트나 상위세트인 관련 객체로 계층을 만들 수 있게 해준다.
관련 객체는 공통적인 특성을 가진 몇 가지의 동류(同類)로 분류할 있는데 이런 방식으로 소프트웨어를 발췌함으로써 복잡한 시스템을 단순화할 수 있다. 가령 운반장비를 예로 들어 계층별 등급으로 나눌 수 있는데 운반장비에는 항공 운반장비, 육지 운반장비, 해상 운반장비가 있고 육지 운반장비는 다시 모터가 있는 운반장비와 모터가 없는 운반장비로 나뉘며 모터가 있는 운반장비에는 트럭, 자동차, 모터사이클, 기차 등이 있다. 여기에서 모든 운반장비는 가격, 규격, 최고 속도, 콘텐츠 등의 특성과 출발, 제동, 가속, 감속 등의 기능을 갖고 있다. 이처럼 자동차의 특성을 발췌해냄으로써 이 운반장비의 일반적인 특징을 다시 설명하지 않고 새로운 형태의 자동차를 설계하던가 기능을 추가할 수 있다.
이와 같이 객체지향 소프트웨어를 사용해 클라스(class)는 새로운 데이터를 포괄하는 새로운 객체를 만들 수 있는데 클라스는 영원하고 객체는 휘발성이 있다. 객체지향 기술의 또 하나 특성은 서로 다른 문맥 속에서 여러 가지 기능의 의미를 식별할 수 있는 동질이상(同質異像) 기능이다. 가령 우리는 자동차를 ‘운전(drive)’하던가 골프공을 ‘치(drive)’던가 또는 나무 막대기를 땅에 박(drive)’을 수 있다. 여기에서 drive라는 단어는 문맥에 따라 의미가 달라진다. 이러한 발췌, 요약, 계승, 동질이상 등의 기본 개념이 소프트웨어 엔지니어링의 주요 툴이다. 클라스를 수정하고 보존하면 상당히 많은 시간과 노력을 절약할 수 있다.
지난 몇 년 동안 자바는 IT산업 전반에 걸쳐 커다란 영향을 미쳤다. 일부 기업들은 자바를 중세기 연금술사들이 보통 금속을 순금으로 변하게 했다는 신비로운 돌이나 컴퓨팅 산업계를 뒤엎고 IT패러다임을 재편할 수 있는 트로이의 목마로 보고 있다. 또 마이크로소프트의 경쟁 업체들은 자바를 윈도의 킬러라고 추켜세우기까지 하고 있다. 그러나 자바가 프로그래머들에게 대단한 인기가 있음에도 불구하고 기대에 부응하지 못하고 있다. 현재 자바는 데스크톱PC나 클라이언트보다 기업의 서버에 더 적합하다.
컴포넌트 기반 시스템의 비중을 낮출 수 있는 방법은 기업 전체를 포괄하는 하나의 체제를 구축해 그 안에서 공통적인 데이터를 저장하고 서비스를 공유하도록 하며 거기에 응용 모듈이나 컴포넌트가 연결되도록 하는 것이다. 이것은 클라이언트 서버시스템과 근본적으로 다른 구조로서 전문가들은 이것을 n(부정정수)계층 구조라고 한다. 클라이언트 서버 환경은 클라이언트와 서버 사이에서만 응용 프로그램 논리를 분배할 수 있는 데 비해 n계층 구조는 플랫폼의 숫자에 따라 응용 프로그램 논리를 얼마든지 분할할 수 있어서 시스템이 유연성을 갖게 한다. n계층 구조는 미래에 어느 기술이 IT전략에 영향을 미치게 될지 불확실한 상황에서 기업의 투자를 어느 정도 보호해준다.
자바와 마찬가지로 확장 마크업언어(XML:eXtensible Markup Language)도 플랫폼과 상관없이 사용할 수 있는 언어다. 그러나 XML이 과장되게 알려져 있는 부분이 있다. 먼저 XML이 새로운 HTML로 알려져 있는데 이들의 기능에는 서로 다른 부분이 있으며 당분간은 두 언어가 공존할 것으로 보인다. 일부 기업체들이 XML과 결합한 새로운 HTML인 XHTML을 사용하기 시작했는데 이것이 추후에 HTML을 대체할 수도 있을 것이다. XML이 기술로 알려져 있는데 HTML과 마찬가지로 XML은 기술이 아니라 하나의 문법이다. 또 XML은 기업이 정보를 쉽게 교환할 수 있게 해준다고 알려졌는데 수정하기가 쉽고 인터넷을 통해 응용 프로그램 사이의 데이터를 교환하기가 쉬운 것은 사실이나 정보교환을 용이하게 하는 것은 아니다. 그뿐 아니라 XML이 새로운 EJB(Enterprise Java Beans)나 CORBA(Common Object Request Broker Architecture)라고 주장하는 사람들이 있는데 현재로서는 EJB나 CORBA의 핵심 포맷을 XML로 대체할 가능성이 없다.
ASP들이 인터넷을 통해 기업이 필요로 하는 모든 응용 프로그램을 제공하기 시작함에 따라 앞으로 머지 않아 기업체들이 컴퓨터를 구입하지 않고 응용 프로그램 서비스업체(ASP:Application Service Provider)를 활용하게 될 것이다. ASP를 이용하면 총 IT소유비용을 절감할 수 있을 뿐 아니라 시스템의 설치 기간은 물론 투자회수 기간도 단축할 수 있다. 또한 기업의 소프트웨어와 응용 프로그램이 폭발적으로 늘어나고 사용자들이 인터넷을 통해 새로 나온 소프트웨어, 업그레이드, 패치, 응용 프로그램 등을 얼마든지 내려받을 수 있게 됨에 따라 IT 업계가 기존의 중앙집중컴퓨팅 방식으로 되돌아가려 하고 있다. 기본기능이 있는 클라이언트 단말기만 있으면 네트워크를 통해 모든 응용 프로그램에 접속, 사용할 수 있게 되기 때문이다.
기업이 정보 시스템을 재구축하고 응용 프로그램을 개발하는 것은 쉬운 일이 아니다. 더구나 기업체들이 제한된 자금, 시간, 품질을 가지고 변화하는 사업상황에 대응하기는 더욱 어렵다. 따라서 기업은 신속하게 응용 프로그램을 개발할 수 있는 툴, 기술 및 기능을 필요로 하고 있다. 이처럼 응용 프로그램의 신속한 개발(RAD:Rapid Application Development)에 대한 수요가 급증하고 있으나 이 부문 기술과 지원체제는 아직 성숙되지 않은 상태다.
분석 및 디자인 툴, 소프트웨어 개발 툴, 업무용 객체, 데이터 저장 시장 등을 포함하는 관련 분야 기술 및 서비스 세계 전체 시장은 지난 2001년 약 347억달러에서 오는 2004년에 약 1009억달러, 2009년에는 2735억달러로 성장할 것으로 예상된다. 이 중 데이터 저장 시장이 가장 빨리 확대돼 2001년 103억달러에서 2004년 약 388억달러, 2009년에는 약 1070억달러로 증가할 것으로 예상된다.
◆기술의 중요성
세계 각국 기업체들이 경쟁력을 높이기 위해 IT를 사용하고 있다. 컴퓨터기술을 사용하면 데이터를 신속하게 처리하고 복잡한 정보를 분석할 수 있으며 다른 컴퓨터와 광범위하게 접속할 뿐 아니라 분산된 IT시스템 사이에 상호 작용할 수 있다. 컴퓨터의 확산과 함께 소프트웨어와 응용 프로그램이 널리 보급돼 각종 업무처리에 사용되고 있으나 기능과 제품이 복잡해짐에 따라 이들을 다루기가 어려워졌다. 앞으로 응용 프로그램의 개발은 컴포넌트 기반 소프트웨어 엔지니어링 기술과 제품에 의존하지 않으면 안될 것이다.
응용 프로그램을 구성하는 재사용 가능한 소프트웨어 코드인 컴포넌트는 때로는 순수한 소프트웨어 객체보다 더 크고 추상적인 경우가 있다. 기업의 정보 시스템이 일관성이 있고 전사적인 규모로 돼 있다면 컴포넌트는 이러한 시스템의 복잡성을 크게 줄여 줄 수 있다. 컴포넌트는 새로운 시나리오인 동시에 소프트웨어 엔지니어링의 시발점이라 할 수 있다. 일부 전문가들은 컴퓨터지원 소프트웨어 엔지니어링(CASE:Computer-Aided Software Engineering)이라는 용어와 개념이 미래의 컴포넌트 기반 응용 프로그램의 개발과 중복될 것으로 보고 있으나 소프트웨어 엔지니어링이 더욱 중요해질 것으로 보인다. 19세기와 20세기에 제조업체들이 기계장치의 부품을 표준화해 생산성을 획기적으로 높임으로써 제품의 양산을 이룩했듯이 표준 통신 인터페이스와 프로토콜을 포괄하는 컴포넌트는 21세기의 소프트웨어 산업의 성장을 가속화할 것으로 예상된다. 하지만 제조 공장의 양산 조립라인과 달리 차세대 컴포넌트 기반 소프트웨어는 응용 프로그램 모듈의 양산뿐 아니라 대량 맞춤생산도 가능하게 해줄 것이다.
소프트웨어 개발의 획기적인 전기가 여러 해 전에 마련됐으나 컴포넌트 기반 소프트웨어 개발은 이제야 자리가 잡혔다. 기업의 다음 단계 컴퓨팅기술로서 컴포넌트 기반 소프트웨어에 주목하고 있는 IT책임자와 관리자들이 늘어나고 있다. 전통적인 선형 응용 프로그램 개발 전략 가지고는 컴포넌트 기반 소프트웨어를 유연하게 개발할 수 없기 때문이다. 앞으로 응용 프로그램 개발 전략을 변경하지 않고 소프트웨어 프로젝트 관리기법을 그대로 두거나 또는 컴포넌트 기반 기술의 채용을 거부하는 사용자나 공급업체는 경쟁에서 뒤처질 것이다. 반대로 컴포넌트 기반 개발을 채택하고 개발에 필요한 자원, 인프라, 응용 프로그램 체제를 갖추는 업체는 경쟁력을 높일 수 있을 것이다.
SRIC-BI자료임
<정리=이규태기자 ktlee@etnews.co.kr>
<테크애널리스트=로브 애드먼드>
<자료문의 예전대로>