소프트웨어를 개발하면서 공통적으로 가장 많이 듣는 얘기는 소프트웨어 품질일 만큼 소프트웨어 개발 회사나 개발자의 가장 큰 고민거리다. 이미 오래 전부터 다양한 방법으로 품질 확보에 노력해왔지만 언제나 똑 같은 고민거리로 다시 나타나는 품질에 대한 문제는 개발의 일부분 정도였던 것을 넘어 개발과 동등하게 고려되는 요소로 인식되고 있다. 이번 회에서는 소프트웨어 개발 품질 이슈를 어떻게 해결해야 하는지 대형 시스템통합 프로젝트에서 오랫동안 품질 관리를 해온 호윤시스템 김기향 팀장에게 얘기를 들어본다.
Q: 안녕하세요. 소프트웨어를 개발하면서 품질은 아주 오래전부터 지금까지도 반드시 해결하고 지켜야하는 숙제인 것 같습니다. 소프트웨어 개발 품질에 대한 정의부터 설명해 주시죠.
소프트웨어는 제조업에서 만드는 제품과는 많이 다릅니다. 제품은 만들어 놓으면 잘 돌아가는지 여러가지 검사를 통해 확인도 하고 육안으로도 찾을 수 있는 부분들이 많습니다. 그런데, 소프트웨어는 만들어 놓고도 이것이 잘 돌아갈 것인지 잘 돌아가고 있는지 육안 확인은 물론이고 도구를 써도 알아내는 것이 쉽지 않죠. 그래서, 소프트웨어를 개발할 때 품질을 어떻게 확보할 것이냐에 대한 고민을 많이 합니다.
소프트웨어의 품질은 이렇게 해야한다고 미리 정해 놓을 수는 없습니다. 만들어야 하는 소프트웨어의 종류에 따라 확인해야 하는 부분들이 모두 다르기 때문이죠. 제품을 만들 때도 제품의 특성이나 사용되는 부품에 따라 점검해봐야 하는 요소가 다른 것처럼 소프트웨어도 마찬가지 입니다.
그렇다면, 언제 소프트웨어의 품질 요소를 결정해야 하는지에 대해 고민하게 되는데요. 그림1은 소프트웨어를 설계할 때 고민해야 하는 요소들을 나타내는 것입니다. 만들고자 하는 소프트웨어를 설계하면서 설계에 따라 확인해야 하는 품질 요소를 결정하는 것이죠.
<그림1> 소프트웨어 설계 시 고려해야 하는 품질 요소
Q: 소프트웨어 품질을 높이려면 이런 부분을 확인해야 한다고 정해져 있는 줄 알았는데 그게 아니었군요. 소프트웨어마다 어떻게 품질을 확인할 것인지를 매번 만들어야 하는 건가요?
말한 것처럼 처음부터 끝까지 다시 만드는 것은 아닙니다. 기본적으로 확인해야 하는 요소들은 있습니다. 다만, 그러한 요소를 기반으로 어떤 항목을, 언제, 어떻게, 누가 할 것인지, 또 어느 정도 결과를 기대해야 하는지, 기대에 못 미쳤을 때 어떻게 대처해야 하는지, 이런 것들을 소프트웨어 설계하면서 함께 만드는 것입니다.
품질 속성을 평가하고 확인할 수 있는 다양한 가이드나 기법들이 알려져 있습니다. 그림2는 모바일 소프트웨어의 품질을 확인할 수 있는 속성에 대해 어떤 기법으로 확인할 수 있는지를 보여주고 있습니다. 물론, 이것은 하나의 예시입니다.