[테마특강] 소프트웨어 개발과 관리기술

소프트웨어 개발자들은 소프트웨어의 수명이 6개월 정도라고 가정한다. 이러한 사실이 비록 모든 소프트웨어에 적용되지는 않겠지만 그만큼 사용자의 요구 수준이 다양해지고 관련기술이 비약적으로 발전하고 있으며 사용자의 품질에 대한 요구 또한 매우 높다는 사실을 단적으로 보여준다. 따라서 급변하는 시장에서 사용자 요구를 만족시키기 위해서는 고품질의 소프트웨어를 짧은 라이프사이클 내에 개발할 수 있는 기술이 필요하다.

소프트웨어 공학은 소프트웨어의 개발, 운영, 유지, 보수 과정을 체계적인 접근방법에 따라 수행하도록 해 생산성과 품질을 높이기 위한 것이다. 즉 이러한 체계적인 접근방법을 제시함으로써 소프트웨어의 개발과정을 가시화하거나 관리를 쉽게 하고 평가근거를 마련하기 위한 것이라고 할 수 있다.

소프트웨어 공학은 개발, 관리, 환경에 관한 기술로 분류할 수 있다. 개발기술에 속하는 것은 개발패러다임, 개발기법 또는 방법, 프로세스 자동화기술 등이 있다. 관리기술에는 품질보증, 형상관리, 프로젝트관리 등이 포함된다. 프로그래밍 환경(예를 들면 분산환경), 개발도구, 컴퓨터지원 협동작업(CSCW:Computer Supported Cooperative Work) 기술 등은 개발환경기술에 속하는 것이다. 최근에는 안전­보안, 표준화, 감사 등에 관한 활동도 크게는 소프트웨어 공학의 범주에 포함되고 있는데 이것은 컴퓨팅 환경의 발전에 따라 소프트웨어 공학의 의미가 확대돼 왔고 그 활동범위도 점차 넓어지고 있음을 보여준다.

소프트웨어 공학 중 최근 컴퓨팅환경 변화에 따라 중요한 관건이 되고 있는 소프트웨어 개발의 기본 틀(Framework)로 제시되는 개발 프로세스에 관한 기술, 객체지향기술, 개발 자동화 도구기술 등의 기술적 사항과 최근 관심의 대상이 되고 있는 소프트웨어 품질평가, 소프트웨어 공학 관련 표준화에 관한 노력 등에 대해 알아보자.

최근 소프트웨어 개발과정에서 생산성 및 품질을 높이기 위해 다양한 기법, 방법론, 자동화 도구들이 개발됐으나 이들의 무분별한 도입은 오히려 개발자를 혼란스럽게 만드는 계기가 되었다. 소프트웨어 생명주기 프로세스(Software Life Cycle Processes)는 소프트웨어 실무자들이 동일한 개념에서 일관되게 개발 및 관리업무를 수행할 수 있도록 하기 위해 국제표준(ISO/IEC 12207)으로 개발한 것이다. 여기에서 프로세스는 조직, 작업순서, 관리방법, 기법, 도구, 환경 등을 모두 포함한 것이다.

소프트웨어 생명주기 프로세스는 소프트웨어의 공급, 개발, 운영 및 유지, 보수 등에 어떠한 내용의 업무가 수행돼야 할 것인가를 단계적으로 정의하고 있다. 이것은 17개의 프로세스와 각 프로세스에서 수행돼야 할 74개의 활동, 그리고 각 활동을 수행하는 데 필요한 2백24개의 세부 업무의 세 계층으로 구성돼 있다. 17개 프로세스는 크게 기본 프로세스(Primary Process), 지원 프로세스(Supporting Process), 그리고 조직 프로세스(Organization Process) 세 부분으로 나뉘어 정의된다. 기본 프로세스는 소프트웨어의 획득, 공급, 개발, 운영, 유지, 보수를 위한 프로세스, 활동, 세부 업무가 정의돼 있다. 지원 프로세스는 기본 프로세스가 효과적으로 진행될 수 있도록 지원하기 위해 문서화, 형상관리, 품질보증, 검증, 확인, 합동검토, 감사, 문제해결에 관한 내용을 정의하고 있다. 조직 프로세스는 조직차원에서 계속적으로 프로세스를 관리하고 개선하기 위해 관리, 기반구조, 개선, 교육훈련을 위한 프로세스, 활동, 세부 업무가 정의돼 있다.

소프트웨어 생명주기 프로세스는 단지 소프트웨어를 개발하는 과정에서 필요한 활동을 정의하는 것을 목적으로 하고 있을 뿐 활동 및 세부 업무의 구현 또는 수행방법을 규정하는 것은 아니다. 즉 개발을 위해 필요한 내용에는 무엇(What)이 있는지를 정의하고 있는 것이지 어떠한(How) 방법으로 수행하라고 말하고 있지는 않다. 따라서 특정 개발모형이나 개발방법론을 한정지어 말하지는 않고 개발 당사자들이 프로젝트를 위한 생명주기 모형을 채택하고 여기에 맞도록 필요한 프로세스, 활동 및 세부 업무를 선정해 적용하도록 하고 있다.

현재 소프트웨어 생명주기 프로세스는 미국, 일본, 영국, 프랑스, 호주, 캐나다, NATO 등에서 표준으로 채택해 적용하고 있다. 조직에서 소프트웨어 생명주기 프로세스를 정착시킬 때 드는 비용은 소프트웨어 개발예산의 5∼15% 정도, 기간은 약 6개월 내지 18개월이 소요되는 것으로 보고되고 있다.

90년대 들어 중요한 기술로 자리잡기 시작한 객체지향기술은 처리과정 중심이 아닌 데이터(또는 객체) 중심으로 개발이 이루어지는 객체지향(Object Oriented) 패러다임을 기반으로 하고 있다. 객체지향 방법은 대상 시스템을 객체들과 객체간 상호작용으로 파악하고 있다. 따라서 객체 단위로 재사용성(Reusability), 이식성(Portability), 확장성(Extendability)을 향상시킬 수 있다. 객체지향기술은 프로그래밍 수준에서 시작해 분석설계를 위한 방법 또는 기법, 테스팅에도 적용되고 있으며 데이터베이스 기술 등에도 응용되고 있다. 특히 멀티미디어, 그래픽 사용자 인터페이스, 클라이언트 서버 등 새롭게 나타난 컴퓨팅 환경에 효과적으로 적용되는 등 많은 분야에서 각광받고 있다. 최근에는 여러가지 객체지향 개발기법(Rumbaugh, Booch 등의 방법)이 하나로 통합되는 과정(unified method)을 거치고 있고 OMG(Object Management Group)에 의해 객체지향기술의 표준화 활동이 이루어지고 있다.

흔히 CASE(Computer Aided Software Engineering) 도구는 소프트웨어 개발과정의 전체 또는 일부를 자동화해 효율을 높이기 위한 것이다. 이러한 CASE 도구는 소프트웨어의 생산성과 품질을 높이는 데 이제는 필수적인 기술로 자리잡아가고 있다. CASE가 가지고 있는 일반적인 기능으로는 특정기법 지원, 문서의 자동 작성, 소스코드 생성 등이 있고 요구사항 분석, 설계, 프로그래밍, 테스트 등의 단계를 지원하거나 프로젝트 관리를 가능하도록 한다. 현재 개발돼 있는 대부분의 CASE 도구들은 앞서 언급한 기능의 일부만을 지원하고 있다. 그러나 앞으로의 CASE 도구들은 다양한 시스템 개발기법을 활용할 수 있도록 하고 개발환경을 통합시키고 공동작업을 지원하는 등 통합된 형태의 도구가 될 것이라고 기대된다. 많은 사례에서 CASE 도구를 도입해 생산성 향상을 이루지 못하는 경우를 발견할 수 있는데 이것은 조직 차원에서 프로젝트 적용을 위한 기본적인 프로세스와 수행절차, 지원기법 등이 포함된 방법론이 정착되지 않은 상태에서 적용됐기 때문인 것이다. 즉 CASE 도구는 기존 수작업으로 수행되던 업무나 처리절차를 자동화하는 것인데 업무와 절차가 정의되지 않은 상태에서 CASE 도구를 사용했기 때문에 그 효과가 미약했던 것이다.

소프트웨어 개발 및 관리를 위한 새로운 기술이 개발되는 것은 소프트웨어의 품질을 향상시키기 위한 과정으로 귀결된다. 현재 소프트웨어 제품의 품질을 측정하고 평가하기 위해 품질평가 모형의 국제 표준화가 진행되고 있다.

대표적인 소프트웨어 프로세스 평가모형인 미국 카네기 멜론 대학에서 제시한 CMM(Capability Maturity Model)이 있다. 이 모형은 관리(Management), 조직(Organization), 공학(Engineering) 영역에 걸쳐 5단계로 프로세스 성숙도 수준을 구성하고 있고 상위 단계의 성숙도 수준으로 가기 위해서는 추가적인 개선활동을 요구된다. 현재 이와 유사한 형태의 모형을 하나의 통일된 모형으로 제안하고 있는 ISO/IEC의 SPICE(Software Process Improvement and Capability dEtermination) 모형은 소프트웨어 프로세스 심사를 위한 표준을 개발하고자 하는 국제적 프로젝트다.

이 모형은 그 영역을 고객­공급자, 공학, 프로젝트, 지원, 조직 등으로 구분하고 각 분야를 구성하는 프로세스 모델을 정의하고 있다. 그리고 소프트웨어 품질보증을 위한 대표적인 국제표준으로 ISO 9000-3의 품질기준은 다음의 문제점이 있는 것으로 지적되고 있다. 즉 ISO 9000에서 요구하는 조건은 일정 규모의 조직이 아니면 충족시킬 수 없고 계속적인 품질개선 방안을 제시하지 못한다는 것이다. 따라서 가까운 장래에 소프트웨어 분야에서는 SPICE 모형이 ISO 9000을 대체할 것으로 예상되고 있다.

소프트웨어의 응용분야와 개발환경이 다양해짐에 따라 소프트웨어 공학에서는 새로운 기술을 수용하고 표준화하고자 하는 경향이 두드러지고 있다. 특히 통신기술의 발달로 인해 사용자는 더욱 다양한 서비스를 요구하고 있고 여기에는 실시간 시스템기술, 분산 시스템기술 등이 고려돼야 한다. 현재 실시간 시스템 개발을 위해 많은 기법이 제시되고 있고, 특히 이질적인 시스템간 상호 운영성을 보장하기 위해 분산개발환경에 대해 ISO/CCITT, OSF, OMG 등의 단체에서 각각 표준안을 제시하고 있다. 특히 통신분야의 TINA에 의한 표준화 노력은 주목할 만하다.

소프트웨어 공학에서의 표준화는 소프트웨어 개발에 관련된 전 분야에 걸쳐 이루어질 수가 있다. 간단하게는 용어의 표준에서 시작해 개발과정을 표준화하고 나아가서는 소프트웨어 품질을 표준화하는 방향으로 나아가고 있다. 표준화가 성공적으로 이루어지면 소프트웨어의 개발과정을 효율적으로 통제하고 관리할 수 있게 돼 생산성 및 품질의 지속적인 개선을 기대할 수 있다.

저자 약력 :

全珍玉

1977∼1984 한국외국어대학교 학사

1984∼1987 미국 조지아 주립대학 석사(정보시스템)

1990∼1995 한국외국어대학교 박사(경영정보학)

1986∼1987 미국 INTEC 연구소

1987∼현재 시스템공학연구소 책임연구원/소프트웨어공학연구부장


브랜드 뉴스룸