본문 바로가기
프로그램 개발(분석, 설계, 코딩, 배포)/2. 개발

소프트웨어 품질관리

by 3604 2024. 5. 13.
728x90

출처: https://blog.naver.com/kpfisnet/221532183316

[KPFIS 인사이트]재정정보시스템의 소프트웨어 품질관리_4월호

 한국재정정보원  2019. 5. 8. 9:58

01

배경

최근 인공지능, 빅데이터, 모바일 등 4차 산업혁명을 주도로 한 IT 기술이 매우 빠르게 진화하고 있다. 이러한 혁신적인 기술은 경제, 사회, 정치, 금융 등 국가 전반에 걸쳐 매우 다양한 정보시스템과 상호 연결이 중요시되는 초연결 사회로의 지향성이 매우 강조됨에 따라 정보시스템 또한 매우 복잡한 구조를 갖게 되었으며 다양한 요인의 결함이 소프트웨어로 유입되고 있다.

소프트웨어에 결함이 생기는 경우 장애가 발생되는데, 시스템 장애를 예방하기 위해서는 결함의 조기 발견과 제거, 결함 유입 방지 등 소프트웨어 품질관리가 매우 중요하다.

02

정보시스템 사고(장애)의 원인 및 과정

정보시스템의 장애를 유발하는 과정은 매우 다양하다. 그러나 일반적인 하드웨어 장애는 장애 유형이 잘 목록화되어 있고 감시나 통제, 장애 대책 등이 대체로 잘 작동하는 편이지만, 소프트웨어는 특화된 전문가의 개입이 주를 이루기 때문에 사전에 절차적으로 확인되거나 통제하기가 쉽지 않다. 소프트웨어 관점에서 정보시스템 사고의 과정을 살펴보면 먼저 운영자의 실수, 개발이나 구축 기간의 제한, 정보시스템 간 상호 연동성 및 복잡성 등의 결함요인이 존재하게 되고, 이러한 결함요인은 소프트웨어를 개발하고 구성하는 동안에 결함으로 유입되어 직접적 또는 잠재적 장애요소를 내포하게 된다. 이후 시간의 경과에 따라 소프트웨어의 결함은 시스템 장애로 이어지고 서비스 중단과 같은 심각한 상황으로 내몰리게 되기도 한다.

03

소프트웨어 품질관리의 중요성

소프트웨어의 품질을 향상시키고 잘 관리하기 위해서는 소프트웨어 개발 단계별로 결함을 조기에 발견하고 제거하는 게 매우 중요하다.

아래는 소프트웨어 개발에 있어 각 단계별 역할을 간략히 정의한 것이다.

2014년 정보통신산업진흥원(NIPA) 연구결과에 의하면 전체 결함의 약 83%가 요구사항 및 설계 단계에서 발견되고 17%가 코딩과 테스트 단계에서 발견됨에 따라 요구사항 분석과 설계 단계에서의 체계적 관리가 소프트웨어 품질을 향상시키는 데 매우 중요한 역할을 수행하는 것으로 나타났다.

따라서 품질관리 향상을 위해서는 다음 원칙을 중용하는 것이 매우 중요하다. 첫째, 개발전(全) 단계에서의 품질관리에 관심을 기울여야 한다. 둘째, 개발 프로젝트에 투입된 모든 멤버가 품질관리에 참여해야 한다. 셋째, 초기 품질 활동으로 결함 제거 비용을 최소화할 수 있다. 넷째, 초기 품질 계획 및 활동을 통해 재작업을 최소화할 수 있다.

04

보안과 품질의 차이점

소프트웨어를 구현하는데 있어 보안과 품질은 매우 중요한 요소다. 그러나 어떤 관점으로 정보시스템을 바라보느냐

에 따라 보안과 품질은 매우 큰 차이를 보인다.

가. 정보시스템의 관리적 관점

정보시스템관리의 정책적·전략적 개념에서 바라보면 소프트웨어 품질과 보안은 완전히 분리되어 있다. <그림 4>와 같이 정보관리(information management) 측면에서 서로 공유되거나 겹치지 않는다는 것을 알 수 있다.

또한, 국제표준(ISO)에서 정의된 내용을 살펴보면 품질은 소프트웨어 및 그 하위 시스템에서 발생할 수 있는 모든 오류와 결함을 포함하여 개발 단계의 잠재적 오류 등 매우 넓은 커버리지(coverage)를 갖는 반면, 보안은 외부 또는 해커의 공격으로부터 악용 가능한 소프트웨어의 실수 또는 구성의 문제로 제한하여 정의하고 있다. 아래 표는 보안과 품질을 정의한 것을 나타낸다.

품질과 보안을 완전히 분리하여 운영하는 경우는 품질과 보안을 관리하기 위한 전사조직이 별도로 존재한다. 이 경우 개발조직 입장에서는 품질관리와 보안관리에 대한 조치를 수행해야 하는 이중적 부담을 갖는다.

예를 들어 품질관리의 테스트 단계에서 결함을 조치하였으나 이후 보안관리 절차에 따라 또다시 보안결함을 조치하여야 하며, 이러한 경우 품질관리 이전 단계의 수정이 필요할 수 있거나, 보안결함이 조치되지 않고 무시될 수 있다.

나. 보안은 품질관리의 일부로 보는 시각(devOps)

품질관리에 있어서 일부 보안요소가 포함되어야 한다는 시각이다. 아래 그림에서 보는바와 같이 7가지 품질관리 지표 중 1개 지표만이 보안영역으로 관리되며 개발 전(全) 단계와 매핑시켜보면 보안은 테스트 단계에 집중되어 있음을 알 수 있다.

이러한 관점에서는 소프트웨어 품질관리 단계에서 품질과 보안조직과의 협의를 통해 보안영역과 공통된 부분을 미리 정의함으로써 품질 보증을 관리할 수 있다.

이경우 보안은 소프트웨어 테스트 단계에서 소프트웨어 취약점 진단(시큐어코딩 보안)을 주로 수행하고 조치 여부를 확인하는 역할을 수행하므로 전체적인 보안관리에는 한계가 발생한다는 맹점이 존재한다.

다. 全 소프트웨어 품질단계에 보안이 적용되어야 한다는 시각(DevSecOPs)

소프트웨어 개발 전 과정에 모든 사람이 보안에 책임을 지는 것을 목표로 하는 것으로 개발(development), 운용(operation), 보안(security)의 직무를 통합하여 관리하는 것을 의미한다(2012년 가트너에서 모델을 발표).

DevSecOps방법론과 매우 유사한 것이 마이크로소프트사에서 개발한 Secure-SDLC(Software Development Life Cycle)로 마이크로소프트 운영체제(OS)인 Window Vista부터 적용되어 매우 큰 효과를 본 것으로 알려져 있다.

그러나, 이 방법론을 적용하려면 보안전문인력, 방법론 및 절차가 전 개발주기에 투입되어 관리되어야 하기 때문에 별도의 품질관리 조직과 함께 개발/운영조직에도 전담 보안인력이 존재하여야 하는 이슈가 발생한다.

05

재정정보시스템의 소프트웨어 품질관리를 위한 방향성

현재는 대형 IT기업을 중심으로 소프트웨어 품질관리에 대한 중요성을 인식하게 되면서 전담조직과 예산, 방법 등에 대한 관심이 높아지고 있다.

그러나 여전히 많은 기관이나 기업에서는 소프트웨어 품질관리를 수행하지 않고 있거나 개발 부서 자체적인 절차에 의해 수행, 테스트되고 있어 전사 관점에서의 검증 프로세스가 없다.

보안관리의 기술적 측면으로 품질관리를 수행할 경우 앞에서 설명한 바와 같이 보안취약점 진단툴에 의존하여 점검하고 조치하는 등 전체적인 품질관리 차원보다는 지엽적 보안관리에 가깝다고 할 수 있다.

한국재정정보원은 정보시스템의 운영뿐만 아니라 개발까지 직접 수행하고 관리하는 조직으로 소프트웨어 품질관리가 어느 기관보다 매우 중요하다고 할 수 있다. 따라서 개발 전 과정에 보안이 적용되는 DevSecOps 기반의 방법론이나 마이크로소프트사의 Secure-SDLC방법론을 적용하는 것이 바람직하다.

또한 개발과정별로 통일된 품질관리가 가능하도록 전담조직의 신설과 각 운용/개발조직에 품질관리 직무가 부여된 전담인력이 필요하며 개발주기(lifecycle)에 따라 적절히 감소·보고되어야 한다.

728x90