프로세스 개념
프로세스 개념은 소프트웨어 엔지니어링 접근 방법입니다. 영어 사전에서는 프로세스란 “어떤 일을 하기 위한 특별한 방법으로 일반적으로 단계나 작업으로 구성된다” 라고 정의 되어있습니다. 소프트웨어 공학에서는 소프트웨어 프로세스는 소프트웨어를 개발하는 데 필요한 작업을 정의한 것이라고 합니다.
정의된 작업들을 어떤 순서로 어떤 방법으로 하는가를 다루는 것이 방법론입니다. 작업의 순서 규칙을 따라 제시된 방법으로 수행하면 원하는 결과를 얻게 됩니다. 앞서 설명한 바와 같이 원하는 결과는 좋은 품질과 생산성입니다. 이번 글에서는 소프트웨어 프로세스의 개념과 여러 가지 소프트웨어 프로세스 모델, 프로세스의 구현 방법에 대하여 알아봐 갈 예정입니다.
공식적인 가이드라인이나 프로세스 없이 개발하는 형태를 코딩과 수정이라고 합니다. 소프트웨어 엔지니어링 경험이 없는 경우 다음과 같이 즉흥적으로 프로그래밍을 해 보고 사용자가 원하면 수정하는 과정을 따라 소프트웨어를 완성할 겁니다. 즉 사용자가 만족할 때까지 소프트웨어를 계속 고치는 것입니다.
위의 경우의 문제점
- 시스템을 구현하기 전에 요구를 알아본다든지 설계하는 작업의 중요성을 깨닫지 못하게 됩니다. 소프트웨어 시스템은 사용자의 요구를 만족하여야 한다. 그러나 즉흥적인 방법으로 사용자의 높은 요구사항 수준에 도달하려면 계속 고치는 작업이 필요합니다.
- 소프트웨어는 신중하게 잘 설계하지 않으면 그 구조가 나빠집니다. 즉흥적인 방법은 설계를 해도 되고 안 해도 되는 작업이므로 잘 설계되지 않습니다.
- ·계획이 없이 작업의 목표가 없다. 작업의 목표가 없이 일을 한 후에도 잘한 것인지 못한 것인지 판단할 수가 없습니다. 따라서 비용과 일정을 조절할 수가 없습니다.
- ·체계적인 테스트 작업이나 품질 보증 차원의 활동에 대한 필요성의 인식이 없습니다. 따라서 발견되지 않은 결함이 남아 계속 고치게 될 것이며 시스템이 더욱 악화될 것입니다. 그 결과 시스템은 언젠가 붕괴되고 사용할 수 없고 고칠 수 없는 상태가 되게 됩니다. 결국 해결책은 다시 시스템을 재개발하는 것뿐입니다.
위와 같은 문제점은 소프트웨어 개발과 유지보수에 비용이 많이 들게 합니다. 특히 문제가 늦게 발견될수록 고치는 비용은 더 많이 비싸 집니다.
소프트웨어 프로세스 모델은 프로젝트를 소규모 작업으로 구성하는 일반적인 접근 방식입니다. 프로세스 모델은 프로젝트 관리자나 팀 구성원들이 어떤 작업을 해야 하고 어떤 순서를 정하기 위한 전체적인 틀을 제공하는 것이며 작업 단계를 엄격하게 규정하는 것은 아닙니다.
프로세스의 모델은 프로젝트 수행에 필요한 작업과 작업들 사이의 관계 만을 정의한 것입니다. 각 단계 작업에 대한 자세한 입력 자료와 산출물의 표현 뿐만 아니라 각 작업을 어떤 방식으로 하는지를 자세히 제시하는 것이 방법론 입니다. 프로세스 모델은 매우 일반적이어서 각 작업을 어떻게 해야 한다고 정하지는 않는다. 즉 개발 기관에서 선택하여 결정할 수 있는 여지를 남겨두고 있는데 이것이 방법론입니다.
프로세스와 방법론의 비교
프로세스의 특징
- 단계적인 작업의 틀을 정의한 것입니다.
- 무엇을 하는가에 중점을 가지고 합니다.
- 결과물이 표현에 대하여 언급이 없습니다.
- 패러다임에 매우 독립적입니다.
- 각 단계가 다른 방법론으로도 실현이 가능합니다.
프로세의 사례
- 폭포수 프로세스
- 나선형 프로세스
- 프로토타이핑 프로세스
- unified 프로세스
- 애자일 프로세스
방법론의 특징
- 프로세스의 구체적인 구현에 이름입니다.
- 어떻게 하는가에 중점을 가지고 합니다.
- 결과물을 어떻게 표현하는지 표시합니다.
- 패러다임에 종속적입니다.
- 각 단계의 절차, 기술, 가이드라인을 제시합니다.
방법론 사례
- 구조적 분석, 설계 방법론
- 객체지향 방법론
- 컴포넌트
- 애자일 방법론
프로세스와 프로세스 모델
성공적인 프로젝트는 비용, 일정, 품질 이렇게 세 가지 목표에 대한 예상치를 만족하는 프로젝트입니다. 따라서 소프트웨어 프로젝트를 계획하고 실행할 때 비용을 많이 줄이고 일정을 단축시키며 품질을 개선하는 관점으로 의사 결정을 내립니다. 소프트웨어 프로젝트는 수행할 작업을 조직화한 프로세스를 이용하여 비용, 일정, 품질에 대한 목적을 성취하는 것입니다.
프로세스 명세는 프로세스에서 수행하여야 하는 작업과 이들의 수행 순서를 정의한 것입니다. 실행 프로세스는 프로젝트가 실행될 때 존재합니다. 따라서 프로세스 명세는 실행 프로세스와 다르지만 편의 상 두 가지 개념을 모두 프로세스라는 이름으로 부르기도 합니다. 명시된 프로세스를 따르는 프로젝트에서 어려움이 없다고 가정을 하더라도 실제는 그렇게 단순하지 않습니다. 프로젝트의 계획을 따르는 실행 프로세스는 프로세스의 명세와 매우 다를 수 있기 때문입니다. 그 이유는 게으름이나 프로세스의 중요성을 인식하지 못하는 경우까지 다양합니다. 프로젝트가 계획된 프로세스대로 잘 진행되고 있는지 확인하는 것이 프로젝트를 수행하는 조직에서는 매우 중요한 문제입니다.
프로세스 모델은 일반적인 프로세스를 기술한 것으로 프로젝트를 위한 작업의 단계와 순서, 각 단계 작업 수행의 제약사항이나 조건 등을 모아 놓은 것입니다. 프로세스 모델을 적용한다면 값싼 비용, 높은 품질, 일정 단축을 약속합니다. 다시 말해 프로세스는 높은 품질, 낮은 비용, 일정 단축을 달성하는 수단이며 프로세스 모델은 프로젝트를 위한 알맞은 프로세스를 개발하기위한 일반적이 가이드라인입니다.
어떤 프로젝트의 프로세스는 프로세스 모델을 사용할 수 있습니다. 즉 프로젝트의 프로세스는 프로세스 모델과 전반적으로 유사하고 그 프로젝트에 고유한 작업을 추가로 하는 것입니다. 하지만 프로세스 모델을 사용한다는 것은 프로세스 모델에 있는 작업들을 프로젝트에서 해야 할 작업으로 단순히 변환하는 것은 아닙니다. 프로젝트의 목적을 달성하기 위하여 프로세스 모델과는 조금 다른 프로세스를 요구할 것이기 때문입니다. 따라서 프로젝트의 프로세스는 일반적인 프로세스 모델의 맞춤 버전입니다. 특정한 프로젝트에 프로세스를 어떻게 커스터마이즈 할 수 있을지는 프로젝트의 특성에 좌우됩니다.
결국 프로젝트의 프로세스는 프로젝트의 필요에 알맞게 프로세스 모델을 커스터마이즈 하여 얻을 수 있다는 것을 이해해야 합니다. 표준 프로세스를 사용하는 조직에서는 커스텀화가 가장 중요한 이슈입니다.
프로젝트에서 프로세스를 수행할 때 소프트웨어 결과물이 생성되는데 그 중의 하나가 최종 소프트웨어입니다. 즉 프로젝트는 작업 단계를 정의하고 각 단계를 따라 실행하면 프로덕트가 생성되는 것입니다. 프로세스는 어떤 종류의 작업이 어떤 순서로 실행되어야 한다는 것을 정의한 것이며 그 방법은 설명하지 않을 것입니다.
참고자료 출처 : 새로쓴 소프트웨어 공학 (저자 : 최은만)