심기보 숭실대학교 정보과학대학원 교수


▲ 심기보 숭실대학교 정보과학대학원 교수





주목을 받고 있는 요구공학

지금까지 5회에 걸쳐 요구정의의 순서, 유저로부터의 히어링 기법 등에 대해 알아보았다. 그러나 지금까지 소개해 온 방법은 대표적인 예에 지나지 않으며 이 이외에도 수많은 노하우나 TIPS, 기법 등이 존재한다. 이를 체계적으로 집대성한 것이 요구공학이다.

요구공학을 공부하는 사람들은 소프트웨어 공학(소프트웨어·엔지니어링)을 잘 알고 있을 것이다. 이는 소프트웨어 개발에 관한 수많은 경험과 지혜를 바탕으로 베스트 프랙티스를 체계적으로 집대성 한 것이다. 요구공학은 이 소프트웨어 공학을 구성하는 중요한 영역의 하나이다. 실제, 소프트웨어 공학으로서 어떤 영역이 있는지를 미 IEEE Computer Society가 정리한 SWEBOK(Guide to the Software Engineering Body of Knowledge)에서도 서장과 제 2장에서 요구공학을 채택하고 있다. 그러나 요구공학은 지금도 계속 발전하고 있으며 PMBOK 등에서처럼 전체가 확실하게 체계화되어 있는 것은 아니다. 수 많은 전문가, 엔지니어들이 매일같이 새로운 생각을 정리하여 보다 더 좋은 프랙티스를 소개하고 있다. 용어의 통일도 아직 불완전하다. 즉, 1개의 표준적인 요구공학이 있는 것은 아니다. 하지만 공학으로서 통합을 보이고 있는 것도 확실하다, 선인들이 정리한 연구나 서적에는 현장에서 즉시 응용할 수 있는 요구정의의 순서나 기법, 노하우나 TIPS(팁스)가 풍부하게 담겨 있다. 여기에서는 주로 미국의 컨설턴트, Kerl E.Wiegers의 저서 소프트웨어 요구에 따라서 요구 공학의 진수를 설명하고자 한다.


요구의 종류 분류

요구공학에서는 유저(실사용자)의 요구를 다루지만 한마디로 요구라고 해도 업무상의 목표에서 유저가 신 시스템에서 하고 싶은 것, 신 시스템에 구현해야 할 기능 등 다양한 레벨이 있다. 요구정의를 어렵게 하고 있는 하나의 이유는 이러한 다양한 레벨의 요구를 명확하게 분리하지 않고 요구정의를 진행시키는 데에 있다. 이 때문에 요구공학에서는 우선 요구의 구조를 명확히 한다. 예를 들면 Wiegers는 요구를 기능적 요구와 비기능적 요구로 크게 분류하고 있다. 그 다음, 기능적 요구를 ①해결해야 할 경영 과제를 나타내는 업무요구, ②신시스템에서 실현되어야 할 유저의 일이나 목표를 나타내는 유저요구, ③시스템 전체의 최상위 레벨의 요구를 나타내는 시스템 요구, ④개발자가 시스템에 만들어야 할 소프트웨어 기능을 나타낸 기능 요구로 분류, 또 하나의 비 기능적 요구를 ①규칙이나 관례 등 신 시스템이 따라야 할 룰을 정리한 업무 룰, ②성능이나 보수성. 신뢰성 등의 품질 속성, ③타 시스템과의 인터페이스를 나타내는 외부 인터페이스, ④특정의 개발 언어 등 설계·구현시의 제한이 되는 제약으로 분류하고 있다[그림1].



▲ [그림 1] Wiegers에 의한 요구의 종류와 관계





이와 같이 요구의 종류를 명확하게 분류함으로써 요구에대한 인식의 엇갈림이나 정의해야 할 일이 겹치거나 누출되는 사태를 막을 수 있다.


<이하 상세 내용은 컴퓨터월드 2월 호 참조>

저작권자 © 아이티데일리 무단전재 및 재배포 금지