방법론(프로세스)은 소프트웨어 개발 과정에서 누가 언제, 어떻게, 무엇을 수행해야 하는가를 기술한다. Rational Unified Process는 다음과 같은 4가지 주요 구성요소로 표현될 수 있다.
- 작업자(Workers) : '누가(who)'에 해당
- 액티비티(Activities) : '어떻게(how)'에 해당
- 산출물(Artifacts) : '무엇을(what)'에 해당
- 웍플로우(Workflows) : '언제(when)'에 해당
작업자(worker)라는 용어는 개인이나 그룹(또는 팀)의 행위(behavior)와 책임(responsibility)을 정의한다. 행위는 작업자가 수행하는 액티비티(activity)로 표현되며 작업자는 상관관계를 가질 수 있는 일련의 액티비티와 연관되어 있다. 액티비티들간에 상관관계를 갖는다는 말은 특정 액티비티들이 한 사람에 의해서 수행될 때 성취도가 높아질 수 있다는 것을 의미한다. 각각의 작업자의 책임은 일반적으로 작업자가 생성하고, 변경하고 통제하는 산출물(artifact)로 표현될 수 있다.
1.1 액티비티, 산출물, 그리고 작업자
작업자(Workers), 액티비티(activities)와 산출물(artifacts)
작업자(Worker)
작업자(worker)는 개인이나 그룹의 행위와 책임을 의미한다. 작업자는 개인이 착용할 수 있는 "모자"와 같은 개념으로 생각할 수 있다. 개인이 상황에 따라 여러 다른 모자를 착용할 수 있는 것처럼 개인(또는 그룹)은 경우에 따라 여러 다른 작업자가 될 수 있다. 이러한 비유는 작업자라는 개념을 이해하는 데 큰 도움이 될 것이다. Rational Unified Process에서는 작업자는 주어진 일을 수행해야 하는 역할(role)을 의미한다. 또한 작업자는 하나 이상의 역할을 수행하는 것 외에도 특정 산출물의 소유자(owner)가 된다. 작업자의 예로는 다음과 같은 것이 있다.
시스템 분석가(System Analyst) : 시스템 분석가의 역할을 하는 사람은 시스템의 범위를 정의하고 시스템의 기능의 초안을 작성한다. 또한 이를 통해 요구사항을 추출하고 유스 케이스를 모델링하는 작업을 주도적으로 수행하며 때로는 조정자의 역할을 한다.
설계자(Designer) : 설계자는 클래스의 책임(responsibilities), 연산(operations), 속성(attributes)과 클래스간의 관계(relationships)를 정의하고 구현 환경에서 어떻게 적용될 것인가를 결정한다.
테스트 설계자(Test Designer) : 테스트 설계자는 테스트의 계획, 설계, 구현 및 평가를 담당한다.
팀원과 작업자
액티비티(Activity)
특정 작업자의 액티비티(activity)는 작업자의 역할에 따라 수행해야 하는 단위 업무를 말한다. 각각의 액티비티는 명확한 목적을 갖는다. 예를 들어 모델이나 클래스 또는 계획과 같은 특정 산출물을 생성하거나 수정하는 것이 일반적으로 액티비티의 목적이 될 수 있다. 모든 액티비티는 알맞은 작업자에게 배정된다.
액티비티는 일반적으로 몇시간에서 몇일정도가 소요되고, 보통 하나의 작업자에 의해 수행되며, 하나 혹은 적은 수의 산출물에 영향을 미친다.
액티비티의 예
- 반복 계획(Plan an iteration) : 프로젝트 관리자라는 작업자에 의해 수행
- 유스 케이스와 액터를 추출(Find use-cases and actors) :시스템 분석가라는 작업자에 의해 수행
- 설계 검토(Review the design) : 설계 검토 담당자라는 작업자에 의해 수행
- 성능 테스트 수행(Execute a performance test) : 성능 테스트 담당자라는 작업자에 의해 수행
산출물(Artifact)
산출물(artifact)은 프로세스에 의해 생성되고 수정되고 사용되는 정보의 단위이다. 산출물은 프로젝트에서 최종 제품을 개발하는 과정에서 생성되고 사용되는 형태를 갖는 산물을 말한다. 산출물은 작업자가 특정 액티비티를 수행할 때 입력으로 사용될 수 있으며 또한 액티비티 수행의 결과로 생성될 수 있다. 객체지향 설계 용어로 말하면, 액티비티는 특정 객체(작업자)에 대한 연산이라고 할 수 있고 산출물은 이러한 액티비티의 파라미터라고 할 수 있다.
산출물은 다음과 같이 다양한 형태일 수 있다.
- 유스 케이스 모델, 디자인 모델과 같은 모델
- 모델의 구성요소, 예를 들면 클래스, 유스 케이스, 서브시스템(subsystem)
- 비즈니스 케이스, 소프트웨어 아키텍쳐 문서와 같은 문서
- 소스 코드
- 실행 파일
1.2 웍플로우(Workflow)
작업자, 액티비티, 산출물의 단순한 나열만으로는 프로세스를 구성할 수 없다. 프로세스를 이루기 위해서는 가치있는 결과를 생성할 수 있게 하는 액티비티의 순서와 작업자간의 상호작용을 기술할 수 있어야 한다. 웍플로우(workflow)는 의미있는 결과를 생성하는 액티비티의 순서(sequence)를 말한다. UML에서 웍플로우는 Sequence다이어그램, Collaboration 다이어그램, 액티비티 다이어그램으로 표현된다.
앞의 그림은 웍플로우의 예이다. 항상 액티비티간의 모든 의존관계를 표현할 수 있는 것은 아니며 또한 모든 의존관계를 표현하는 것이 항상 유용한 것만은 아니라는 점에 주의해라. 때때로 액티비티들은 웍플로우에서 보여지는 것보다 더 밀접하게 관련되어 있을 수도 있다. 특히 두 액티비티가 같은 작업자 또는 같은 사람에 의해 수행될 때 밀접하게 관련될 수 있다.
1.3 핵심 웍플로우(Core workflows)
앞의 그림은 Rational Unified Process의 구조를 나타낸다. 가로축은 시간의 흐름을 의미하고 세로축은 특정 시간대에서 수행해야 할 액티비티를 의미한다. 도표에서 가로축을 통해 소프트웨어 개발주기가 여러 번의 반복으로 이루어져 있는 것을 확인할 수 있고, 세로축에 있는 9개의 웍플로우 가 반복이 진행됨에 따라 각기 얼마만큼의 비중으로 수행되어야 하는가를 확인할 수 있다.
그림에서와 같이 Rational Unified Process에는 9개의 핵심이 되는 웍플로우가 존재하는데 이러한 웍플로우는 작업자와 액티비티를 논리적인 관련성에 따라 분류한 것을 의미한다. 9개의 핵심 웍플로우는 다시 6개의 엔지니어링을 위한 웍플로우와 3개의 지원을 위한 웍플로우로 나눌 수 있다. 엔지니어링을 위한 웍플로우에는 다음과 같은 것이 있다.
- 비즈니스 모델링 웍플로우(Business Modeling workflow)
- 요구사항 웍플로우(Requirements workflow)
- 분석 & 설계 웍플로우(Analysis and design workflow)
- 구현 웍플로우(Implementation workflow)
- 테스트 웍플로우(Test workflow)
- 배포 웍플로우(Deployment workflow)
3개의 지원을 위한 웍플로우는 다음과 같다.
- 프로젝트 관리 웍플로우(Project management workflow)
- 형상 및 변경 관리 웍플로우(Configuration and change management workflow)
- 환경 웍플로우(Environment workflow)
6개의 엔지니어링을 위한 웍플로우의 명칭은 전통적인 waterfall 프로세스의 순차적인 단계를 연상시키지만 반복적인 프로세스(Iterative Process)에서 이러한 웍플로우는 개발주기동안 여러 차례 반복된다는 점에서 상이하다.
Waterfall 프로세스
3개의 지원 웍플로우는 말 그대로 개발 과정 중 6개의 엔지니어링을 위한 웍플로우를 지원하는 역할을 한다. 프로젝트 관리 웍플로우는 개발 프로젝트를 계혹하고 관리하는 액티비티를 관장하고, 환경 웍플로우는 개발 환경을 정의하고 관리하는 액티비티를 관장한다. 형상 및 변경 관리 웍플로우는 다양한 개발 과정의 산출물을 형상관리하는 액티비티와 다양한 변경요청을 관리하는 액티비티를 관장한다.
실제 프로젝트를 위한 웍플로우는 이러한 9개의 핵심 웍플로우를 이용하여 구성되고, 프로젝트를 완성하기 위해 구성한 웍플로우를 여러 차례 반복하게 된다.
다음 장의 그림과 같이 프로젝트 개발 중 여러 번 반복이 수행될 수 있지만 각각의 반복마다 주안점은 조금씩 달라진다. 초기의 반복에서는 분석에 중점을 두며, 다음 번 반복에서는 점차 분석&설계, 구현쪽에 중점을 두게 된다. 그리고 말기의 반복에서는 테스트와 배포에 중점을 두게 된다.
반복적인 프로세스
아래 그림에서 각각의 반복에서 수행되는 액티비티들을 보다 구체적으로 볼 수 있다.
초기 반복에서의 액티비티
중기 반복에서의 액티비티
말기 반복에서의 액티비티
다음 글에서는 이들 9개의 핵심 웍플로우 각각에 대해 자세히 설명한다.
본 글의 모든 저작권은 Rational에 있습니다.