소프트웨어 개발자들에게 소프트웨어 프로세스는 언제나 들을 수 있는 익숙한 용어이다. 소프트웨어 프로세스는 소프트웨어 개발과 관리에 대한 과정을 설명한다. 소프트웨어 프로세스는 소프트웨어 명세, 소프트웨어 개발, 소프트웨어 검증 그리고 소프트웨어 진화의 4개 단계로 구분할 수 있다. 이 프로세스는 소프트웨어가 태어나서 생을 마감할 때까지 즉 개발돼서 폐기될 때까지의 과정을 대표적으로 설명한다. 우리는 이것을 통해서 소프트웨어 개발 과정을 명확하게 알 수 있다.

각각의 단계에 대해서 알아 보면, 소프트웨어 명세는 대부분이 문서화 작업이다. 소프트웨어 개발 초기에 고객과 업무를 분석하고, 분석 내용을 토대로 설계를 실시하는 과정이나 단계를 의미한다. 이 단계는 시간이 많이 소요된다. 때로는 분쟁의 소지를 만들기도 한다. 명세가 제대로 안되어 소프트웨어 개발이 지연되는 상황도 종종 발생한다. 일부 소프트웨어 개발자들은 명세는 소프트웨어의 본질이 아니므로 개발에 치중해야 한다고 주장하기도 한다. 어느 단계를 더 중요시 하느냐에 따라 개발 방법이 바뀌기도 한다.

소프트웨어 개발 중에 프로그램 코딩은 사람의 두뇌와 손으로 하는 작업이므로 오류가 발생할 확률이 높다. 사람의 코딩 오류를 줄이기 위하여 다양한 방법으로 자동화를 추구한다. 프로그램 개발 도구 중에는 개발자의 오타 같은 문제는 자동으로 알려 주는 기능을 갖고 있거나 프로그램 언어의 문법의 경우에는 알아서 오류를 잡아서 고쳐 주기도 한다. 개발자는 프로그램을 개발할 때는 통합개발환경 소프트웨어를 설치하여야 쉽게 코딩을 할 수 있다.

소프트웨어 검증도 자동화를 추구한다. 소프트웨어 검증의 대표적인 방법이 테스트로 반복적인 업무를 특성으로 한다. 테스트는 소프트웨어 개발자가 일일이 시간을 들여서 수작업으로 수행하는 경우가 많이 있다. 테스트했던 프로그램에서 오류가 발생하면 그 프로그램을 수정하고 다시 테스트를 반복하게 된다. 이미 사용하고 있는 프로그램에 새로운 기능을 추가하여 개발을 한다면 이 때도 테스트를 다시 해야 한다. 소프트웨어가 변경되거나 오류가 발생할 때마다 테스트를 다시 수행해야 하는데 상당히 번거로운 일이므로 테스트할 내용을 미리 소프트웨어에 집어 넣어서 자동으로 테스트 하도록 했다. 이 소프트웨어를 테스트 자동화 도구라고 부른다.

소프트웨어 진화는 새로운 기능의 소프트웨어를 배포하여 사용하는 것을 의미한다. 잘 못된 오류를 해결하거나 요구 사항을 추가하는 등으로 소프트웨어 버전을 올리는 과정이다. 소프트웨어는 한 번의 개발로 완벽하게 작동하는 것이 아니다. 항상 소프트웨어 개발자에 의해서 새롭게 변화하고 있다. 소프트웨어는 이미 많이 개발되어 있다. 인터넷에도 널려 있고, 기업의 오래된 서버에도 저장되어 있으며, 백업 테이프에도, 저장장치에도 많이 개발되어 있다. 개발되었던 많은 소프트웨어는 시간이 지남에 따라 사용하지 않게 된다. 소프트웨어 개발 기술이 발전하여 기존 소프트웨어를 대체하거나 새로운 기능을 하는 소프트웨어의 등장으로 자연스럽게 사용하지 않게 된다. 모든 개발자는 자신이 만든 소프트웨어가 영원히 살아 있을 수 없다는 것을 잘 알고 있다. 어느 시점부터 사용하지 않게 된다면 그 소프트웨어는 진화가 멈추는 것이고, 소프트웨어로써 생을 마감하여 폐기 처분되는 것이다.

채성수 chaesungsoo@iabacus.co.kr 소프트웨어개발 전문기업 ㈜애버커스 사업총괄부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 대학에서 컴퓨터 관련 연구를 하였다. ‘속도경쟁사회’, ‘코딩을위한컴퓨팅사고력’, ‘소프트웨어 인사이더’ 등 6권의 책을 저술하였으며 넥스트데일리의 컬럼니스트로 활동하고 있다.

(*이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

관련기사

저작권자 © 넥스트데일리 무단전재 및 재배포 금지