<테마특강> SW기술의 변혁과 발전

 필자 양해술

 88∼91년 일본 오사카대학 공학박사  

 80∼95년 강원대학교 전자계산학과 교수

 95년∼현재 호서대학교 벤처전문대학원 교수

  한국소프트웨어품질연구소 소장

  한국정보처리학회 부회장

  SW공학연구회 위원장

 

 소프트웨어가 변하고 있다. 비즈니스 활동을 단순히 지원하던 것에서 비즈니스 활동 자체가 되거나 전략적 의사결정을 하는 데 필요한 요소가 되고 있다. 금융 빅뱅이나 전자상거래, 비즈니스 활동의 변혁은 그것을 실현하는 새로운 소프트웨어가 계속적으로 필요하고 그 변화가 지속적으로 필요하기 때문에 소프트웨어의 빅뱅이 요구되고 있다.

 PC의 폭발적인 보급에 따라 소프트웨어는 다수의 일반 소비자를 대상으로 하는 소비재가 되고 있다. 또한 웹으로 상징되는 인터넷 기술의 급속한 발전으로 인해 새로운 소프트웨어 아키텍처가 등장하고 있다. 웹을 중심으로 하는 사용자 인터페이스, 분산 객체 환경과 컴포넌트웨어 등 네트워크를 중심으로 다양한 애플리케이션을 제휴할 수 있는 소프트웨어 아키텍처가 요구되고 있다.

 인터넷의 급속한 보급은 그룹웨어, 전자상거래, CALS/EDI 등의 네트워크을 활용하는 새로운 유형의 애플리케이션을 창조했다. 또한 소프트웨어의 대중화로 지금까지 소프트웨어의 형태, 특히 그래픽유저인터페이스(GUI)가 아직 일반 사용자에게는 사용에 어려움이 있다는 점이 새롭게 부각되고 있다. 이로써 종래의 GUI 기본구조를 다시 숙고한 새로운 GUI가 등장하고 있다.

 더욱이 다양한 사무용 애플리케이션 패키지가 제공되고 소위 엔드유저 스스로가 이와 같은 패키지를 조합하여 보다 나은 이용이 가능한 엔드 유저 컴퓨팅(EUC) 또는 엔드 유저 개발(EUD)이 보편화될 것이다.

 한편 VRML(Virtual Reality Modeling Language)이나 3D 그래픽스 기술의 발전은 프로그래밍이라는 개념에도 영향을 주고 있다. 예컨대 비디오 게임 스타일의 애니메이션을 프로그램 언어로 이용하는 방법이 제안되고 있다.

 웹의 발전은 집중 또는 일체로 된 소프트웨어 아키텍처가 네트워크를 중심으로 하여 모듈화로 분산된 소프트웨어 아키텍처로 전환되는 것을 촉진시켰다. 소프트웨어 개발 환경의 구조가 크게 변모함에 따라 종래의 대형 호스트를 중심으로 하는 집중 개발 환경으로부터 워크스테이션과 네트워크를 기반으로 하는 분산 개발 환경으로 바뀌고 있다. 또한 소프트웨어 실행 환경의 개방화와 다운사이징 자체가 거대하고 복잡하여 소프트웨어 시스템의 개발 환경에도 큰 변화를 초래하고 있다.

 종래의 소프트웨어 개발 기술은 대규모의 복잡한 프로그램 코드를 개발하는 것이 목적이었다. 그것은 벽돌을 쌓아 고층 빌딩을 짓는 것에 비유할 수 있다.

 그러나 컴포넌트웨어나 자바의 출현으로 소프트웨어 아키텍처의 모듈화나 플랫폼에 따르지 않는 소프트웨어의 실행이 가능해지고 있다. 이제 소프트웨어는 하나씩 작성하는 시대로부터 조합시키는 시대로 변화하고 있다. 즉 소프트웨어의 다운사이징이 요구되는 시대다.

 또한 소프트웨어 아키텍처의 변화는 네트워크를 전제로 하는 아키텍처로서의 의미도 가지고 있다. 웹의 보급으로 인해 네트워크를 전제로 한 소프트웨어 아키텍처가 요구되고 있다.

 소프트웨어 아키텍처 변화의 또 다른 의미는 변화를 전제한 아키텍처와 개발 기술이라는 점이다. 소프트웨어는 업무용이든 개인용이든 사용 형태의 변화에 대응하여 진화하고 성장하지 않으면 안된다.

 ◇SW 개발 기술의 변화=변화에 대응할 수 있는 소프트웨어를 구현하기 위해서는 소프트웨어 전체의 포괄적인 구조의 형태를 묻지 않을 수 없다. 이 문제는 소프트웨어 아키텍처로서 수년간 연구 개발이 진전돼 왔다.

 종래에도 소프트웨어 아키텍처의 사고 방식이 있었지만 소프트웨어의 각 계층에서 아키텍처를 설계하거나 재사용하는 구조는 없었다.

 이것에 대해 그림 2와 같이 소프트웨어 아키텍처를 기술하는 아키텍처 기술 언어ADL(Architecture Description Language), 아키텍처 설계 방법론, 아키텍처 설계 지원환경, 아키텍처 스타일(패턴), 아키텍처 지향 개발 등 광범위한 연구 개발이 진행되고 있다.

 동일한 업무나 애플리케이션 영역의 소프트웨어 아키텍처는 유사하다고 생각할 수 있다. 이와 같은 유사한 애플리케이션의 모음을 ‘애플리케이션 도메인’이라 부른다. 동일한 애플리케이션 도메인 내에서는 애플리케이션의 아키텍처는 유사하고 이것을 ‘도메인 고유 소프트웨어 아키텍처 DSSA(Domain Specific Software Architecture)’라 부른다. 그중에서 동일 제품 계열의 애플리케이션군을 프로덕트 라인이라 부른다. 실제로 아키텍처의 설계는 고도의 기술을 요구하는 것으로 단독으로 설계하는 것이 곤란하며 시간도 많이 소요된다. 현장에서도 과거의 유사 아키텍처를 본보기로 하여 개발한 것이 많다. DSSA나 프로덕트 라인은 아키텍처 전체의 재사용을 목표로 하고 있다.

 객체지향에서는 아키텍처에 따라 클래스를 구조화한 것을 애플리케이션 프레임워크라 부르며 이것은 애플리케이션의 한 형태라고 볼 수 있다.

 방법론의 측면에서는 사용자의 요구로부터 소프트웨어 아키텍처를 개별적으로 설계하는 것이 아니고 공통의 아키텍처를 기본으로 애플리케이션을 개발하는 방법론이 제안되고 있다.

 컴포넌트웨어는 조합하고 컴파일하여 그대로 이용할 수 있는 플로그앤드플레이(Plug & Play)형 소프트웨어 부품을 조합시켜 애플리케이션을 구축하는 기술이다. 대표적인 컴포넌트웨어 아키텍처로서 액티브X/윈도우DNA, CORBA(Common Object Request Broker Architecture), 자바빈즈(Beans)가 있다. 이것들은 분산처리 환경에서 부품을 조합시키는 기반이 되는 분산 객체 환경을 일체로 하여 제공한다.

 이와 같이 컴포넌트웨어 기술의 발전은 소프트웨어 개발 형태, 또는 소프트웨어 산업 구조의 재구조화를 재촉하고 있다. 그 징조는 국내외에서 소프트웨어 개발이 부품 개발과 부품을 조합시켜 애플리케이션을 개발하는 컴포넌트 인티그레이터로 발전된다는 점이다. 국내에서도 소프트웨어 컴포넌트의 벤더가 나타나고 있으며 이를 기반으로 정부에서도 컴포넌트를 구매하기 위한 정책을 추진하고 있다.

 따라서 이와 같은 재구조화는 필연적으로 소프트웨어 부품의 유통업(컴포넌트 브로커)을 발생시킨다. 특히 소프트웨어는 네트워크에서 유통될 수 있기 때문에 네트워크에서 소프트웨어의 판매, 유통이 미국을 중심으로 시작되고 있다. 이러한 유통업의 등장으로 소프트웨어 부품의 라이센싱 등 새로운 문제도 제기되고 있다.

 객체지향이 목표로 하는 것 중 하나는 재사용이다. 초기에는 계승에 의한 코드의 재사용, 또는 차분(差分) 프로그래밍이 이용되었다. 이것을 구현의 계승이라 부른다. 그러나 구현의 계승은 밀접한 계승 관계이고 상위 클래스의 구현 변경이 하위 클래스에 영향을 미치는 ‘연약한 기본 클래스 문제’가 생긴다. 이것에 대응하여 인터페이스의 재사용이 착안되고 인터페이스의 형태를 계승하는 ‘인터페이스 계승’이 사용되고 있다.

 재사용은 시스템의 계층에 따라 그 정밀도나 이용 방법이 달라진다고 생각되고 있다. 이들의 재사용 부품은 몇 가지로 분류할 수 있는데 설계와 프로그램의 재사용은 좋은 설계를 재사용하는 구조로서 시스템의 아키텍처를 재사용하는 소프트웨어 아키텍처나 국소적인 객체군의 설계를 재사용하는 디자인 패턴이 제안되었다.

 분산 객체 환경에서 클라이언트/서버 애플리케이션을 개발하기 위해서는 클라이언트와 서버 간에 객체를 이용할 수 있는 구조가 필요하다. 이것을 지원하는 기반 환경으로서 CORBA나 DCOM(Distributed Component Object Model) 등의 분산 객체 환경이 제공되고 있다. 고성능 PC와 충분한 대역폭을 제공하는 네트워크에 의해 분산 컴퓨팅이 가능해짐에 따라 기업 정보 시스템은 다양한 이기종 컴퓨터 환경에서 데이터와 응용 프로그램을 분산 운용하면서 프로그램의 상호 운영성과 사용자에게 분산의 투명성을 제공할 수 있게 됐다.

 분산객체 기술은 분산 시스템과 객체 지향 기술의 장점을 효과적으로 통합하는 기술이며 개발자에게 애플리케이션 개발의 생산성을 향상시켜주고, 사용자에게 분산 환경에 투명하게 통합된 정보를 제공한다. 이를 위해 OMG(Object Management Group)에서는 분산 컴퓨팅과 객체지향 기술을 하나로 합친 표준 아키텍처를 제안하게 되는데, 그것이 바로 CORBA다. 분산 객체 컴퓨팅의 표준으로 등장한 CORBA는 이기종 컴퓨터 시스템간의 분산 객체 운용에 큰 역할을 할 것으로 기대된다.

 개발 프로세스는 개발의 절차를 누구든지 이해할 수 있도록 형식적으로 모델화하고 개발자 각자의 배후에 있는 개발 방식의 구조적 문제를 해결하는 것이다. 87년의 프로세스 프로그래밍의 제안에 의해 소프트웨어 개발 프로세스의 연구와 개발이 본격화되었다.

 지금까지의 개발 프로세스는 단일 릴리즈(release)를 가진 폭포수형 모델이 중심이었다. 이 개발 프로세스는 대규모의 복잡한 소프트웨어 개발에 적용되고 있었다. 그러나 지금 새로운 소프트웨어 개발에 요구되고 있는 것은 개발 기간의 단축과 변화(성장·진화)에 신속히 대응하는 것이다.

 특히 객체지향 개발의 도입이나 RAD(Rapid Application Development)의 도입에서는 인크리멘탈(Incremental)한 개발 프로세스에 의한 인크리멘탈 딜리버리가 적용되고 있다.

 따라서 개발 프로세스의 개선을 위한 우수한 방법으로서 ISO9000시리즈 인증이나 CMM(Capability Maturity Model) 또는 SPICE를 이용한 프로세스 심사와 개선이 주목되고 있다.

 

 ◇소프트웨어 신시대=소프트웨어 개발의 여러 분야에서 새로운 패러다임이 도래하고 있다. 이점에서는 종래의 전문가를 중심으로 하는 닫힌 소프트웨어 구조로부터 사용자와 사회에 열린 소프트웨어 구조가 필요해지고 있다.

 한편, 이 분야에서는 미국 기업을 중심으로 치열한 개발 경쟁이 전개되고 있다. 이와 같은 국제적인 현황을 살펴볼 때 국내 정보기술(IT) 분야에서도 이와 같은 기술의 변혁기에 대비하여 소프트웨어 연구 개발에 대한 대응 방안이 체계적으로 모색되어야 한다.

 변혁기에는 기회도 있는 법이므로 우리 나라의 소프트웨어 기술자와 연구자가 새로운 기술에 도전하여 소프트웨어 개발의 신시대를 열었으면 하는 바램이다.


브랜드 뉴스룸